문제
객체지향 설계 원칙 중 **리스코프 치환 원칙(LSP: Liskov Substitution Principle)**과 **의존성 역전 원칙(DIP: Dependency Inversion Principle)**의 의미를 각각 설명하시오.
정답
LSP는 상위 타입의 객체를 하위 타입의 객체로 치환해도 프로그램이 정상적으로 동작해야 한다는 원칙으로, 상속 관계에서 부모 클래스의 기능을 자식 클래스가 올바르게 확장해야 한다. DIP는 고수준 모듈이 저수준 모듈에 의존하면 안 되고, 둘 다 추상화에 의존해야 한다는 원칙으로, 구체적인 것이 아닌 추상적인 것에 의존하도록 설계해야 한다.
리스코프 치환LSP의존성 역전DIP추상화에 의존치환 가능성
해설
LSP는 상속의 올바른 사용을 위한 원칙으로 IS-A 관계의 정확한 구현을 보장한다. DIP는 모듈 간 결합도를 낮추기 위해 구체 클래스가 아닌 인터페이스나 추상 클래스에 의존하도록 하는 원칙이다.