Daily/Book

[객체지향의 사실과 오해] 3장 타입 추상화 (2일차)

행복한띠용이 2024. 11. 7. 23:14
728x90

3장 타입과 추상화

  • 지하철 노선도
    • 초기에는 실제 지형과 유사하게 표현하였지만 이는 이해를 더욱 어렵게 만들었다.
    • 얼마나 사실적이 보다 연결성을 얼마나 직관적으로 표현했는 지가 더 중요하다.
    • 정확성을 버리고 목적에 집중한 결과
  • 추상화
    • 현실에서 출발하되 불필요한 부분을 도려내 본질을 드러나게 하는 과정
    • 현실의 복잡성을 극복
    • 목적에 부합하는 방향으로 도려내야한다
  • 이상한 나라의 앨리스
    • 앨리스는 정원사, 병사, 왕자와 공주, 하트 잭, 하트 여왕 등을 "트럼프" 로 표현한다.
    • 이를 통해 정원의 복잡도가 낮아진다.
    • 이처럼 공통점을 기반으로 객체들을 묶기 위한 그릇을 개념이라 한다.
    • 등장인물들은 모두 다른 객체이지만 하나의 트럼프라는 개념으로 추상화했다.
    • 개념을 사용하면 객체를 분류할 수 있다.
    • 트럼프와 토끼 라는 두 개의 개념으로 등장인물을 분리한 것 처럼 개념은 공통점을 기반으로 객체를 분류한다.
    • 객체에 어떤 개념을 적용해 개념 그룹의 일원이 될 때 객체를 그 개념의 인스턴스라 한다.
    • 객체란 특정한 개념을 적용할 수 있는 구체적인 사물
    • 개념이 객체에 적용됐을 때 객체를 개념의 인스턴스라 한다.
  • 객체의 분류 장치로 개념을 이야기 할 때 세 가지 관점
    • 심볼
      • 개념을 가리키는 이름
      • ex) 트럼프
    • 내연
      • 개념의 의미
      • ex) 납작하고 네모난 몸. 모서리에 달린 팔다리
    • 외연
      • 개념에 속하는 객체(인스턴스)들의 집합
      • ex) 정원사, 병사, 신하, 하트 여왕 ...
  • 분류는 객체 지향의 가장 중요한 개념 중 하나이다.
    • 어떤 객체들을 어떤 개념으로 분류할 지 가 객체지향의 품질을 결정한다.
  • 분류는 추상화를 위한 도구이다.
    • 개념은 객체들의 복잡성을 극복하기 위한 추상화 도구
  • 타입
    • 타입은 개념이다.
    • 데이터 타입
      • 데이터의 타입이 없다면 1001100 을 어떻게 해석해야할 지 알 수 없다.
      • 첫째, 타입은 데이터가 어떻게 사용되느냐에 관한 것이다.
      • 둘째, 타입에 속한 데이터를 메모리에 어떻게 표현하는지는 외부로부터 철저하게 감춰진다.
    • 객체와 타입
      • 객체를 일종의 데이터처럼 사용한다.
      • 객체는 데이터와 다르다.
      • 객체에서 중요한 것은 객체의 행동이다.
      • 즉, 객체가 협력을 위해 어떤 책임을 지녀야하는 지 결정하는 것이 객체지향 설계의 핵심
      • 첫째, 어떤 객체가 어떤 타입에 속하는지를 결정하는 것은 객체의 행동이다.
      • 둘째, 객체의 내부적인 표현은 외부로부터 철저하게 감춰진다.
    • 행동이 우선이다.
      • 표현 방식이 달라도 동일한 행동이라면 동일한 타입의 객체이다.
      • 객체의 분류 기준은 동일한 행동. 여기서 말하는 동일한 행동은 동일한 책임. 이는 동일한 메시지 수신을 의미
      • 같은 메시지를 다르게 처리하는 것은 다형성에 의부여
      • 결과적으로 다형적인 객체들은 동일한 타입 혹은 타입 계층
      • 숨기는 것은 캡슐화
      • 객체의 행동에 따라 분류하기 위한 기본적 원칙이 공용 인터페이스 뒤로 데이터를 캡슐화하는 것
      • 책임 주도 설계
        • 객체가 외부에 제공하는 행동을 먼저 고려
        • 책임을 먼저 결정 후 적합한 데이터를 이후 결정
        • 필요한 외부 인터페이스 뒤로 캡슐화 진행
      • 앨리스의 트럼프는
        • 펄럭거리고 납작 업드릴 수 있는 행동이 가능하기 때문
        • 납작한 몸이라는 데이터는 행동에 따를 뿐
  • 타입의 계층
    • 트럼프 계층
      • 트럼프보다는 트럼프 인간이라는 타입이 옳다.
      • 트럼프는 트럼프 인간을 포괄하는 더 일반적 개념
      • 일반화/특수화의 관계
    • 일반화/특수화 관계
      • 어떤 객체가 더 일반적이거나 특수한 행동인지에 따라 관계 성립
  • 슈퍼타입과 서브타입
    • 일반적인 타입을 슈퍼타입
    • 특수한 타입을 서브타입
    • 슈퍼타입의 행동은 서브타입에게 자동으로 상속된다.
  • 일반화는 추상화를 위한 도구이다.
    • 추상화는 단순화!
  • 그래서 결국 타입은 추상화다
    • 객체의 동적인 특성을 추상화할 수 있다.
    • 객체의 상태 변경이라는 복잡성을 단순화할 수 있다.
  • 동적 모델과 정적 모델
    • 스냅샷 : 객체의 특정 시점의 상태
      • = 객체 다이어그램
      • 동적모델 : 스냅샷 처럼 시간에 따른 상태 변화와 행동
    • 타입 모델
      • 객체가 가질 수 있는 모든 상태와 행동을 시간에 독립적으로 표현
      • 정적모델
  • 클래스
    • 객체 분류 기준은 타입
    • 타입 분류 기준은 행동
    • 이를 언어로 구현하는 방법이 클래스
728x90