Taking baby-developer steps

[객체지향의 사실과 오해] 3. 타입과 추상화 - 4 타입과 객체 본문

CS 지식/객체지향

[객체지향의 사실과 오해] 3. 타입과 추상화 - 4 타입과 객체

Surin Lee 2023. 11. 16. 23:35

타입은 개념이다

 어떤 객체에 타입을 적용할 수 있을 때 그 객체를 타입의 인스턴스라고 한다. 개념과 마찬가지로 심볼, 내연, 외연을 이용해 표현할 수 있다. 근본적으로는 개념과 동일 하지만 이를 컴퓨터로 옮기면서 다음과 같은 형태로 나타낸다.

데이터 타입

 컴퓨터는 0, 1만으로 데이터를 저장한다. 이에 의미를 부여하기 위해 우리는 "타입 시스템(type system)"을 만들었다. 타입 시스템은 0과 1만으로 이루어진 데이터를 목적에 따라 분류하기 위해 만들었다. 이를 통해 메모리 안에 저장된 0과 1에 대해 '수행가능한 작업'과 '불가능한 작업'을 구분해 데이터가 잘못 사용되는 것을 방지한다. 

 데이터 타입은 "종류를 분류"하는데 사용하는 메타데이터이다. 데이터에 대한 분류는 어떤 종류의 연산을 수행 할 수 있는 지에 따라 결정된다.

 데이터 타입은 다음 두가지 성질을 가지고 있다.

 1. 타입은 데이터가 어떻게 사용되느냐(어떤 "연산을 수행가능한가")에 따라 결정된다.

 2. 타입에 속한 데이터를 메모리에 표현하는 방식은 외부에 철저히 감춰진다.  

객체와 타입

 객체를 분류하고 이름 붙이는 것은 프로그램에서 사용할 새로운 데이터 타입을 선언하는 것과 같다. 그렇나 객체는 데이터가 아니다. 객체에서 중요한 것은 "행동"이기 때문이다. 객체가 협력을 위해 어떤 책임을 지녀야 하는지를 결정하는 것이 객체지향 설계의 핵심이다.

 객체는 데이터 타입의 성질과 비슷한 다음 성질을 가지고 있다.

1. 객체가 어떤 타입에 속하는지 결정하는 것은 객체가 수행하는 "행동"이다.

2. 객체의 내부 표현(상태)는 외부에 철저히 감춰진다. -> 행동을 가장 효과적으로 수행만 할 수 있다면 객체 내부 상태를 어떤 방식으로 표현해도 무방하다.

 

행동이 우선이다

 객체의 타입은 객체의 행동으로 결정된다. 객체 내부 표현 방식에 무관하게, 어떤 객체들이 동일하게 행동한다면 그 객체들은 동일한 타입에 속한다. 동일한 책임을 수행하는 객체 역시 동일한 타입에 속한다.

 즉, 같은 타입에 속한 객체는 행동만 동일하면 서로 다른 데이터를 가질 수 있다. 행동이 동일하다 = 동일한 책임을 가지고 있다 = 동일한 메시지를 수신 한다 는 것을 의미한다. 즉, 동일한 메시지를 수신해 각자의 서로 다른 방식으로 응답하는 다형적인 객체들은 동일한 타입(=타입 계층)에 속한다. 

 객체는 행동이 가장 중요하다. 이것이 객체를 객체답게 만든다.

 

 


참고문헌 : 객체지향의 사실과 오해

Comments