본문 바로가기
TechBooks

[Programming] 객체지향의 사실과 오해 #3장

by 꿈나무 김땡땡 2020. 7. 3.

책 소개

제목 : 객체 지향의 사실과 오해

저자 : 조영호

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=60550259

 

객체지향의 사실과 오해

위키북스 IT Leaders 시리즈 23권. 객체지향이란 무엇인가? 이 책은 이 질문에 대한 답을 찾기 위해 노력하고 있는 모든 개발자를 위한 책이다.

www.aladin.co.kr

 

3장. 타입과 추상화

해리 백이 창조한 지하철 노선도의 핵심은 지도가 당연히 가져야 한다고 생각 되는 '정확성'을 버리고 그 '목적'에 집중한 결과다.
각 역 간의 거리는 실제와 다르지만, 사람들은 노선도를 보고 원하는 곳까지 쉽게 갈 수 있다.

 

추상화를 통한 복잡성 극복

  • 진정한 의미의 추상화란 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 본질을 드러나게 하는 과정
  • 추상화의 목적은 불필요한 부분을 무시함으로써 현실에 존재하는 복잡성을 극복하는 것
  • 추상화는 두 차원에서 이루어진다.
    1. 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화 --> 단순하게 만든다.
    2. 중요한 부분을 강조하기 위해 불필요한 세부 사항 제거 --> 단순하게 만든다.

객체지향과 추상화

  • 객체 : 명확한 경계를 가지고 서로 구별할 수 있는 구체적인 사람이나 사물
  • 예를 들면, 앨리스는 트럼프 여왕, 병사, 정원사 등을 보고 '트럼프' 그룹을 만들어서 단순화 했다.

개념 (Concept)

  • 공통점을 기반으로 객체들을 묶기 위한 그릇 (e.g. '트럼프')
  • 개념을 이용해 객체를 여러 그룹으로 분류(Classification) 할 수 있다.
    • 분류(Classification) : 특정한 객체를 특정한 개념의 객체 집합에 포함시키거나 포함시키지 않는 작업
  • 객체에 어떤 개념을 적용하는 것이 가능해서 개념 그룹의 일원이 될 때, 객체를 그 개념의 인스턴스(Instance)라고 한다.
  • 개념의 3가지 관점
    1. 심볼(Symbol) : 개념을 가리키는 간략한 이름, 명칭 (e.g. '트럼프)
    2. 내연(Intension) : 개념의 완전한 정의. 내연의 의미를 이용해 객체가 개념에 속하는지 여부를 확인 가능
      (e.g. 트럼프에 대한 설명 : 몸이 납작하고 손발이 네모난 몸 모서리에 달려 있다.)
    3. 외연(Extension)  개념에 속하는 모든 객체의 집합(set)
      (e.g. 정원사, 병사, 신하, 왕자, 공주, 왕, 왕비 등)
  • 개념은 객체들의 복잡성을 극복하기 위한 추상화 도구

 

타입 (Type)

  • 타입의 정의는 개념의 정의와 완전히 동일 (공통점을 기반으로 객체들을 묶기 위한 틀)
  • 2가지 중요 사실
    1. 타입은 데이터가 어떻게 사용 되느냐에 관한 것
    2. 타입에 속한 데이터를 메모리에 어떻게 표현 하는지는 외부에 보이지 않음 (행동만 보이고, 상태는 안보인다!)
  • 객체는 행동에 따라 변할 수 있는 상태를 가지고 있다.
    1. 어떤 객체가 어떤 타입에 속하는지 결정하는 것은 객체가 수행하는 행동
    2. 객체의 내부적인 표현(상태)은 외부에서 안보인다.
  • 객체의 타입은 객체의 행동이 결정한다.
    • 다형성 : 내부의 표현 방식은 다를 수 있다 --> 동일한 요청에 대해 서로 다른 방식으로 응답할 수 있다.
    • 캡슐화 : 외부에 행동은 보이지만 상태(데이터)는 안보인다.

타입의 계층

  • 일반화 / 특수화 (Generalization / Specialization)
    • 객체의 행동이 결정한다.
    • 특수한 타입은 일반적인 타입의 행동 + 자신만의 특수한 행동 포함
  • 슈퍼타입 / 서브타입
    • 슈퍼타입(Supertype) : 일반적인 타입
    • 서브타입(Subtype) : 특수한 타입

 

정적 모델

  • 타입은 시간에 따라 동적으로 변하는 상태를 시간과 무관한(= 시간에 독립적인) 정적인 모습으로 다룰 수 있게 한다.
  • 따라서 타입은 추상화이다. (객체의 동적인 특성 추상화)
  • 객체의 2가지 모델
    1. 스냅샷(Snapshot) : 객체가 특정 시점에 구체적으로 어떤 상태를 가지는가
      • 객체 다이어그램(Object Diagram), 동적 모델(Dynamic Model) 이라고도 한다.
    2. 타입 모델(Type Diagram) : 객체가 가질 수 있는 모든 상태와 모든 행동을 시간에 독립적으로 표현
      • 정적 모델(Static Moel) 이라고도 한다.
      • 정적 모델은 클래스를 이용해 구현한다.
  • 객체를 분류하는 기준은 타입이며, 타입을 나누는 기준은 객체가 수행하는 행동이다.

 

 

 

 

 

 

 

댓글