What is C++?
: C++ // C = C + 객체지향(Object-Oriented Programming, OOP);
C++는 C 언어를 개발한 AT&T Bell 연구소의 Bjarne Stroustrup에 의해서 개발되었다. C++은 C 언어가 갖는 간결성과 속도를 그대로 지니면서 OOP을 지원하는 언어로 만들어졌다.
그래서 C++
객체 지향 언어의 프로그래밍 방법은 인간의 사고 방법에 바탕을 둔 클래스, 상속, 다형성 등과 같은 요소를 충분히 활용해야 한다.
c -> c++(절차지향과 객체지향의 중간언어) -> MS(API -> MFC -> C#
-> Java(complete OOP)
Java - web
ㄴ mobile(Android)
i - Phone - Object C
What is an Object?C++ == C + 1(OOP)
:인간이 다른 것과 구분해서 인식할 수 있는 '어떤 대상'
:현실 세계의 entity를 컴퓨터 세계에 표현한 것
소프트웨어에서의 객체는 그 내부에 속성(attribute)을 갖고 외부로부터 메세지를 받아 처리한다.
1. 추상화(Abstraction)
'이걸 만드려면 어떻게 만들어야 하지? 어떻게 표현해야 하지?'
의 고민을 구체화시키는 행위를 추상화라고 한다.
한국 사람들은 특히 주입식 교육을 많이 받는다
반면 외국 사람들은 개인적인 성향이 많다 -> 창의적인 사고가 많이 만들어짐
2. 캡슐화(Encapsulation)
C언어 같은 절차지향언어는 데이터가 너무 open되어있다
ex. 반장 1000원을 맡겨놨는데 누군가가 가져가면 출처를 알 수가 없다
캡슐화라는 건 자기가 권한을 설정할 수 있다
그 권한은 개발자가 준다
데이터는 항상 명확하게 루트를 하게끔 하는 게 좋다
3. 상속(Inheritance)
물려받는 것(내 것이 아닌데 물려받는 것)
ㆍ확장성과 재사용성이 좋아야 한다
무조건 물려받는다고 쓰는 게 상속이 아님
4. 다형성(Polymorphism)
여러 가지 형태를 제공함으로써 편의를 제공하는 것
오버로딩, 동적 바인딩, 제네릭 …
<칠판 필기> 요약
1. 추상화 : 추상적 -> 구체화
2. 캡슐화 : Data 보호, 은닉
3. 상속 : 코드의 재활용, 확장성
4. 다형성 : 편의성 제공
이걸 어떻게 C++로 표현할 지가 관건 !
cf. c++은 100% 상속 구조는 아니다!
<DataType>
C++은 완전한 OOP가 아니라서 bool이 0 1 같은 것이 된다