한 줄 요약
SOLID 원칙 : 객체 지향 프로그래밍을 통해 코드 확장 및 유지보수에 대한 유리함, 높은 생산성을 가질 수 있도록 함.
단일책임원칙(SRP) : 하나의 클래스는 하나의 역할만을 갖도록 해야함. 해당 역할에 대한 내용이 수정될 때 수정될 부분을 최소화해 유지보수성 향상
개방 폐쇄 원칙(OCP) : 기능 추가를 위해 클래스를 추가하기는 용이하면서 기존에 있는 클래스를 수정하는 것은 최소화하는 것. 확장성 향상
리스코프 치환 원칙(LSP) : 자식은 언제나 부모로 치환할 수 있어야함. 확장성과 유지보수성을 동시에 고려한 원칙
인터페이스 분리 원칙(ISP) : 클래스와 달리 인터페이스는 다중 상속이 가능하므로 각각의 목적에 맞게 인터페이스를 분리하는 것이 중요. 유지보수성 향상
의존 역전 원칙(DIP) : 자주 변경되지 않는 인터페이스나 추상 클래스, 상위 클래스 등의 요소를 참조하는 것이 안정적이고 수정할 부분이 적어지도록 작업할 수 있음. 유지보수 및 확장성 동시에 향상
abstract제한자를 통해 확장 가능하도록 부모 클래스를 구성하고, 해당 요소를 자식에서 구체화하여 사용하도록 하는 것은 OCP 원칙을 지키는 구조인 것이다.자식을 부모로 치환할 수 있음 = 자식은 부모의 클래스로 사용하여도 기능이 정상 작동해야함