728x90
객체, 정보은닉, 캡슐화, 상속, 다형성

객체에 대해선 앞에서 미리 말했다. 정보은닉, 캡슐화, 상속, 다형성... 이 개념들을 결국 같은 말을 하고 있다.
프로그램도 클레스를 만드는 사람과 그것을 객체로 사용하는 사람이 나누어져 있다는 개념으로 이해하면 되겠다.
(여담이지만 요즘은 클레스를 만들어서 파는 회사도 많이 있다. 특히 자바같은 경우가 흔히 그렇다. 그래서 개발자들은 그런 것들을 가져와서 잘 붙이기만 하면 레고블록 조립하듯이 프로그래밍을 할 수 있다.)

그렇다면 클레스는 작성하는 사람은 클레스 내부가 어떻게 구현되어 있는지 보여줄 필요가 없다. 어떻게 사용하는지 설명만 해주면 그만이다. (사실 소스 보여주는거 창피할 것 같다.) 이것이 정보은닉의 핵심이다.

캡슐화는 말 그대로 캡슐처럼 만드는거다. 알약에 보면 조그만 알갱이들이 잔뜩 들어있다. 그게 뭔지 몇개가 들어있는지 관심없다. 그냥 "콘텍600주세요."그러고 만다. 클레스의 이름만 가지고 그 클레스를 믿을 수 있도록 이것저것 다 집어넣고 내부는 관심가지지 못하도록 하라는 말이다. 결국 정보은닉과 같은 말이다.

상속..무진장 중요하다. 하지만 개념은 간단하다. A라는 클레스를 B에서 상속한다면 A를 그대로 가져와서 살을 더 붙여서 사용하겠다는 말이다. 다만 프로그래밍할 때 약간의 신기한 문법적 기술들이 들어간다. 정말 개념적으론 이게 전부다. 그대로 가져와서 살을 더 붙인다.

다형성..내가 객체지향 언어를 좋아하는 것은 다형성의 힘이 크다. 객체로 구분한다는 것 다음으로 다형성이 강력한 힘을 가지기 때문에 OOP가 너무 좋다. 다형성이란 overloading, overwriting과 같은 기능을 말하기도 하고 template과 같은 기능도 다형성이라고 볼 수 있겠다.
overloading : 똑같은 이름을 사용하는 method를 가지고 argument(인자)를 다르게 해서 다른 내용으로 사용한다는 개념이다. 하지만 메쏘드의 구현을 다르게한다고 생각하지 말고.. 인자가 값에 맞추어 해당 메쏘드가 알아서 작동한다고 생각하는것이 편하다. 객체가 기능을 수행하는데 argument(인자)를 어떻게 줘도 거기에 맞추서 잘 작동하도록 만들어준다는 뜻이다.
overwriting : 이건 상속과 이어지는 개념이다. 부모가 가지고 있는 것과 이름, argument까지 같은 method를 만들수 있다는 말이다. 이때 객체가 사용하는 method는 당연히 자식class의 method다.

이로써 OOP의 기본 개념들에 대해서는 다 이야기했다. 지금부터는 얼마나 많이 만들어보느냐에 달렸다.
앞으로 예제를 중심으로 하나씩 공부해보자..
728x90

'Programming > C++은객체지향언어다' 카테고리의 다른 글

error C2220: warning treated as error - no object file generated  (0) 2011.07.29
g++ for windows  (0) 2008.11.07
집합(차집합, 교집합, 합집합) - cpp  (0) 2008.04.02
ADT array 구현  (0) 2008.03.04
C++ (객체)  (0) 2008.02.26
C++ (OOP개념)  (0) 2008.02.26
C++ (개요)  (0) 2008.02.26

+ Recent posts