2. C++ 객체란?

2018. 11. 14. 22:39 from CS/C++

1. 객체란?


세상 모든것은 객체이다.


난 처음에 이 말이 이해가 가지 않았다.


그래서 C++은 객체지향이라는건 알겠는데... 그게 무슨말이야??


객체 = 물체


나의 휴대폰? 객체이다.

나의 노트북? 객체이다.

책상? 의자? 사과? 사람? 동물? 모두가 객체이다.


그래서??


스마트폰을 예로 들자.


나와 스마트폰은 별개이다. 

나는 나고 스마트폰은 스마트폰이다.

붙어있지도, 연결되어있지도 않다.


하지만?


나는 스마트폰의 스위치, 터치센서 등으로 스마트폰을 사용할 수 있다.

이때 스위치, 터치센서가 나와 스마트폰을 연결해 주는 인터페이스(interface) 이다.


다시말해


나와 스마트폰이 독립적이면서 인터페이스가 있으면 서로 연결할 수 있듯이


함수와 함수간에 독립적이면서 인터페이스만 있다면 서로 연결가능 하도록 하는 것이다.



C언어같은 경우 객체지향이 아닌 절차지향인데, 객체지향이 아니라면?


내몸과 스마트폰이 붙어있는것과 같다.

내 몸과 스마트폰이 붙어있다면 살아가는데 너무 불편할 것이다.


함수로 보자면 코드가 길어질수록 점점더 복잡해지고, 성능도 떨어질 것이다.



이것이 바로 C++에서 가장 중요한 3요소 중 하나인 캡슐화(Encapsulation)이다.


(C++의 3요소: 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism)이 있다.)




C++에서 객체는 멤버 변수와 멤버 함수로 구성된다.


멤버 변수들은 객체의 상태(state)를 나타내고, 


멤버 함수들은 행동(behavior)을 구현한 코드들이다.


TV로 예를 들자면

멤버변수(상태) : 켜짐, 7번 채널, 음량 20

멤버 함수(행동) : 켜기/끄기, 채널 증가/감소, 음량 증가/감소

가 될 수 있다.










Posted by Jyoel :