추상화는 도메인의 복잡성을 단순화하고 직관적인 멘탈 모델을 만드는 데 사용할 수 있는 가장 기본적인 인지 수단이다.
도메인에 존재하는 개념들을 구조화하고 단순화하기 위해 다양한 추상화 기법을 사용한다.
객체지향의 가장 큰 장점은 동일한 추상화 기법을 프로그램의 분석, 설계, 구현 단계에 걸쳐 일관성 있게 적용할 수 있다는 점이다.
객체를 분류하고 범주로 묶는 것은 객체들의 특정 집합에 공통의 개념을 적용하는 것을 의미한다.
개념이란 속성과 행위가 유사한 객체에 공통적으로 적용되는 관념이나 아이디어다.
세상에 존재하는 객체에 개념을 적용하는 과정을 분류라고 한다.
'수많은 개별적인 현상들'을 객체라고 하고, '하나의 개념'을 타입이라고 한다.
타입을 객체의 분류 장치로서 적용할 수 있으려면 다음과 같은 세 가지 관점에서의 정의가 필요하다.
심볼 : 타입을 가리키는 간략한 이름이나 명칭
내연 : 타입의 완전한 정의. 내연의 의미를 이용해 객체가 타입에 속하는지 여부를 확인할 수 있다.
외연 : 타입에 속하는 모든 객체들의 집합
타입의 외연은 타입에 속하는 객체들의 집합으로 표현한다.
집합은 외연을 가리키는 또다른 명칭이다.
집합은 많은 객체를 포함하고 객체는 하나 이상의 집합에 포함될 수 있다.
한 객체가 한 시점에 하나의 타입에만 속하는 것을 단일 분류라고 한다.
한 객체가 한 시점에 여러 타입에 속할 경우 이를 다중 분류라고 한다.
대부분의 객체지향 프로그래밍 언어들은 단일 분류만을 지원한다.
단순함을 위해서는 항상 다중 분류와 동적 분류보다는 단일 분류와 정적 분류를 선택하는 것이 현명하다.
객체가 한 집합에서 다른 집합의 원소로 자신이 속하는 타입을 변경할 수 있는 경우 이를 동적 분류라고 한다.
객체가 자신의 타입을 변경할 수 없는 경우 이를 정적 분류라고 한다.
'객체지향(Java)' 카테고리의 다른 글
Java 자바 기술면접 질문 정리 (2) (0) | 2023.01.24 |
---|---|
Java 자바 기술면접 질문 정리 (1) (0) | 2022.12.08 |
객체지향의 사실과 오해 부록A. 추상화 기법 (2) (0) | 2022.11.26 |
객체지향의 사실과 오해 4장. 역할, 책임, 협력 (0) | 2022.11.23 |