본문 바로가기

Study/C++

[C++] OOP; Object-Oriented Programming

OOP; Object-Oriented Programming

  • 설계 원칙 (SOLID)
    • SRP; Single Responsibility Principle; 단일 책임의 원칙
      • 모듈이 변경되는 이유는 한가지여야 하며, 오직 하나의 액터에 대해서만 책임을 져야한다.
    • OCP; Open-Closed Principle; 개방 폐쇄 원칙
      • 확장에 대해 열려있고 수정에 대해서는 닫혀있어야 한다.
        • 새로운 동작 추가가 용이하고, 동작 추가 시 기존 코드에 수저을 가할 필요가 없다.
    • LSP; Liskov Substitution Principle; 리스코프 치환 원칙
      • 하위 입은 상위 타입을 대체할 수 있어야 한다.
    • ISP; Interface Segregation Principle; 인터페이스 분리 원칙
      • 클라이언트의 목적과 용도에 적합한 인터페이스만을 제공해야 한다.
    • DIP; Dependency Inversion Principle; 의존 역전 원칙
      • 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안 되며, 저수준 모듈이 고수준 모듈에 의존해야 한다.
  • 구성요소
    • Class; 클래스
      • 공통된 속성과 연산을 갖는 객체의 집합
    • Object (or Instance); 객체(혹은 인스턴스)
      • 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 모듈
    • Method; 메소드
      • 데이터를 이용해 객체가 작동하는 기능
    • (+α) Object VS Instance
      • Object는 SW 세계에서 구현할 대상, 이를 구현할 설계도가 Class
      • 이 설계도에 따라 SW 세계에 구현된 실체가 Instance
  • 객체지향의 주요 개념
    • Encapsulation; 캡슐화
      • 데이터와 데이터를 처리하는 함수를 하나로 묶은 것
    • Inheritance; 상속성
      • 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 계승하는 것
    • Polymorphism; 다형성
      • 하나의 메세지에 대해, 각 객체가 갖고 있는 고유한 방법대로 응답하는 것
    • Information Hiding; 정보은닉
      • 다른 객체에 자신의 정보를 숨기는 것
    • Abstraction; 추상화
      • 불필요한 부분을 생략하는 것
  • 클래스 기반 객체생성 방법
    • 일반적인 변수의 선언 방식
      • ClassName objName;
    • 동적 할당방식 (힙 할당방식) 
      • ClassName * ptrObj = new ClassName;

'Study > C++' 카테고리의 다른 글

[C++] Constructor & Destructor  (0) 2023.10.06
[C++] Information Hiding  (0) 2023.10.06
[C++] Structure  (0) 2023.10.06
[C++] Class & Object  (0) 2023.10.06
[C++] Call by value / Call by reference  (0) 2023.10.06