객체지향 프로그래밍
- 실제 세계를 모델링하여 프로그래밍 하는 방법.
- 코드를 재사용하기 쉽다.
- 관리가 편하다.
- 절차지향보다 느림
- 설계에 시간이 걸린다.
캡슐화
- 관련된 '데이터'와 '함수'들을 클래스라는 하나의 캡슐속으로 그룹화
- '번들링' 라고도 한다.
정보은닉
- 캡슐내의 요소들에 대한 세부 구현사항을 외부에 숨기는 것이다
- public, protected, private
- 추상화를 향상시켜준다
- 모듈의 독립성을 높여준다
- 확장성을 높여준다
상속
- virtual
- 가상함수, 가상함수 테이블 테이블
- 클래스 상속
- 순수가상함수
다형성
- 오버로드
- 오버라이딩
객체지향 설계 원칙 (SOLID)
-
SRP(Single Responsibility Principle) : 단일 책임 원칙
클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다. -
OCP(Open-Closed Principle) : 개방-폐쇄 원칙
확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. -
LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. -
ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.
자신이 이용하지 않는 메소드에 의존하지 않아야한다는 원칙 -
DIP(Dependency Inversion Principle) : 의존 역전 원칙
고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다.
의존관계를 맺을 때 변화하기 쉬운 것 또는 보다는 거의 변화가 없는 것에 의존하라는 원칙
C 언어는 원시적인 형태로 볼 수 있다. 포인터와 어드레스를 직접사용하는 단계의 언어 객체지향이라고 하는 개념이 등장하고 나서, C 언어에 그 개념이 구현되도록 발전시킨것이 C++
'프로그래밍 > C++' 카테고리의 다른 글
이동 시멘틱 (0) | 2019.04.29 |
---|---|
함수 포인터 (0) | 2019.04.29 |
스마트포인터 (0) | 2019.04.29 |
템플릿 <template> (0) | 2019.04.29 |
C++ 11 추가된 기능 (0) | 2019.04.29 |