클래스는 한 가지 이유로 변경되어야 합니다 각각의 클래스가 프로그램이 제공하는 기능의 단 하나의 부분만 책임 지도록 하세요
클래스는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 합니다. 기존의 코드를 변경하지 않으면서 기능을 추가 할 수 있어야 합니다이 원칙의 목적은 새로운 기능을 구현할 때 기존 코드가 깨지지 않도록 하는 것입니다클래스는 확장할 수 있을때, 자식클래스를 생성할 수
리스코프 치환 원칙 (Liskov Substitution Principle) 자식 클래스는 부모 클래스의 행동과 계속 호환되어아 햡니다 개념 * 서브타입은 언제나 기반타입으로 교체 * 할 수 있어야 한다 즉, 부모 클래스의 인스턴스를 사용하는 위치에 자식 클래스의 인스
클라이언트들은 자신이 사용하지 않는 메서드에 의존하도록 강요되어서는 안된다인터페이스를 잘게 분리함으로써, 클라이언트의 목적과 용도에 적합한 인터페이스만을 제공하는 것이다클래스 상속은 하나의 부모 클래스만 가질 수 있도록 하지만 동시에 구현할 수 있는 인터페이스(프로토
상위 계층 클래스들은 하위 계층 클래스들에 의존해서는 안됩니다객체에서 어떤 Class를 참조해서 사용하는 상황이 발생한다면 그 Class를 직접 참조하는 것이 아닌 그 대상의 상위요소(추상클래스 or 인터페이스)로 참조해야 한다일반적으로 클래스는 다음 두 계층으로 분류