C++에 들어왔다면 바로 이 객체라는 것을 이해할 필요가 있습니다.

OOP(Object Oriented Programming) 라고 불리는 이 내용은 물론 단순하게
C++이라고 이야기할 수도 있지만, 더 광범위한 부분입니다.
OOP는 객체라는 개념으로 시작한 일종의 명세서 같은 것입니다.
이 명세서를 기반으로 C를 확장한것이 바로 C++입니다.
흔히 JAVA를 이야기하는데, 오히려 OOP에 가까운 것이 바로 JAVA입니다.
더 가까운것은 smalltalk 이구요.

자 그렇다고 OOP를 하기 위해서라면 위의 언어들을 통달해야 하냐?
그것은 아닙니다. 모로가도 서울로 가면 된다는 말이 있듯이
어떤 말로 하든 원하는 기능을 구현할 수 있다면 아무런 문제가 없습니다.

단지 여기서는 수많은 OOP 언어중 C++을 택한 것 뿐입니다.
자 이정도로 거두를 하고.. 객체에 대해서 이야기하죠.

객체란 데이터(Data)와 함께 실행할 수 있는 메소드(Method)가 있는 것입니다.
이것이 가장 기본적인 유형이자 형태 인데, 저리 말을 해놓고 보면 쉬이 이해가 안될 수도 단빡에 이해할 수도 있습니다.

자, 이 것은 Microsoft에서 객체를 설명하기 위한 예제였습니다.
풍선이 있습니다.

풍선을 가만히 바라 보면 여러가지를 판단해 낼 수 있습니다.
먼저 다양한 유형, 또는 모양의  풍선이 있습니다.
크기, 색, 바람넣은 양에 따라 그 풍선을 정의할 수 있습니다.
또 풍선을 가지고 할 수 있는 일들이 있습니다.
먼저 풍선에 바람넣기 빼기, 던지기, 터트리기, 띄우기 등입니다.

자, 위의 이야기를 근거로 무엇을 단빡에 알아낼 수 있을까요? 객체지향에 대해서 조금이라도 이해하고 계신분은
바로 나올 것입니다.
먼저 이야기한 다양한 유형/모양이 바로 DATA 입니다.
그리고 가지고 할 수 있는 일이 바로 Method 입니다.

이런 객체를 정의할 때 아래와 같이 정의하는 것이죠.

* 풍선
- Data
  색
  크기
  바람 넣은 양

- Method
  바람 넣기
  바람 빼기
  띄우기
  던지기

하지만, 이것은 우리가 개념적으로 생각하는 내용입니다. 풍선이라는 것을 정의했지만
실제 풍선이 아닙니다. 헷갈리죠?
존재하는 풍선과 개념적인 풍선과의 차이를 이해할 수 있다면 쉬이 아아.. 하겠지만, 그렇지 않다면
쉬이 이해할 수 없는 것입니다.

다른 예제로 들죠.
건물이 있습니다. 건물을 지으려면 수많은 공정이 있겠지만, 단순하게 생각하면 두개로 나눌 수 있습니다.
설계하는 작업 / 건물 짓는 작업.
설계에서는 높이도 있고 층도 있고 다양한 내용이 들어 갈 수 있습니다.
이렇게 하는 일들이 있겠구나 하면서 이런 저런 기능도 넣게 됩니다.
건물을 짓는 일은 바로 그 설계를 보고 실제 콘크리트를 넣고 실제 층수로 올리고 이런 저런 기능을
위한 작업을 합니다.

자 여기서 설계작업때 도면에 그린 건물에서 실제 실생활에 그 건물을 사용하실 수 있나요?
못하죠? 실제 건물을 지어야 그 안에서 벽지도 바꿔 보고, 외면의 타일도 바꾸고 그 안에서 주거 할 수 있게되죠?

이 개념을 잊지 말아야 합니다.
여기서 객체라는 것을 정의하는 것은 두가지라는 것을 기억하세요. Data 와 Method
그리고 그 객체를 실존시키는 작업이 필요하다는 것도 기억하세요. 이것이 바로 instance 입니다.

정의하는 것과 instancing(instance 시키기/실존 시키기)는 엄연히 차이가 있습니다.

여기서는 네가지를 배우게 됩니다.
객체 = Object = Class
객체 구성요소 : Data , Method
객체의 실존화 : Instance

먼저 이렇게 기억을 해두세요.




728x90

+ Recent posts