17. 객체지향 설계 원칙 중, 서브타입(상속받은 하위 클래스)은 어디에서나 자신의 기반타입(상위클래스)으로 교체할 수 있어야 함을 의미하는 원칙은?
① ISP(Interface Segregation Principle)
② DIP(Dependency Inversion Principle)
❸ LSP(Liskov Substitution Principle)
④ SRP(Single Responsibility Principle)
이 문제는 객체지향 설계 원칙 중 **서브타입(상속받은 하위 클래스)**과 관련된 원칙을 묻는 문제입니다. 이를 이해하기 위해서는 각 객체지향 설계 원칙을 하나씩 살펴보고, 서브타입을 기반으로 교체할 수 있는 원칙이 무엇인지 알아보겠습니다.
문제 분석:
**서브타입(하위 클래스)**은 **상속받은 기반타입(상위 클래스)**로 교체할 수 있어야 한다는 원칙을 묻고 있습니다. 즉, 하위 클래스가 상위 클래스로 대체될 수 있어야 한다는 의미입니다. 이 원칙은 객체지향 설계에서 중요한 개념이며, 상속과 다형성을 잘 활용해야 합니다.
객체지향 설계 원칙에 대해 알아보기
- ① ISP (Interface Segregation Principle):
- ISP는 "인터페이스 분리 원칙"입니다.
- 주요 내용: 클라이언트가 자신이 사용하지 않는 메서드에 의존하지 않도록 해야 한다는 원칙입니다. 즉, 너무 많은 기능을 가진 하나의 큰 인터페이스 대신, 작고 구체적인 인터페이스로 나누어야 한다는 것입니다.
- 서브타입 교체와 관련이 없음.
- ② DIP (Dependency Inversion Principle):
- DIP는 "의존성 역전 원칙"입니다.
- 주요 내용: 고수준 모듈이 저수준 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 한다는 원칙입니다. 즉, 의존성 관계를 구체적인 클래스가 아닌 인터페이스나 추상 클래스에 의존하도록 해야 합니다.
- 서브타입 교체와 관련이 없음.
- ❸ LSP (Liskov Substitution Principle):
- LSP는 "리스코프 치환 원칙"입니다.
- 주요 내용: 자식 클래스는 부모 클래스를 대체할 수 있어야 한다는 원칙입니다. 즉, 하위 클래스는 상위 클래스의 기능을 확장하거나 변경할 수 있지만, 상위 클래스의 객체를 하위 클래스의 객체로 교체할 수 있어야 한다는 것입니다.
- 서브타입 교체의 원칙을 명확하게 설명합니다. 하위 클래스는 언제나 상위 클래스의 역할을 대신할 수 있어야 하므로, 이 원칙에 맞는 원칙입니다.
- ④ SRP (Single Responsibility Principle):
- SRP는 "단일 책임 원칙"입니다.
- 주요 내용: 한 클래스는 하나의 책임만을 가져야 한다는 원칙입니다. 클래스는 하나의 일만 해야 하며, 여러 책임을 가지면 유지보수가 어려워진다는 원칙입니다.
- 서브타입 교체와 관련이 없음.
정답 해설:
- **LSP (Liskov Substitution Principle)**는 "리스코프 치환 원칙"으로, 서브타입은 상위 타입으로 교체 가능해야 한다는 원칙입니다.
- 예를 들어, 동물 클래스를 상위 클래스, 개 클래스를 하위 클래스로 정의한다고 할 때, 개 객체는 동물 객체를 대신해서 사용할 수 있어야 한다는 뜻입니다. 이를 통해 하위 클래스가 상위 클래스를 완전히 대체할 수 있어야 한다는 요구를 충족시킵니다.
예시:
class Animal {
public void makeSound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // Dog 객체는 Animal 객체로 대체 가능
myAnimal.makeSound(); // "Bark"
}
}
위 예시에서 Dog 클래스는 Animal 클래스를 대체할 수 있습니다. 이는 **리스코프 치환 원칙(LSP)**에 부합합니다. 🐶🐱
결론:
**정답은 ❸ LSP (Liskov Substitution Principle)**입니다. 하위 클래스는 상위 클래스를 대체할 수 있어야 하며, 이 원칙을 통해 서브타입 교체가 가능하다는 점을 강조합니다.
정답: ❸ LSP (Liskov Substitution Principle)
반응형
'기출문제 > 정보처리기사' 카테고리의 다른 글
2020년 3회 정보처리기사 기출문제 19번 (0) | 2025.04.08 |
---|---|
2020년 3회 정보처리기사 기출문제 18번 (0) | 2025.04.08 |
2020년 3회 정보처리기사 기출문제 16번 (0) | 2025.04.08 |
2020년 3회 정보처리기사 기출문제 15번 (0) | 2025.04.08 |
2020년 3회 정보처리기사 기출문제 14번 (1) | 2025.04.08 |