닭발개발

[오브젝트] 46일차. 574-587pg | 사용자 정의 타입, 골격 구현 추상 클래스 본문

책책책 책을 읽읍시다‼ ver.개발/[ 오브젝트: 코드로 이해하는 객체지향 설계 ]

[오브젝트] 46일차. 574-587pg | 사용자 정의 타입, 골격 구현 추상 클래스

D269 2023. 8. 25. 14:30
728x90

 

46일차.


오브젝트: 코드로 이해하는 객체지향 설계[8주차_목요일]
574-587pg

 
 

#요약

 

**APPENDIX B. 타입계층의 구현**

- 타입 계층을 구현할 수 있는 다양한 방법들

 

1) 클래스를 이용한 타입 계층 구현

- 객체지향 언어에서 클래스를 사용자 정의 타입이라고 부르는 이유는 타입은 객체의 퍼블릭 인터페이스를 가리키기 때문에 결과적으로 클래스는 객체의 타입과 구현을 동시에 정의하는 것과 같기 때문이다.

- 상속을 이용하면 자식 클래스가 부모 클래스의 구현뿐만 아니라 퍼블릭 인터페이스도 물려받을 수 있기 때문에 타입 계층을 쉽게 구현할 수 있는데, 구체 클래스를 상속받으면 안되고 가급적 추상 클래스를 상속받거나 인터페이스를 구현해야 한다.

 

2) 인터페이스를 이용한 타입 계층 구현

- 상속으로 인한 결합도 문제를 피하고 다중 상속이라는 구현 제약도 해결할 수 있는 방법은 클래스가 아닌 인터페이스를 사용하는 것이다.

- 인터페이스와 클래스를 함께 조합하면 다중 상속의 딜레마에 빠지지 않을 수 있고 단일 상속 계층으로 인한 결합도 문제도 피할 수 있다.

- 클래스가 아니라 타입에 집중해야 하며, 중요한 건 객체가 외부에 제공하는 행동, 즉 타입을 중심으로 객체들의 계층을 설계하는 것이다.

 

3) 추상 클래스를 이용한 타입 계층 구현

- 추상 클래스를 이용하면 클래스 상속을 이용해서 구현을 공유하면서도 결합도로 인한 부작용을 피할 수 있다.

- 구체 클래스로 타입을 정의해서 상속받는 방법과 추상 클래스로 타입을 정의해서 상속받는 방법의 차이점

   a. 의존하는 대상의 추상화 정도가 다르다.

   b. 상속을 사용하는 의도가 다르다.

 

4) 추상 클래스와 인터페이스 결합하기

- 골격 구현 추상 클래스 : 인터페이스를 이용해 타입을 정의하고 특정 상속 계층에 국한된 코드를 공유할 필요가 있을 경우 추상 클래스를 이용해서 코드 중복을 방지하는 방식

- 인터페이스와 추상클래스를 결합했을 때의 장점

   a. 다양한 구현 방법이 필요하면 새로운 추상 클래스를 추가해서 쉽게 해결할 수 있다.

   b. 이미 부모 클래스가 존재하는 클래스라고 하더라도 인터페이스를 추가함으로써 새로운 타입으로 쉽게 확장할 수 있다.

 

 

 

 

 

 

728x90
반응형