상속관계, 의존관계, 연관관계, 실체화 관계
- 의존도, 결합도를 낮춰줄 수 있도록 코드를 작성하자!
- 객체의 자율성과 응집도를 높이자!
객체지향의 5대 원칙
단일책임원칙(SRP)
: 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 한다.
개방폐쇄원칙(OCP)
: 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.
인터페이스 분리원칙(ISP)
: 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다.
의존성 역전 원칙(DIP)
: 상위 모듈이 하위 모듈에 의존해서는 안된다.
- 고수준 모듈 : 어떤 의미 있는 단일 기능을 제공하는 모듈 (interface, 추상 클래스)
-저수준 모듈 : 고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능의 실제 구현 (메인클래스, 객체)
리스코프 치환 원칙(LSP)
: 부모 객체를 호출하는 과정에서 자식 객체가 부모 객체를 완전히 대체할 수 있다.(ex. 도형의 면적(x * y) -원, 사각형)