| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 오브젝트
- 헤드퍼스트디자인패턴
- 객체지향
- 성수볼거리
- 성수
- 개발자
- 책너두
- Linux
- 독서일지
- 책읽기
- 디자인패턴
- 클린코드
- 깨끗한코드
- 객체지향프로그래밍
- 성수핫플
- 성수맛집
- 상속
- JavaScript
- 성수직장인
- 직장인
- IntelliJ
- DesignPattern
- 헤드퍼스트
- 독서
- 코딩
- JAVA개발자
- docker
- Java
- 직장인점심
- 주니어개발자
- Today
- Total
런타임노트
[오브젝트] 45일차. 558-573pg | 가변성 규칙, 공변성, 반공변성, 무공변성 본문
[오브젝트] 45일차. 558-573pg | 가변성 규칙, 공변성, 반공변성, 무공변성
D269 2023. 8. 23. 18:51
45일차.
오브젝트: 코드로 이해하는 객체지향 설계[8주차_수요일]
558-573pg
#요약
**APPENDIX. 계약에 의한 설계**
01. 협력과 계약
02. 계약에 의한 설계
03. 계약에 의한 설계와 서브타이핑
1) 계약 규칙
2) 가변성 규칙
- 부모 클래스보다 못한 자식 클래스는 서브타입이 아니다.
- 서브타이핑과 공변성, 반공변성 사이의 관계
- S가 T의 서브타입일 때 공변성, 반공변성, 무공변성
. 공변성 : S와 T사이 서브타입 관계가 그대로 유지됨
. 반공변성 : S와 T사이 서브타입 관계가 역전됨
. 무공변성 : S와 T사이에는 아무런 관계도 없음
- 공변성과 반공변성의 영역으로 들어서려면 타입의 관계가 아니라 메서드의 리턴 타입과 파라미터 타입에 초점을 맞춰야 한다.
- 리턴 타입 공변성 : 부모 클래스에서 구현된 메서드를 자식 클래스에서 오버라이딩할 때 부모 클래스에서 선언한 반환타입의 서브타입으로 지정할 수 있는 특성, 메서드를 구현한 클래스의 타입 계층 방향과 리턴 타입의 타입 계층 방향이 동일한 경우.
- 리턴 타입 공변성은 계약에 의한 설계 관점에서 계약을 위반하지 않는다.
- 공변성과 반공변성의 지원 여부는 언어에 따라 다르다. 자바에서는 파라미터 반공변성을 허용하지 않는다ㅏ.
- 파라미터 타입 반공병성, 부모 클래스에서 구현된 메서드를 자식 클래스에서 오버라이딩할 때 파라미터 타입을 부모 클래스에서 사용한 파라미터의 슈퍼타입으로 지정할 수 있는 특성, 메서드를 정의한 클래스의 타입 계층과 파라미터 타입 계층의 방향이 반대인 경우 서브타입 관계를 만족한다.
- 파라미터 타입 반공변성은 계약에 의한 설계 관점에서 계약을 위반하지 않는다.
- 서브타입은 슈퍼타입에서 정의한 것보다 더 강력한 사전조건을 정의할 수는 없지만 사전조건을 완화할 수는 있다.
- 사실 객체지향 언어에서 파라미터 반공변성을 지원하는 언어는 거의 없다.
3) 함수 타입과 서브타이핑
- 객체의 서브타입이 슈퍼타입을 대체할 수 있는 것처럼 서브타입 메서드가 슈퍼타입 메서드를 대체할 수 있다.
- 파라미터 타입이 반공변성을 가지고, 리턴 타입이 공변성을 가지면 메서드가 오버라이드 가능한데, 오버라이드 가능하다는 것 은 메서드가 대체 가능하며, 따라서 두 메서드 사이에 서브 타이핑 관계가 존재한다는 것이다.
**APPENDIX B. 타입계층의 구현**
- 타입 =/= 클래스, 타입은 개념의 분류를 의미, 클래스는 타입을 구현하는 한 가지 방법일 뿐.
'책책책 책을 읽읍시다‼ ver.개발 > [ 오브젝트: 코드로 이해하는 객체지향 설계 ]' 카테고리의 다른 글
| [오브젝트] 47일차. 588-603pg | 덕 타이핑, 믹스인, 동적모델, 정적모델 (0) | 2023.08.25 |
|---|---|
| [오브젝트] 46일차. 574-587pg | 사용자 정의 타입, 골격 구현 추상 클래스 (0) | 2023.08.25 |
| [오브젝트] 44일차. 547-557pg | 리스코프 치환원칙-계약규칙 (0) | 2023.08.23 |
| [오브젝트] 43일차. 538-546pg | 계약에 의한 설계, 사전조건, 사후조건, 불변식 (0) | 2023.08.21 |
| [오브젝트] 42일차. 528-537pg | 의존성 역전 원리, 제어역전원리(할리우드원리), 계약에 의한 설계 (0) | 2023.08.21 |