읽은 책 정리/객체지향의 사실과 오해

03 타입과 추상화

포포015 2021. 9. 12. 20:18

3장은 지하철 노선도의 역사로부터 이야기가 시작된다.

처음의 노선도를 만든 사람 헤리백은 '정확성을' 버리고 '목적'에 집중했다.

(지하철을 갈아탈때 지형같은 특징들을 신경쓰지않고, 지하철을 타는 수단의 목적에 집중했다.)

 

*추상화

불필요한 부분을 도려내가면서, 사물의 놀라운 본질을 드러나게하는 과정이다.

앨리스에서 나오는 정원사,병사,신하,왕자,공주,하객 등등.. 모두 객체이다

각각 특정한 모습을 갖추고 있을텐데, 영화에서 나오는 앨리스는 각각의 차이점으로

바라보지않고 '트럼프' 라는 유사성을 기반으로 추상화 해서 바라본다.

 

앨리스는 인물들의 차이점을 의도적으로 무시하고, 공통점만 강조함으로써

'트럼프'라고 정의를 해버린다.(단순화)

 

  1. 구체적인 사물의 공통점은 취하고, 차이점을 버리는 일반화를 통해 단순화를 시킨다.
  2. 중요한 부분을 강조하기 위해 불필요한 세부사항을 제거해 단순화 시킨다.

 

*객체란?

특정한 개념을 적용할수 있는 구체적인 사물.

개념이 객체에 적용됐을때, 객체를 개념 인스턴스라고한다.

 

*타입이란?

타입의 정의는 개념의 정의와 완전히 동일하다.

(공통점을 기반으로 객체들을 묶기 위한틀)

 객체는 행위에 따라 변할수 있는 상태를 가지고 있다.

(상태는 행동의 결과로 초래된 부수효과를 쉽게 표현하기 위해 도입한 추상적인 개념일뿐이다.)

 

 

**객체를 창조할때 가장중요하게 고려해야하는것은 객체가 객체끼리 협력하기 위해 어떤행동을 해야할지 결정하는것

 

행동이 우선이다.

객체의 내부적인 표현은 외부로부터 철저하게 감춰진다.

(객체의 행동을 가장 효과적으로 수행할수만 있다면 객체 내부의 상태를 어떤방식으로 표현하더라도 무방하다.)

 

객체의 내부 표현방식이 다르더라도, 어떤객체들이 동일하게 행동한다면 그 객체들은 동일한 타입에 속한다.

(어떤 데이터를 가지고 있는지는 우리의 관심사가 아니다.

객체가 다른객체와 동일한 데이터를 가지고 있더라도, 다른행동을 한다면 그 객체들은 서로 다른타입으로 분류한다.)

 

결론적으로 객체의 타입을 결정하는것은 객체의 행동뿐이다.

 

캡슐화

훌륭한 객체지향 설계는 외부에 행동만을 제공하고, 데이터를 행동뒤로 감춰야한다.

 

행동에 따라 객체를 분류하기 위해서는,

객체가 내부적으로 관리해야하는 데이터가 아니라 객체가 외부에 제공해야하는 행동을 먼저 생각해야한다.

  1. 객체가 외부에 제공해야하는 책임결정
  2. 데이터를 책임을수행하는데, 필요한 외부 인터페이스 뒤로 캡슐화할것

객체를 결정하는것은 행동이다. 데이터는 단지 행동을 따를뿐이다.

이것이 객체를 객체지향스럽게 만드는 가장 핵심적인 원칙이다.

 

정리

객체를 만들때는 어떤행동을 취할지 먼저 생각하고, 내부에 있는 멤버변수는 행동을 위한 준비물일뿐이다.

추상화를 통해, 공통적인 부분을 먼저 바라보고, 다형성을 이용해 작업하자.

'읽은 책 정리 > 객체지향의 사실과 오해' 카테고리의 다른 글

06 객체 지도  (0) 2021.09.15
05 책임과 메시지  (1) 2021.09.15
04 역할, 책임, 협력  (0) 2021.09.15
02 이상한 나라의 객체  (1) 2021.09.11
01 협력하는 객체들의 공동체  (0) 2021.09.10