문제
객체지향 설계 원칙 중 **의존성 역전 원칙(DIP: Dependency Inversion Principle)**과 **인터페이스 분리 원칙(ISP: Interface Segregation Principle)**의 의미를 각각 설명하시오.
정답
DIP는 고수준 모듈이 저수준 모듈에 직접 의존하지 않고, 둘 다 추상화에 의존해야 한다는 원칙으로, 구체적인 구현보다는 인터페이스나 추상 클래스에 의존하여 유연성을 확보한다. ISP는 클라이언트가 자신이 사용하지 않는 메소드에 의존하지 않아야 한다는 원칙으로, 큰 인터페이스를 작고 구체적인 인터페이스들로 분리하여 불필요한 의존성을 제거한다.
의존성 역전DIP고수준 모듈저수준 모듈추상화인터페이스 분리ISP클라이언트불필요한 의존성
해설
SOLID 원칙 중 DIP와 ISP에 대한 설명을 요구하는 문제입니다. DIP는 구체적인 구현에 의존하지 않고 추상화에 의존함으로써 변경에 유연하게 대응할 수 있도록 하며, ISP는 인터페이스를 세분화하여 클라이언트가 필요한 기능만 의존하도록 합니다. 두 원칙 모두 결합도를 낮추고 시스템의 유연성을 높이는 데 기여합니다.