[Object] 타입

업데이트:

개념 관점의 타입

어떤 대상이 타입으로 분류될 때 그 대상을 타입의 인스턴스(Instance) 라고 부른다. 일반적으로 타입의 인스턴스를 객체 라고 부른다.

프로그래밍 언어 관점의 타입

연속적인 비트에 의미와 제약을 부여하기 위해 사용된다. 비트에 담긴 데이터를 문자열로 다룰지, 정수로 다룰지는 전적으로 데이터를 사용하는 애플리케이션에 의해 결정된다.

프로그래밍 언어에서 타입은 두 가지 목적을 위해 사용된다.

  • 타입에 수행될 수 있는 유효한 오퍼레이션의 집알을 정의한다.
  • 타입에 수행되는 오퍼레이션에 대해 미리 약속된 문맥을 제공한다.

객체지향 패러다임 관점의 타입

  • 공통의 특징을 공유하는 대상의 분류이다.
  • 동일한 오퍼레이션을 적용할 수 있는 인스턴스의 집합이다.
  • 객체가 수신할 수 있는 메시지의 종류를 정의하는 것이다.

객체에게 중요한 것은 속성이 아니라 행동이다. 어떤 객체들이 동일한 상태를 가지고 있더라도 퍼블릭 인터페이스가 다르면 이들은 서로 다른 타입으로 분류된다. 반대로 어떤 객체들이 내부 상태는 다르지만 동일한 퍼블릭 인터페이스를 공유한다면 이들은 동일한 타입으로 분류된다.

슈퍼 타입과 서브 타입

  • 슈퍼 타입이란 서브 타입이 정의한 퍼블릭 인터페이스를 일반화시켜 상대적으로 범용적이고 넓은 의미로 정의한 것이다.
  • 서브 타입이란 슈퍼 타입이 정의한 퍼블릭 인터페이스를 특수화시켜 상대적으로 구체적이고 좁은 의미로 정의한 것이다.

서브 타이핑

타입 계층을 구성하기 위해 상속을 사용하는 경우를 가리킨다. 서브타이핑에서는 자식 클래스와 부모 클래스의 행동이 호환되기 때문에 자식 클래스의 인스턴스가 부모 클래스의 인스턴스를 대체할 수 있다. 이때 부모 클래스는 자식 클래스의 슈퍼 타입이 되고 자식 클래스는 부모 클래스의 서브 타입이 된다. 서브 타이핑을 인터페이스 상속이라고 부르기도 한다.

슈퍼 타입과 서브 타입 사이의 관계에서 가장 중요한 것은 퍼블릭 인터페이스다. 서브 타입의 퍼블릭 인터페이스가 슈퍼 타입에서 정의한 퍼블릭 인터페이스와 동일하거나 더 많은 오퍼레이션을 포함해야 한다.

Reference

오브젝트, 코드로 이해하는 객체지향 설계

카테고리:

업데이트:

댓글남기기