객체지향 사실과 오해

2장 이상한나라의 객체

상태

상태와 프로퍼티

협력과 행동

캡슐화

식별자

객체

3장 타입과 추상화

(내생각) 추상화를 하면 그것에 대해 기대하는 것은 추상화 된 것만 기대하면 volume을 추상화 했으면 그 객체에서는 volume up, volume down 행동만 구현되어 있으면 됨, 다른 추상화는 거기에 해당하는 행위만 구현 되어 있으면 됨. 자바에서는 interface로 강제하지만 js에서는 그냥 프로퍼티에 이것이 있는지 확인만 하고 넘어가면 됨.

(내생각) 여기서 개념은 인터페이스와 비슷하지 않을까?

분류란 객체에 특정한 개념을 적용하는 작업이다. 객체에 특정한 개념을 적용하기로 결심했을 때 우리는 그 객체를 특정한 집합의 멤버로 분류하고 있는 것이다.

타입은 개념이다.

행동이 우선이다.

일반화/특수화

두 타입간에 일반화/특수화 관계가 성립 하려면 한 타입이 다른 타입보다 더 특수하게 행동해야 하고 반대로 한 타입은 다른 타입보다 더 일반적으로 행동해야 한다. 내부에 보관한 데이터로 구분하는 것이 아니다.

슈퍼타입과 서브타입

일반화/특수화 관계는 좀 더 일반적인 타입을 슈퍼타입이라고 하고, 특수한 타입을 서브타입이라고 한다. 따라서 어떤 타입을 다른 타입의 서브타입이라고 말할 수 있으려면 다른 타입을 대체할 수 있어야 한다.(리스코프 1988) ​