3장 타입과 추상화

객체지향의 사실과 오해 3장

추상화

추상화의 목적

  • 추상화의 수준, 이익, 가치는 목적에 의존적이다.

추상화 과정

  • 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만든다.

  • 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거한다.

객체지향과 추상화

  • 공통점을 기반으로 객체들을 묶기 위한 그릇을 개념이라고 한다.

  • 개념을 이용하면 여러 그룹으로 분류할 수 있다.

  • 객체란 특정한 개념을 적용할 수 있는 구체적인 사물이다.

  • 개념이 객체에 적용되었을 때 객체를 개념의 인스턴스라고 한다.

타입

데이터 타입을 정의하는 이유

  • 타입을 정의함으로써 어떻게 사용될수 있는지 정의할 수 있다.

  • 타입에 속한 데이터를 메모리에 어떻게 표현하는지 외부로부터 철저하게 감춰진다.

객체는 데이터인가?

  • 아니다. 객체와 데이터의 목적이 다르다. 객체에서 중요한 것은 객체의 행동이다.

행동이 우선이다.

  • 객체의 내부 표현 방식이 다르더라도 어떤 객체들이 동일하게 행동한다면 그 객체들은 동일한 타입에 속한다.

  • 다만 내부의 데이터 표현 방식이 다르기 때문에 동일한 메시지를 처리하는 방식은 서로 다를 수밖에 없다. : 다형성

동적 모델과 정적 모델

  • 객체가 특정 시점에 구첵적인 상태를 가지는 것은 스냅샷이라고 한다. 스냅샷처럼 실제로 객체가 살아 움직이는 동안 상태가 어떻게 변하고 어떻게 행동하는지를 포착하는 것을 동적 모델이라고 한다.

  • 객체가 가질 수 있는 모든 상태와 모든 행동을 시간에 독립적으로 표현하는 모델을 타입 모델이라고 한다. 이 모델은 동적으로 변하는 객체의 상태가 아니라 객체가 속합 타입의 정적인 모습을 표현하기 때문에 정적 모델이라고도 한다.

  • 객체의 관점의 동적 모델과 객체를 추상화한 타입 관점의 정적 모델을 적절히 혼용해야 한다.

논의하고 싶은 내용

  • 동적 모델과 정적 모델의 차이가 정확히 감이 안온다.. 😢

Last updated