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