2021.07.14 - [IT 책 독서록] - [객체지향의 사실과 오해] 2장 내용 정리
[객체지향의 사실과 오해] 2장 내용 정리
2021.07.13 - [IT 책 독서록] - [객체지향의 사실과 오해] 1장 내용 정리 [객체지향의 사실과 오해] 1장 내용 정리 객체지향 시스템은 자율적인 객체간의 협력으로 이루어진다. 협력을 구성하는 각 객
blog.robinjoon.space
추상화 : 어떤 양상, 세부사항, 구조를 좀 더 명확하게 이해하기 위해 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법
추상화에는 두가지 차원이 있다.
- 구체적인 사물들간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것.
- 중요한 부분을 강조하기위해 불필요한 세부사항을 제거함으로써 단순하게 만드는 것.
개념(concept) : 공통점을 기반으로 객체들을 묶기위한 그릇
객체를 특정한 개념을 적용할 수 있는 구체적인 사물 이라 정의할 수 있다. 개념이 객체에 적용되었을 때 객체를 개념의 인스턴스라 한다.
개념은 3가지로 구성된다.
- 심볼 : 개념을 가리키는 간략한 이름이나 명칭
- 내연 : 개념의 완전한 정의를 나타내며 내연의 의미를 통해 객체가 개념에 속하는지 여부를 확인할 수 있다.
- 외연 : 개념에 속하는 모든 객체의 집합
분류(classification) : 객체에 특정한 개념을 적용하는 작업
객체에 특정한 개념을 적용하기로 결심했을 때 우리는 그 객체를 특정한 집합의 멤버로 분류하고 있는 것이다.
타입 = 개념
데이터 타입 : 메모리안에 저장된 데이터의 종류를 구분하는데 사용하는 메모리집합에 관한 메타데이터
- 데이터가 어떻게 사용되어지는지가 타입을 결정. ex) + 연산이 가능하면 숫자 등
- 타입에 속한 데이터를 메모리에 어떻게 표현하는지는 외부로부터 감춰짐
이는 객체의 타입을 말할때도 마찬가지다. (그렇다고 객체가 데이터라는건 아니다)
- 어떤 객체가 어떤 타입에 속하는지 결정하는 것은 객체가 수행하는 행동이다.
- 객체의 내부적인 표현은 외부로부터 철저하게 감춰진다. ▶ 캡슐화
객체의 타입을 결정하는 것은 객체의 행동 뿐이다.
즉, 같은 타입에 속한 객체는 행동만 동일하다면 서로 다른 데이터를 가질 수 있다. 내부 표현방식이 다르기 때문에 동일한 메시지를 처리하는 방식(메서드)는 서로 다를 수 있다. ▶ 다형성
일반화/특수화 관계 : 좀 더 포괄적인 개념과, 좀 더 구체적이고 특화된 개념 사이의 관계.
좀 더 포괄적인 개념을 슈퍼타입, 좀 더 구체적이고 특화된 개념을 서브타입이라 한다.
이 관계에서도 중요한건 행동이다. A가 B의 서브타입이라면, B의 모든 행동을 A도 할 수 있어야 한다. 즉, B를 A가 대체할 수 있어야 한다.
이런 일반화/특수화 관계는 추상화의 두번째 차원인 "중요한 부분을 강조하기위해 불필요한 세부사항을 제거함으로써 단순하게 만드는 것." 을 적절히 활용하는 대표적인 예시다.
타입은 추상화다.
타입은 추상화다. 타입을 이용하면 객체의 동적인 특성을 추상화 할 수 있다. 결국, 타입은 상태의 변경이라는 복잡성을 단순화할 수 있는 좋은 방법인 것이다.
클래스는 타입을 구현하기 위해 프로그램이 언어에서 제공하는 구현 메커니즘이다.
'IT 책 독서록' 카테고리의 다른 글
| [Clean Code] 3장 함수 (1) (0) | 2022.02.18 |
|---|---|
| [객체지향의 사실과 오해] 4장 내용정리 (0) | 2021.07.29 |
| [객체지향의 사실과 오해] 2장 내용 정리 (0) | 2021.07.14 |
| [객체지향의 사실과 오해] 1장 내용 정리 (0) | 2021.07.13 |
| [객체지향의 사실과 오해] 리뷰 (0) | 2021.07.13 |