본문 바로가기
기출문제풀이/정보처리기사 2020년 3회

17. 객체지향 설계 원칙 중 서브타입(상속받은 하위 클래스)은 어디에서나 자신의 기반타입(상위클래스)으로 교체할 수 있어야 함을 의미하는 원칙은?

by 게토레이쉐이크 2025. 6. 2.

[정보처리기사 기출문제 해설] 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는 상속 구조의 안정성을 보장하는 핵심 원칙입니다.