728x90
2023.09.26 TUE
547p ~ 557p
43일차 내용 ⬇️
2023.09.25 - [개발 서적 기록/오브젝트_조영호] - 43일차 - 계약에 의한 설계
43일차 - 계약에 의한 설계
2023.09.25 MON 538p ~ 546p 42일차 내용 ⬇️ 2023.09.25 - [분류 전체보기] - 42일차 - 제어 역전 원리 42일차 - 제어 역전 원리 2023.09.24 SUN 528p ~ 537p 41일차 내용 ⬇️ 2023.09.24 - [개발 서적 기록/오브젝트_조영
magenta-ming.tistory.com
LSP와 계약에 의한 설계
계약에 의한 설계를 LSP와 함께 적용한다면, 서브타입 또한 LSP를 만족시킬 수 있도록, 클라이언트와 슈퍼 타입 간에 체결된 계약을 준수해야한다.
LSP의 두가지 규칙
계약 규칙 Constract Rules
협력에 참여하는 객체에 대한 규칙이다.
슈퍼타입과 서브타입 사이의 사전 조건 / 사후 조건 / 불변식에 대해 정의하는 규칙이다.
구체적으로 아래와 같은 특징이 있다.
- 서브타입에 더 강력한 사전 조건을 정의할 수 없다.
- 서브타입에 더 완화된 사후 조건을 정의할 수 없다.
- 슈퍼타입의 불변식은 서브타입에서도 반드시 유지되어야 한다.
위와 같은 특징이 지켜지지 않는다면 계약이 위반된다.
예를 들어, 서브타입이 슈퍼타입에 정의된 사전조건을 강화하면 기존에 체결된 계약을 위반하게 된다.
강화된 서브타입은 클라이언트 입장에서 수용 불가능하므로, 슈퍼타입을 대체할 수 없게 되어 LSP를 위반한다.
가변성 규칙 Variance Rules
교체 가능한 타입에 대한 규칙이다.
파라미터와 리턴 타입의 변형에 대해 정의하는 규칙이다.
구체적으로는 아래와 같은 특징이 있다.
- 서브타입의 메서드 파라미터는 반공변성을 가져야 한다.
- 서브타입의 리턴 타입은 공변성을 가져야 한다.
- 서브타입은 슈퍼타입이 발생시키는 예외와 다른 타입의 에외를 발생시켜서는 안된다.
728x90
'개발 서적 기록 > 오브젝트_조영호' 카테고리의 다른 글
45일차 - LSP와 계약에 의한 설계 : 가변성 규칙 (0) | 2023.09.26 |
---|---|
43일차 - 계약에 의한 설계 (2) | 2023.09.25 |
42일차 - 제어 역전 원리 (0) | 2023.09.25 |
40, 41 일차 - 일관성을 통한 장점과 디자인 패턴 (0) | 2023.09.24 |
36, 37일차 - 계약에 의한 설계 (0) | 2023.09.18 |