2022. 9. 26. 13:56ㆍC++/개인메모
객체 지향의 5원칙 SOLID
S 단일 책임 원칙(Single responsibility principle)
- 한 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는데 집중되어야 한다.
O 개방 폐쇄 원칙(Open/closed principle)
- 소프트웨어의 모든 구성요소는 확장에는 열려있으나, 변경에는 닫혀있어야 한다.
- 클래스를 설계할 때 변할 부분과 변하지 않을 부분을 구분해야 한다.
L 리스코프 치환 원칙(Liskov substitution principle)
- 클래스는 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 부모 클래스의 포인터에 해당 클래스의 자식 클래스를 할당하더라도 모든 기능이 정상적이어야 한다.
I 인터페이스 분리 원칙(Interface segregation principle)
- 하나의 큰 인터페이스보다 작은 단위로 분리시켜 놓은 인터페이스에서 꼭 필요한 인터페이스만 상속받아야 한다.
- 인터페이스의 단일 책임을 강조.
D 의존관계 역전 원칙(Dependency inversion principle)
- 구체적인 클래스가 아닌 추상화한 클래스에 의존하여야 한다.
객체 지향의 5가지 특성
1. 추상화(abstraction)
- 객체들의 공통적인 특징(기능, 속성)들을 묶어서 표현함.
- class를 정의하는 것 자체가 추상화.
2. 캡슐화(encapsulation)
- 실제로 구현되는 부분을 외부로 드러내지 않게하여 은닉하는 것.
- private, public, protected
3. 상속성(inheritance)
- 하나의 클래스가 가진 특징(데이터, 함수)들을 다른 클래스가 물려받는 것.
- 이미 존재하는 클래스를 기반으로 새로운 클래스를 생성.
- 코드의 재활용.
4. 다형성(polymorphism)
- 어떠한 한 요소(데이터, 함수)에 여러가지 개념이 존재하도록 하는 것.
- 동일한 명령에 대한 해석을 연결된 객체에 의존하도록 함.
- Overriding: 같은 이름과 같은 파라미터를 사용하여 내부 동작 방법을 재정의하여 사용하는 것.
- Overloading: 같은 이름이지만 파라미터를 다르게 하여 같은 이름에 대한 함수를 경우에 따라 다르게 사용하는 것.
5. 동적바인딩(Dynamic Binding)
- 가상 함수: 클래스 내에서 오버라이딩(재정의) 될 수 있는 함수.
- 가상함수를 호출하는 코드를 컴파일할 때, 바인딩을 실행시간에 결정하는 것.
- 자식 클래스의 객체에 대해 부모 클래스의 포인터로 가상 함수가 호출될 때 일어난다(자식 클래스에서 재정의한 함수의 호출을 보장).
'C++ > 개인메모' 카테고리의 다른 글
메모리의 구조 (0) | 2022.12.13 |
---|---|
상속과 포인터 (0) | 2022.10.17 |
포인터 (0) | 2022.09.05 |
const, mutable (0) | 2022.09.01 |
ios::sync_with_stdio(false) (0) | 2022.08.30 |