문제
객체지향 설계 원칙 중 **의존성 역전 원칙(DIP: Dependency Inversion Principle)**과 **리스코프 치환 원칙(LSP: Liskov Substitution Principle)**의 의미를 각각 설명하시오.
정답
DIP는 고수준 모듈이 저수준 모듈에 의존하지 않고 둘 다 추상화에 의존해야 한다는 원칙으로, 구체적 구현이 아닌 인터페이스나 추상 클래스에 의존해야 한다. LSP는 상위 타입의 객체를 하위 타입의 객체로 치환해도 프로그램의 정확성이 깨지지 않아야 한다는 원칙으로, 서브클래스는 기반 클래스의 계약을 위반하지 않아야 한다.
의존성 역전DIP리스코프 치환LSP추상화에 의존치환 가능성계약 준수
해설
DIP는 구체적 구현체 대신 추상화된 인터페이스에 의존하도록 하여 결합도를 낮추고 유연성을 높이는 원칙이다. LSP는 상속 관계에서 부모 클래스의 행위를 자식 클래스가 일관성 있게 유지해야 한다는 원칙으로, 다형성의 올바른 사용을 보장한다. 두 원칙 모두 객체지향 설계의 핵심 품질인 확장성과 유지보수성을 향상시킨다.