객체지향 4가지 특징
- 추상화 (Abstraction)
- 다형성 (Polymorphism)
- 캡슐화 (Encapsulation)
- 상속 (Inheritance)
객체지향의 5가지 설계 원칙 (SOLID)
- SRP: Single Responsibility Principle (단일 책임의 원칙)
- OCP: Open/Closed Principle (개방 폐쇄의 원칙)
- 확장에는 열려있고 변경에는 닫혀있다. 기존 코드를 변경하지 않고 기능을 추가할 수 있어야 한다.
- LSP: Liskov's Substitution Principle (리스코프 치환의 원칙)
- 상위 타입의 객체를 하위타입의 객체로 치환해도 기능동작에 문제가 없어야 한다.
- ISP: Interface Segregation Principle (인터페이스 분리의 원칙)
- 많은 기능을 가진 인터페이스를 작은 단위로 분리시킴으로써 클라이언트에게 필요한 인터페이스만 구현하도록 한다.
- DIP : Dependency Inversion Principle (의존성 역전의 원칙)
- 의존관계를 맺을때 변경이 거의 일어나지 않는 곳에 의존하라.
객체지향 패러다임
1. 객체지향
- 적절한 객체에게 적절한 책임을 할당하여 서로 메시지를 주고 받으며 협력하도록 하는 것
- 점점 증가하는 SW 복잡도를 낮추기 위해 객체지향 패러다임 대두
- 클래스가 아닌 객체에 초점을 맞춰야 한다.
- 객체들에게 얼마나 적절한 역할과 책임을 할당하는지 생각해야 한다.
2. 객체지향 설계 및 구현
- 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민
- 객체들 간의 관계를 고민
- 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기
- 협력을 설계
- 객체들을 포괄하는 타입에 적절한 책임을 할당
- 구현하기