티스토리 뷰

반응형

타입에 관련된 중요한 사실

  • 타입은 데이터가 어떻게 사용되느냐에 관한 것이다.
    • 숫자는 연산, 문자열은 문자 관련 연산
  • 타입에 속한 데이터를 메모리에 어떻게 표현하는지는 외부로부터 철저하게 감춰진다.
    • 개발자는 해당 데이터 타입의 표현방식을 몰라도 데이터를 사용하는데 지장이 없다.

 

객체와 타입

  • 객체의 오해

    • 객체를 타입에 따라 분류하고 그 타입에 이름을 붙이는 것은 결국 프로그램에서 사용할 새로운 데이터 타입을 선언하는 것과 같다.
    • 이 말로 봤을 때, 객체가 데이터라는 오해를 불러일으킬 수 있다. 전에도 봤듯이 객체에서 중요한 것은 객체의 행동이다.
    • 객체를 창조할 때 객체가 이웃하는 객체와 협력하기 위해 어떤 행동을 해야할 지 결정하는 것이다. 즉, 객체는 데이터가 아니라는 것이다.
  • 객체의 타입에 중요한 원칙

    • 어떤 객체가 어떤 타입에 속하는지 결정하는 것은 객체가 수행하는 행동에 있다.
    • 객체의 내부적인 표현은 외부로부터 철저하게 감춰진다. 즉, 객체의 타입은 객체의 내부 표현과는 아무런 상관이 없다.

 

행동이 우선이다.

  • 객체의 동일한 타입 기준
    • 어떤 객체들이 동일하게 행동한다면 그 객체들은 동일한 타입으로 본다.
    • 객체들이 동일한 데이터를 가지고 있다고 해서 동일한 타입이 아니다. 우리의 관심사는 데이터가 아닌 것이다. 그저 행동일뿐!
  • 객체를 결정짓는 것은 행동이다. 데이터는 단지 행동을 따를 뿐이고..

 

객체 동일한 타입과 다형성

  • 다형성이란, 동일한 요청에 대해 서로 다른 방식으로 응답할 수 있는 능력을 뜻한다. (다음 장에 자세히 다룰 것이다.)
  • 객체의 동일한 타입을 풀이하면,
    • 동일한 타입 -> 동일한 책임 -> 동일한 메시지 수신
    • 동일한 메시지를 수신할 수 있다는 것은 내부 표현 방식에 상관없이 동일한 요청을 처리할 수 있다는 다형성과 연관되었다라는 것을 알 수 있다.

 

일반화/특수화 관계

  • 일반화와 특수화 관계도 행동의 관점에서 살펴볼 수 있다.
  • 행동의 관점에서 일반화/특수화 관계
    • 일반적인 타입 : 특수한 타입이 가진 모든 행동들 중에서 일부 행동만을 가지는 타입을 말한다.(앨리스에서 트럼프)
    • 특수한 타입 : 일반적인 타입이 가진 모든 타입을 포함하지만 거기에 더해 자신만의 행동을 추가하는 타입을 말한다.(앨리스에서 트럼프 인간)
  • 일반적인 타입은 특수한 타입에 비해 더 적은 행동을 가지고 있다. 그에 반해 특수한 타입은 일반적인 타입보다 많은 행동을 가지고 있고 일반적인 타입이 가진 행동을 동일하게 수행할 수 있다.

 

슈퍼타입과 서브타입

  • 슈퍼타입(일반적인 타입), 서브타입(특수한 타입)

 

일반화는 추상화를 위한 도구이다.

  • 목적에 따라 불필요한 특성을 배제하고 좀 더 포괄적인 의미를 지닌 특성에만 집중한다.
  • 앨리스의 경우 트럼프 인간을 보고 좀 더 포괄적으로 표현하기 위해 불필요한 특성인 인간의 특성을 배제하고 트럼프의 특성에만 집중한 것이다.

 

타입의 목적

  • 시간에 따라 변하는 상태를 무시하고 정적인 모습으로 다룰 수 있게 해준다.
  • 상태가 아무리 변해도 해당 객체는 다른 객체와 구별할 수 있는 식별성은 동일하게 유지된다.
  • 즉, 정적인 모습으로 객체의 식별을 가능하게 해준다.

 

타입은 추상화이다.

  • 어떤 시점에서 객체에 관해 생각해볼 때 불필요한 시간이라는 요소와 상태 변화라는 요소를 제거하고 철저하게 정적인 관점에서 객체의 모습을 묘사하는 것을 가능하게 해준다.
  • 모든 상태와 모든 행동을 독립적으로 표현하여 그저 객체의 모습만을 보여준다.

 

클래스와 타입

  • 클래스와 타입은 명백히 다르다.
  • 클래스는 타입을 구현한 것이다.
  • 타입은 객체를 분류하기 위해 사용하는 개념이다.
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함