객체지향 프로그래밍

  • 실제 세계를 모델링하여 프로그래밍 하는 방법.
  • 코드를 재사용하기 쉽다.
  • 관리가 편하다.
  • 절차지향보다 느림
  • 설계에 시간이 걸린다.

캡슐화

  • 관련된 '데이터'와 '함수'들을 클래스라는 하나의 캡슐속으로 그룹화
  • '번들링' 라고도 한다.

정보은닉

  • 캡슐내의 요소들에 대한 세부 구현사항을 외부에 숨기는 것이다
  • public, protected, private
  • 추상화를 향상시켜준다
  • 모듈의 독립성을 높여준다
  • 확장성을 높여준다

상속

  • virtual
  • 가상함수, 가상함수 테이블 테이블
  • 클래스 상속
  • 순수가상함수

다형성

  • 오버로드
  • 오버라이딩

객체지향 설계 원칙 (SOLID)

  1. SRP(Single Responsibility Principle) : 단일 책임 원칙
    클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다.

  2. OCP(Open-Closed Principle) : 개방-폐쇄 원칙
    확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.

  3. LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
    상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.

  4. ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
    인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.
    자신이 이용하지 않는 메소드에 의존하지 않아야한다는 원칙

  5. 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

+ Recent posts