문제
객체지향 설계 원칙 중 **리스코프 치환 원칙(LSP: Liskov Substitution Principle)**과 **의존성 역전 원칙(DIP: Dependency Inversion Principle)**의 핵심 개념을 각각 설명하시오.
정답
LSP는 상위 타입의 객체를 하위 타입의 객체로 치환해도 프로그램이 정상 동작해야 한다는 원칙이다. DIP는 고수준 모듈이 저수준 모듈에 의존하지 않고, 둘 다 추상화에 의존해야 한다는 원칙이다.
리스코프 치환LSP상위 타입하위 타입치환의존성 역전DIP고수준 모듈저수준 모듈추상화
해설
LSP는 하위 클래스가 상위 클래스의 계약을 지켜야 하며, 상위 타입을 사용하는 곳에 하위 타입을 넣어도 기대한 동작이 유지되어야 한다는 원칙이다. DIP는 구체 구현이 아니라 인터페이스나 추상 클래스 같은 추상화에 의존하도록 하여 결합도를 낮추는 원칙이다.