wonslee / object-study

📔오브젝트 예제 코드를 따라 공부, 토론하는 스터디 그룹
0 stars 1 forks source link

서브타입에 더 강한 사전 조건을 정의하거나 더 약한 사후 조건을 정의하는 경우는 LSP를 위반한다고 볼 수 있을까? #59

Open kmw2378 opened 7 months ago

kmw2378 commented 7 months ago

13장 마지막 부분에 서브타입과 계약과 관련된 내용이 나오는데, 제 생각을 요약하자면 다음과 같습니다.

서브타입에 더 강한 사전 조건을 정의할 수 없다.

  • (더 강한 사전 조건) ⊂ (사전 조건) ⊂ (더 약한 사전 조건) 이므로 사전 조건이 더 강해지면 파라미터 문맥이 제한되므로 사용이 이전과 달라진다 생각합니다.

서브타입에 더 약한 사후 조건을 정의할 수 없다.

  • (더 강한 사후 조건) ⊂ (사후 조건) ⊂ (더 약한 사후 조건) 이므로 사후 조건이 더 약해지면 클라이언트 입장에서 예상치 못한 응답값이 나온다 생각합니다.

궁극적으로 이 둘 중 하나라도 어긴다면 클라이언트 입장에서 서브타입의 사용이 슈퍼타입의 사용과 달라지므로 LSP를 위반한다고 생각합니다! 다른 분들은 어떻게 생각하실까요?