[정보처리기사 기출문제 해설] 17번 – 하위 클래스는 상위 클래스를 대체할 수 있어야 한다는 객체지향 설계 원칙은?
📌 출처: 2020년 정보처리기사 필기 3회차
📖 과목: 소프트웨어 설계
17. 객체지향 설계 원칙 중 서브타입(상속받은 하위 클래스)은 어디에서나 자신의 기반타입(상위클래스)으로 교체할 수 있어야 함을 의미하는 원칙은?
① ISP (Interface Segregation Principle)
② DIP (Dependency Inversion Principle)
③ LSP (Liskov Substitution Principle)
④ SRP (Single Responsibility Principle)
✅ 정답: ③ LSP (Liskov Substitution Principle)
💡 객체지향 설계 5대 원칙 개념 설명 (SOLID 원칙)
SOLID 원칙은 객체지향 설계에서 유지보수성과 확장성을 높이기 위한 5가지 핵심 설계 원칙입니다.
그중 하나인 **LSP (리스코프 치환 원칙)**은 상속을 사용할 때 가장 기본이 되는 개념으로,
하위 클래스는 상위 클래스의 행위를 완전히 대체할 수 있어야 한다는 원칙입니다.
SOLID는 다음과 같은 다섯 가지 원칙으로 구성됩니다:
- S – SRP (단일 책임 원칙): 클래스는 하나의 책임만 가져야 함
- O – OCP (개방-폐쇄 원칙): 확장에는 열려 있고 변경에는 닫혀 있어야 함
- L – LSP (리스코프 치환 원칙): 하위 클래스는 상위 클래스를 대체할 수 있어야 함
- I – ISP (인터페이스 분리 원칙): 사용하지 않는 메서드에 의존하지 않아야 함
- D – DIP (의존 역전 원칙): 고수준 모듈은 저수준 모듈에 의존하면 안 되며, 추상화에 의존해야 함
🔍 정답 해설
문제는 객체지향 설계 원칙 중 하위 클래스가 상위 클래스를 문제 없이 대체할 수 있어야 한다는 원칙을 묻고 있습니다.
이는 LSP, Liskov Substitution Principle의 핵심 개념입니다.
리스코프 치환 원칙이 지켜지면,
기존 코드를 변경하지 않고도 하위 클래스를 자유롭게 교체할 수 있으며,
시스템의 유연성과 확장성이 높아집니다.
예: Bird 클래스가 있고, 이를 상속받은 Penguin 클래스가 있을 때,
Penguin이 Bird가 사용되는 모든 곳에서 문제 없이 대체될 수 있어야 합니다.
하지만 Bird.fly()를 전제하면 펭귄은 날 수 없기 때문에 LSP를 위반하게 됩니다.
❌ 보기별 오답 해설
① ISP (Interface Segregation Principle)
→ 인터페이스는 클라이언트가 사용하지 않는 기능에 의존하지 않도록 작게 분리되어야 한다는 원칙
② DIP (Dependency Inversion Principle)
→ 고수준 모듈이 저수준 모듈에 의존하지 않도록 하며, 둘 다 추상화에 의존해야 함
④ SRP (Single Responsibility Principle)
→ 클래스는 하나의 책임만 가져야 하며, 변경 이유는 하나뿐이어야 함
🎯 핵심 요약
- LSP는 상속의 본질적인 원칙을 지키기 위한 설계 기준입니다.
- 이를 위반하면 다형성과 상속의 장점을 살리지 못하고, 코드 오류가 발생할 수 있습니다.
- SOLID 원칙은 객체지향 설계의 기반이 되는 다섯 가지 규칙으로, 그 중 LSP는 상속 구조의 안정성을 보장하는 핵심 원칙입니다.
'기출문제풀이 > 정보처리기사 2020년 3회' 카테고리의 다른 글
19. 다음 중 CASE(Computer-Aided Software Engineering) 도구에 대한 설명으로 거리가 먼 것은? (1) | 2025.06.03 |
---|---|
18. 자료흐름도(Data Flow Diagram)의 구성 요소로 옳은 것은? (1) | 2025.06.02 |
16. 자료 사전에서 자료의 반복을 의미하는 것은? (0) | 2025.06.02 |
15. 객체지향 소프트웨어 설계 시 디자인 패턴을 구성하는 요소로서 가장 거리가 먼 것은? (0) | 2025.06.02 |
14. 아래의 UML 모델에서 '차' 클래스와 각 클래스의 관계로 옳은 것은? (0) | 2025.06.02 |