달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2007. 2. 27. 13:22

구조적 VS 객체지향적 그거/Tech2007. 2. 27. 13:22

클래스(Class)란, 객체지향 프로그래밍에서, 객체 내부의 데이터 구조(필드, 멤버변수)와 그 조작(메소드, 멤버함수)을 기술한 것을 말한다.

무슨 뜻인지 이해가 가는가? 이해가 간다면, 이미 클래스에 대해 알고 있는 독자임에 틀림없다.

그렇다면, 클래스의 정의부터 짚어보도록 하자.

① 객체지향 프로그래밍을 기본으로 한다.
② 객체 내부의 데이터 구조(필드, 멤버변수)와 그 조작(메소드, 멤버함수)를 기술한 것이다.

객체지향 프로그래밍은 뭐고, 객체는 뭐고, 필드, 메소드 등등은 무엇인지... 처음 듣는 독자에게는 벽으로 느껴질 것이다. 자, 그렇다면 이 벽을 뛰어넘을 약간은 지루할지 모르는 시간을 가져보도록 하자.

구조적 프로그래밍 VS 객체지향 프로그래밍 그리고 객체와 클래스

구조적, 객체지향, 객체 클래스 등의 바로 감각적으로 느껴지지 않는 단어들의 나열이 혼란스럽게 느껴질 수도 있겠다. 하지만, 이것들을 하나하나 풀어 보도록 하자.

프로그래밍에 대한 방식을 나누는 가장 일반적인 방법이 구조적 프로그래밍(Structured Programming)과 객체지향 프로그래밍(Object Oriented Programming)이다.

먼저, 구조적 프로그래밍은 프로그램을 작성할 때, 알고리즘을 세분화해 계층적인 구조가 되도록 설계하는 프로그래밍 방법으로, 프로그램은 세 개의 기본구조(순차, 선택, 반복)만으로 구성된다. 커다란 문제를 해결하기 쉬운 작은 크기로 나누고 각각을 해결해 커다란 문제에 대한 해결책으로 만드는 분할 정보라는 기본적인 원칙을 갖는다.

다시 말하면, 구조적 프로그래밍은 C 또는 파스칼 같은 언어에서 주로 사용된 프로그램 방법으로, 기본적으로 순차적으로 접근된다는 것, 그리고 데이터와 그 데이터를 처리하는 방식이 분리되어 있다는 것에 이해의 중점을 두기 바란다. 이것은 모듈별로 프로그래밍한다는 의미로는 장점일 수 있으나, 새로운 데이터 형태의 도입이나, 기능에 대해 변경사항이 발생할 경우 유지보수와 재사용성 측면에 상당한 어려움을 갖게 된다.

객체지향 프로그래밍은 프로그램을 객체라는 모듈 단위로 작성하는 것을 말한다. 객체란, 하나의 데이터 구조로 처리할 데이터 값과, 그것에 관한 절차를 합한 것이다. 객체지향 프로그래밍은 객체지향 언어가 제공하는 캡슐화, 상속성, 다형성 등의 기능을 활용해 프로그래밍 하는 것을 말한다.

여러 개의 생소한 단어가 한꺼번에 나타나 여러분을 혼란케하더라도, 좀더 인내심을 갖자.

간단히 말하면, 객체지향은 객체를 기본으로 하는 프로그래밍 방식이다. 구조적 프로그래밍이 데이터와, 그 데이터를 처리하는 방식을 분리했다면, 객체지향 프로그래밍에서는 객체라는 개념을 통해, 데이터와, 그 데이터를 처리하는 방식을 통합하였다. 여기서, 일반적으로 객체에서의 데이터를 멤버 변수 또는 데이터 필드, 그리고 그 데이터를 처리하는 방식을 멤버함수 혹은 메소드라고 한다.

클래스는 객체지향 프로그래밍에서 객체 내부의 데이터 구조(멤버변수)와 그 데이터에 대한 기능(멤버함수)을 기술한 것을 말한다.

자, 여기서 독자들은 클래스와 객체에 대한 관계가 의심스러울 것이다. 그러면, 클래스, 객체, 객체지향 프로그래밍에 대한 관계를 예를 들어 살펴보자.

먼저, 우리가 로봇이 나오는 게임을 만든다고 가정해보자. 여기서 우리가 객체로 구성하게될 대상이 로봇이 될 것이다. 앞에서 말했듯이, 객체에는 멤버 변수와, 메소드로 구성되어 있다. 우리의 게임에서 로봇이라는 객체에는 어떤 멤버변수가 있어야 할까? 먼저, 이름이 필요할 것 같다. 그리고 색깔과 에너지, 일반무기, 특수무기 그리고 현재 위치를 나타내는 좌표 같은 멤버변수가 필요할 것 같다. 멤버변수는 이 정도로 하고, 멤버함수는 무엇이 필요할까? 먼저 움직임을 나타내는 함수가 필요할 것 같다. 그리고, 일반무기 발사, 특수무기 발사, 에너지 충전 등의 멤버함수가 필요할 것 같다. 자, 지금 우리가 나열에 대한 것을 정의하고, 세부사항을 구성한 틀을 바로 클래스라고 한다.

그렇다면 객체는 무엇인가? 객체는 실체다. 즉, 클래스가 실체화 된 상태를 나타내는 속성과 행위를 묶은 것을 말한다. 실제로 존재하는 대상으로 클래스는 개체가 어떤 특성과 행위를 하는지에 대한 서술을 담고 있다. 이러한 클래스를 실체화시킨 것이 객체다. 따라서 객체는 클래스와 달리 실제 기억장소에 만들고, 사용되며, 소멸된다. 그리고 객체지향 프로그래밍에서 프로그램은 객체간의 메시지를 교환하는 방식으로 수행된다.


로봇 클래스

로봇 객체

멤버변수

이름

로봇 1호

로봇 2호

로봇 3호

로봇 4호

로봇 5호

로봇 6호

로봇 7호

로봇 8호

색깔

에너지

일반무기

특수무기

현재 위치

멤버함수

앞으로 가기

뒤로 가기

위로 가기

아래로 가기

일반무기 발사

특수무기 발사

에너지 충전

다시 말해서, 로봇 설계도는 클래스가 되는 것이며, 그 설계도에 따라 우리가 로봇 클래스를 메모리에 생성하여 8개의 로봇을 만든 다면, 그것은 객체가 되는 것이다. 즉, 클래스는 객체가 가져야 하는 속성과 행위를 기술한 것을 의미하며, 객체는 메모리에 생성되어 실제 구현된 것을 의미한다.

출처 : naver blog

:
Posted by 뽀기