CH03 타입과 추상화
Last updated
Last updated
저자는 인간의 부족한 인지능력에 비해 현실 세계의 복잡도는 너무 크기 때문에 인간은 본능적으로 이해하기 쉽고 예측 가능한 수준으로 현실을 분해하고 단순화 한다고 한다.
이 과정에서 추상화가 발생하는데, 불필요한 부분을 도려내가면서 사물의 본질을 드러내게 하는 과정이라는 인용을 사용하고 있다.
잘된 추상화의 예시로 해리 벡의 지하철 노선도를 들고 있는데 매우 적절한 비유라고 생각했다.
지하철 노선도의 목적은 현재 위치와 목적지, 경유역 등을 확인하는 용도인데 이를 위해서 굳이 사실적으로 구불구불한 노선을 보여줄 필요는 없다. 그래서 해리 벡이 위 노선도중 아래 노선도처럼 추상화했다고 한다.
책에서는 추상화를 아래와 같이 정의한다.
책에서 '개념'에 대해서 설명하고 있는데, 내용이 제법 긴 반면에 생각보다 정리할 필요성은 못느껴서 넘어갔다. 요약하자면 책에서 소개하는 '개념' 이란 공통적인 특성을 기준으로 객체를 그룹으로 묶을 수 있는 단위이다. 분류의 단위인 것이다.
객체지향에서 분류는 매우 중요한 행위이다. 객체를 적절하게 분류하여 설계할 수록 유지보수가 용이하고 변경에 유연할 수 있으며 개발자가 객체를 쉽게 찾고 조작할 수 있는 정신적인 지도를 제공할 수 있다.
객체의 타입(개념)을 정할때 그 기준이 되는 것은 객체의 행동이다. 상태가 아니라 행동이다. 동일한 데이터를 가지고 있더라도 다른 행동을 한다면 같은 분류에 넣을 수 없다.
반대로 같은 행동을 한다면 서로 다른 상태를 지닐 수 있다. 이미 앞서 객체를 설계할 때 가장 먼저 고민하고 우선해야할 것이 바로 객체가 어떤 행동을 하는지에 대한 고민인 것을 알아보았다.
중요한 부분이니까 이유를 다시 언급하자면 결국 객체지향의 관점에서 소프트웨어를 설계한다는 것은 객체간의 협력을 어떻게 잘 발생하게 할지 최적의 형태를 고민하는 것이고 이는 각 객체들에게 어떤 책임을 각각 할당하게 할지를 고민하는 것과 같은 것이었다. 객체는 결국 책임을 다하기 위해서 각자 행동을 취할 것이기 때문에 행동은 객체를 결정하고 분류하는 가장 중요한 기준이 된다.
특별한 것은 아니고 일반적으로 늘 해오던 상속 및 구현에 관한 이야기이다. 예시가 참신해서 따로 노트로 남긴다.