3장 타입과 추상화
객체지향의 사실과 오해 3장
추상화
추상화의 목적
추상화의 수준, 이익, 가치는 목적에 의존적이다.
추상화 과정
공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만든다.
중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거한다.
객체지향과 추상화
공통점을 기반으로 객체들을 묶기 위한 그릇을 개념이라고 한다.
개념을 이용하면 여러 그룹으로 분류할 수 있다.
객체란 특정한 개념을 적용할 수 있는 구체적인 사물이다.
개념이 객체에 적용되었을 때 객체를 개념의 인스턴스라고 한다.
타입
데이터 타입을 정의하는 이유
타입을 정의함으로써 어떻게 사용될수 있는지 정의할 수 있다.
타입에 속한 데이터를 메모리에 어떻게 표현하는지 외부로부터 철저하게 감춰진다.
객체는 데이터인가?
아니다. 객체와 데이터의 목적이 다르다. 객체에서 중요한 것은 객체의 행동이다.
행동이 우선이다.
객체의 내부 표현 방식이 다르더라도 어떤 객체들이 동일하게 행동한다면 그 객체들은 동일한 타입에 속한다.
다만 내부의 데이터 표현 방식이 다르기 때문에 동일한 메시지를 처리하는 방식은 서로 다를 수밖에 없다. : 다형성
동적 모델과 정적 모델
객체가 특정 시점에 구첵적인 상태를 가지는 것은 스냅샷이라고 한다. 스냅샷처럼 실제로 객체가 살아 움직이는 동안 상태가 어떻게 변하고 어떻게 행동하는지를 포착하는 것을 동적 모델이라고 한다.
객체가 가질 수 있는 모든 상태와 모든 행동을 시간에 독립적으로 표현하는 모델을 타입 모델이라고 한다. 이 모델은 동적으로 변하는 객체의 상태가 아니라 객체가 속합 타입의 정적인 모습을 표현하기 때문에 정적 모델이라고도 한다.
객체의 관점의 동적 모델과 객체를 추상화한 타입 관점의 정적 모델을 적절히 혼용해야 한다.
논의하고 싶은 내용
동적 모델과 정적 모델의 차이가 정확히 감이 안온다.. 😢
Last updated