일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- docker
- 주니어개발자
- 성수직장인
- 성수핫플
- 디자인패턴
- Java
- 코딩
- 성수맛집
- IntelliJ
- JavaScript
- 객체지향
- Linux
- 상속
- 깨끗한코드
- DesignPattern
- 성수
- 헤드퍼스트디자인패턴
- 책너두
- 독서일지
- 성수볼거리
- 오브젝트
- 직장인
- 객체지향프로그래밍
- JAVA개발자
- 클린코드
- 개발자
- 헤드퍼스트
- 직장인점심
- 독서
- 책읽기
- Today
- Total
닭발개발
[오브젝트] 46일차. 574-587pg | 사용자 정의 타입, 골격 구현 추상 클래스 본문
[오브젝트] 46일차. 574-587pg | 사용자 정의 타입, 골격 구현 추상 클래스
D269 2023. 8. 25. 14:30
46일차.
오브젝트: 코드로 이해하는 객체지향 설계[8주차_목요일]
574-587pg
#요약
**APPENDIX B. 타입계층의 구현**
- 타입 계층을 구현할 수 있는 다양한 방법들
1) 클래스를 이용한 타입 계층 구현
- 객체지향 언어에서 클래스를 사용자 정의 타입이라고 부르는 이유는 타입은 객체의 퍼블릭 인터페이스를 가리키기 때문에 결과적으로 클래스는 객체의 타입과 구현을 동시에 정의하는 것과 같기 때문이다.
- 상속을 이용하면 자식 클래스가 부모 클래스의 구현뿐만 아니라 퍼블릭 인터페이스도 물려받을 수 있기 때문에 타입 계층을 쉽게 구현할 수 있는데, 구체 클래스를 상속받으면 안되고 가급적 추상 클래스를 상속받거나 인터페이스를 구현해야 한다.
2) 인터페이스를 이용한 타입 계층 구현
- 상속으로 인한 결합도 문제를 피하고 다중 상속이라는 구현 제약도 해결할 수 있는 방법은 클래스가 아닌 인터페이스를 사용하는 것이다.
- 인터페이스와 클래스를 함께 조합하면 다중 상속의 딜레마에 빠지지 않을 수 있고 단일 상속 계층으로 인한 결합도 문제도 피할 수 있다.
- 클래스가 아니라 타입에 집중해야 하며, 중요한 건 객체가 외부에 제공하는 행동, 즉 타입을 중심으로 객체들의 계층을 설계하는 것이다.
3) 추상 클래스를 이용한 타입 계층 구현
- 추상 클래스를 이용하면 클래스 상속을 이용해서 구현을 공유하면서도 결합도로 인한 부작용을 피할 수 있다.
- 구체 클래스로 타입을 정의해서 상속받는 방법과 추상 클래스로 타입을 정의해서 상속받는 방법의 차이점
a. 의존하는 대상의 추상화 정도가 다르다.
b. 상속을 사용하는 의도가 다르다.
4) 추상 클래스와 인터페이스 결합하기
- 골격 구현 추상 클래스 : 인터페이스를 이용해 타입을 정의하고 특정 상속 계층에 국한된 코드를 공유할 필요가 있을 경우 추상 클래스를 이용해서 코드 중복을 방지하는 방식
- 인터페이스와 추상클래스를 결합했을 때의 장점
a. 다양한 구현 방법이 필요하면 새로운 추상 클래스를 추가해서 쉽게 해결할 수 있다.
b. 이미 부모 클래스가 존재하는 클래스라고 하더라도 인터페이스를 추가함으로써 새로운 타입으로 쉽게 확장할 수 있다.
'책책책 책을 읽읍시다‼ ver.개발 > [ 오브젝트: 코드로 이해하는 객체지향 설계 ]' 카테고리의 다른 글
[오브젝트] 마지막 48일차. 604-615pg | 도메인 모델, 분석모델, 설계모델, 구현모델 (0) | 2023.08.27 |
---|---|
[오브젝트] 47일차. 588-603pg | 덕 타이핑, 믹스인, 동적모델, 정적모델 (0) | 2023.08.25 |
[오브젝트] 45일차. 558-573pg | 가변성 규칙, 공변성, 반공변성, 무공변성 (0) | 2023.08.23 |
[오브젝트] 44일차. 547-557pg | 리스코프 치환원칙-계약규칙 (0) | 2023.08.23 |
[오브젝트] 43일차. 538-546pg | 계약에 의한 설계, 사전조건, 사후조건, 불변식 (0) | 2023.08.21 |