🎮객체지향의 4대 특성
1. 캡슐화(Encapsulation)
특정 객체가 독립적으로 역할을 제대로 수행하기 위해 필요한 데이터와 기능을 하나로 묶은 것
2. 추상화(Abstrction)
객체들의 공통적인 특징(속성, 기능)을 뽑아 이름을 붙이는 것
3. 상속(Inheritance)
상위 개념의 특징을 하위 개념이 물려 받는 것
4. 다형성(Polymorphism)
하나의 개체가 여러 개의 형태로 변화 하는 것
🎮객체지향 설계 5원칙 SOLID
응집도와 결합도
좋은 소프트웨어 설계를 위해서는 결합도(coupling)는 낮추고 응집도(cohesion)는 높여야한다.
-
결합도 : 모듈(클래스)간의 상호 의존 정도를 나타내는 지표로써 결합도가 낮으면 모듈간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리
-
응집도 : 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성으로 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져, 재사용 및 유지보수가 유리
1. SRP(Single Responsibility Principle) 단일 책임 원칙
2. OCP(Open Closed Principle) 개방 폐쇄 원칙
- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.
- 인터페이스를 이용하면 구현체를 변경해도 코드에 변경이 없다.
3. LSP(Liskov Substitution Principle) 리스코프 치환 원칙
- 서브 타입은 언제나 자신의 기반(상위) 타입으로 교체 할 수 있어야 한다.
4. ISP(Interface Segregation Principle) 인터페이스 분리 원칙
- 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다.
5. DIP(Depencency Inversion Principle) 의존 역전 원칙
- 자신보다 변하기 쉬운 것에 의존하지 말아야 한다.