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