타입과 추상화
객체
- 특정한 개념을 적용할 수 있는 구체적인 사물
- 객체가 특정 개념에 포함될 때(어떤 객체에 타입을 적용할 수 있을 때) 객체를 그 개념(타입)의 인스턴스(instance)라고 한다.
타입
- 공통점을 기반으로 객체들을 묶기 위한 틀 (=concept)
- 우리가 인식하고 있는 다양한 사물이나 객체에 적용할 수 있는 아이디어나 관념
타입의 결정과 사용
1. 타입은 데이터에 적용가능한 연산자의 종류에 따라 결정된다.
(타입은 데이터가 어떻게 사용되느냐에 관한 것이다.)
2. 타입에 속한 데이터를 메모리에 어떻게 표현하는지는 외부로부터 은닉되며, 개발자는 데이터 타입의 표현 방식을 몰라도 연산자를 이용하여 다양한 타입의 데이터를 사용할 수 있다.
따라서 데이터 타입이란 "메모리 안에 저장된 데이터의 종류를 분류하는 데 사용하는 메모리 집합에 관한 메타데이터"라고 정의내릴 수 있다.
객체와 타입
- 객체의 타입을 결정하는 것은 객체가 수행하는 행동이다.
→ 동일한 책임을 수행하는 일련의 객체는 동일한 타입에 속한다.
→ 객체가 보유하고 있는 데이터는 타입 결정에 영향을 미치지 않는다.
→ 객체지향에서 일반화/특수화는 객체의 상태를 표현하는 데이터가 아닌 행동에 의해 결정된다.
- 객체의 내부적인 표현은 외부로부터 철저하게 감춰진다(캡슐화).
- 타입은 동적으로 변하는 객체의 상태를 정적인 관점에서 표현함으로써(추상화) 객체의 상태변경이라는 복잡성을 단순화해준다.
추상화 (Abstraction)
- 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 놀라운 본질을 드러나게 하는 과정 (Root-Bernstein, 2001)
- 어떤 양상, 세부 사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법
추상화의 과정
1. 사물 간 공통점은 취하고, 차이점은 버리는 일반화를 통해 단순화
2. 불필요한 세부 사항을 제거해 단순화
Source