1. 객체란?
세상 모든것은 객체이다.
난 처음에 이 말이 이해가 가지 않았다.
그래서 C++은 객체지향이라는건 알겠는데... 그게 무슨말이야??
객체 = 물체
나의 휴대폰? 객체이다.
나의 노트북? 객체이다.
책상? 의자? 사과? 사람? 동물? 모두가 객체이다.
그래서??
스마트폰을 예로 들자.
나와 스마트폰은 별개이다.
나는 나고 스마트폰은 스마트폰이다.
붙어있지도, 연결되어있지도 않다.
하지만?
나는 스마트폰의 스위치, 터치센서 등으로 스마트폰을 사용할 수 있다.
이때 스위치, 터치센서가 나와 스마트폰을 연결해 주는 인터페이스(interface) 이다.
다시말해
나와 스마트폰이 독립적이면서 인터페이스가 있으면 서로 연결할 수 있듯이
함수와 함수간에 독립적이면서 인터페이스만 있다면 서로 연결가능 하도록 하는 것이다.
C언어같은 경우 객체지향이 아닌 절차지향인데, 객체지향이 아니라면?
내몸과 스마트폰이 붙어있는것과 같다.
내 몸과 스마트폰이 붙어있다면 살아가는데 너무 불편할 것이다.
함수로 보자면 코드가 길어질수록 점점더 복잡해지고, 성능도 떨어질 것이다.
이것이 바로 C++에서 가장 중요한 3요소 중 하나인 캡슐화(Encapsulation)이다.
(C++의 3요소: 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism)이 있다.)
C++에서 객체는 멤버 변수와 멤버 함수로 구성된다.
멤버 변수들은 객체의 상태(state)를 나타내고,
멤버 함수들은 행동(behavior)을 구현한 코드들이다.
TV로 예를 들자면
멤버변수(상태) : 켜짐, 7번 채널, 음량 20
멤버 함수(행동) : 켜기/끄기, 채널 증가/감소, 음량 증가/감소
가 될 수 있다.
'CS > C++' 카테고리의 다른 글
6. C++ 객체와 객체 배열의 동적 생성 및 반환, this포인터, string 클래스를 이용한 문자열 사용 (0) | 2019.02.11 |
---|---|
5. C++ 객체 포인터, 객체 배열, 동적메모리 할당 및 반환 (0) | 2019.02.11 |
4. C++ 접근지정, C++ 인라인 함수, C++ 구조체, C++바람직한 코딩 (0) | 2018.11.19 |
3. C++ 클래스(Class), 생성자(Constructor), 소멸자(Destructor) (0) | 2018.11.14 |
1. C++ 기본 (0) | 2018.11.14 |