객체지향의 SOLID 설계 원리 중 다음 클래스 다이어그램이 위반한 설… | [7급 국가직 소프트웨어공학] 24년 1회차 기출문제 상세 페이지
1[7급 국가직 소프트웨어공학] 24년 1회차
객체지향의 SOLID 설계 원리 중 다음 클래스 다이어그램이 위반한 설계 원리는?
- Rectangle 클래스의 Area 함수는 (Height * Width)를 return하고, Square 클래스의 Area 함수는 (Side * Side)를 return 한다.
1
개방-폐쇄 원리(open-closed principle)
2
단일 책임의 원리(single responsibility principle)
3
리스코프 치환 원리(Liskov substitution principle)
4
의존 관계 역전의 원리(dependency inversion principle)
해설
이 설계가 위반한 원리는 리스코프 치환 원리이다.
Square는 Rectangle을 상속하지만 Height·Width 대신 Side 하나로 넓이를 계산하는 다른 Area를 가진다. Rectangle을 사용하는 User에게 Square를 넣으면 Height와 Width를 따로 설정해 넓이를 구하는 기대 동작이 성립하지 않으므로, 하위 클래스가 상위 클래스를 대체할 수 없다.
- 개방-폐쇄 원리: 확장에는 열고 수정에는 닫으라는 원리로, 이 다이어그램의 핵심 문제는 상속 관계의 치환 불가이다.
- 단일 책임의 원리: 각 클래스는 넓이 계산이라는 하나의 책임만 지므로 위반으로 보기 어렵다.
- 의존 관계 역전의 원리: 추상화에 의존하라는 원리로, 상속한 하위 타입의 행위 불일치와는 다른 문제이다.
오류나 개정된 내용이 보이면 알려주세요
