2023. 5. 29. 22:46ㆍ북리뷰/객체지향 사실과 오해
추상화의 의도는 목적에 집중
- 지하철 노선토 핵심은 정확한 지형 정보가 아닌 갈아타는 위치
알아야 하는 사실만 정확하게 표현, 몰라도 되는 정보는 무시
추상화의 목적 : 불필요한 부분을 무시해서 현실에 존재하는 복잡성을 극복
# 추상화
어떤 양상, 사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춰서 복잡도를 극복하는 방법
## 추상화 차원
- 구체적인 사물들 간 공통점을 취하고, 차이점은 버리는 일반화를 통해 단순화
- 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거하여 단순화
# 객체 분류의 관점
- 심블 : 개념을 가리키는 간략한 명칭 : 트럼프
- 내연 : 개념의 완전한 정의, 객체가 개념에 속하는지 여부를 확인 가능 : 몸이 납작한 네모 모퉁이
- 외연 : 개념 속에 혹하는 모든 객체 집합 : 병사, 신하, 하트여왕
# 타입
공통점을 기반으로 객체들을 묶기 위한 틀
개념과 동일
- 데이터 타입 : 메모리 안에 저장된 데이터의 종류를 분류하는 데 사용하는 메모리 집합에 관한 메타데이터. 데이터를 어떻게 사용하는지 알 수 있고, 메모리에 어떻게 표현하는지를 외부로부터 철저히 감춘다
# 행동이 우선
객체가 어떤 타입에 속하는지를 결정하는 것은 객체가 수행하는 행동임.
객체의 내부적 표현은 외부로부터 철저하게 감춰짐
객체의 내부 표현 방식이 다르더라도 어떤 객체들이 동일하게 행동한다면 그 객체들은 동일한 타입
즉, 외부에 행동만 제공하고 데이터는 행동 뒤로 감춰야(캡슐화)
외부에 제공하는 책임을 먼저 결정하고, 그 책임에 해당하는 적합한 데이터를 나중에 결정
일반화/특수화 관계를 결정하는 것 또한 데이터가 아닌 행동
특수한 타입은 일반화한 타입보다 더 특수한 행위를 해야함
# 타입은 추상화다
- 타입은 동적으로 변한느 상태를 정적인 모습으로 다룰 수 있게 해줌
타입을 이용하면 객체의 동적인 특성을 추상화할 수 있음.
# 동적 모델과 정적 모델
스냅샷 : 객체가 특정 시점에 구체적으로 어떤 상태를 가지느냐
동적 모델 : 실제로 객체가 살아 움직이는 동안 상태가 어떻게 변하고 행동하는 지를 포착하는 것
정적모델 = 타입 모델 : 객체가 가질 수 있는 모든 상태와 모든 행동을 시간에 독립적으로 표현하는 것
# 클래스
객체 관점의 동적 모델과 객체를 추상화한 타입 관점의 정적 모델을 적절히 혼용해야
객체지향 언어에서 정적 모델은 클래스를 이용해 구현
타입을 구현하는 가장 보편적인 방법은 클래스를 이용하는 것
'북리뷰 > 객체지향 사실과 오해' 카테고리의 다른 글
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 |