OOP 의 핵심적인 개념은 abstraction 이다.
- inheritance 역시 abstraction 관점에서 봐야 됨.
- inheritance 를 기능의 확장으로 볼 것이 아니라 추상의 구체화 도구로 봐야 됨.
SOLID
Single Responsibility Principle (단일책임 원칙)
Open / Closed Principle (개발-폐쇄 원칙)
- 코드는 확장에는 열려있으나 변경에는 닫혀 있어야 한다.
Liskov Substitution Principle (리스코프 치환 원칙)
- 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 instance로 바꿀 수 있어야 한다.
Interface Segregation Principle (인터페이스 분리 원칙)
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나 보다 낫다.
Dependency Inversion Principle (의존관계 역전 원칙)
- 추상화에 의존해야지 구체화에 의존하면 안된다.
reference
https://youtu.be/dhK0ZQes4Do
https://youtu.be/O8WHX8zmECM