03. 타입과 추상화

2023. 5. 29. 22:46북리뷰/객체지향 사실과 오해

728x90

추상화의 의도는 목적에 집중

- 지하철 노선토 핵심은 정확한 지형 정보가 아닌 갈아타는 위치

알아야 하는 사실만 정확하게 표현, 몰라도 되는 정보는 무시

추상화의 목적 : 불필요한 부분을 무시해서 현실에 존재하는 복잡성을 극복

 

# 추상화

어떤 양상, 사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춰서 복잡도를 극복하는 방법

## 추상화 차원

- 구체적인 사물들 간 공통점을 취하고, 차이점은 버리는 일반화를 통해 단순화

- 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거하여 단순화

 

# 객체 분류의 관점

- 심블 : 개념을 가리키는 간략한 명칭 : 트럼프

- 내연 : 개념의 완전한 정의, 객체가 개념에 속하는지 여부를 확인 가능 : 몸이 납작한 네모 모퉁이

- 외연 : 개념 속에 혹하는 모든 객체 집합 : 병사, 신하, 하트여왕

 

# 타입

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

개념과 동일

- 데이터 타입 : 메모리 안에 저장된 데이터의 종류를 분류하는 데 사용하는 메모리 집합에 관한 메타데이터. 데이터를 어떻게 사용하는지 알 수 있고, 메모리에 어떻게 표현하는지를 외부로부터 철저히 감춘다

 

# 행동이 우선

객체가 어떤 타입에 속하는지를 결정하는 것은 객체가 수행하는 행동임.

객체의 내부적 표현은 외부로부터 철저하게 감춰짐

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

 

즉, 외부에 행동만 제공하고 데이터는 행동 뒤로 감춰야(캡슐화)

외부에 제공하는 책임을 먼저 결정하고, 그 책임에 해당하는 적합한 데이터를 나중에 결정

일반화/특수화 관계를 결정하는 것 또한 데이터가 아닌 행동

특수한 타입은 일반화한 타입보다 더 특수한 행위를 해야함

 

# 타입은 추상화다

- 타입은 동적으로 변한느 상태를 정적인 모습으로 다룰 수 있게 해줌

타입을 이용하면 객체의 동적인 특성을 추상화할 수 있음. 

 

# 동적 모델과 정적 모델

스냅샷 : 객체가 특정 시점에 구체적으로 어떤 상태를 가지느냐

동적 모델 : 실제로 객체가 살아 움직이는 동안 상태가 어떻게 변하고 행동하는 지를 포착하는 것

정적모델 = 타입 모델 : 객체가 가질 수 있는 모든 상태와 모든 행동을 시간에 독립적으로 표현하는 것

 

# 클래스

객체 관점의 동적 모델과 객체를 추상화한 타입 관점의 정적 모델을 적절히 혼용해야

객체지향 언어에서 정적 모델은 클래스를 이용해 구현

타입을 구현하는 가장 보편적인 방법은 클래스를 이용하는 것

 

728x90

'북리뷰 > 객체지향 사실과 오해' 카테고리의 다른 글

06. 객체 지도  (0) 2023.05.31
05. 책임과 메시지  (0) 2023.05.30
04. 역할, 책임, 협력  (0) 2023.05.30
02. 이상한 나라의 객체  (0) 2023.05.29
01. 협력하는 객체들의 공동체  (0) 2023.05.28