현실은 복잡하며 예측 불가능한 혼돈의 덩어리다.
객체지향 패러다임은 객체라는 추상화를 통해 현실의 복잡성을 극복한다.
어떤 양상, 세부 사항, 구조를 좀더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법
이전장에서 현실을 소프트웨어로 은유적으로 표현하며 새롭게 창조하는 것이라고 했다..
어떤 사물이나 현상이 가지고 있는 정보량은 너무 복잡하고 많기 때문에 추상화를 사용한다.
추상화를 사용해 단순하게 만들자
일반적으로 우리가 인식하고 있는 다양한 사물이나 객체에 적용할 수 있는 아이디어나 관념
ex) 길거리를 빠른 속도로 누비는 교통수단들에 대해서 '자동차'라는 개념을 적용 가능
개념의 세가지 관점
-> 개념을 통해 객체를 분류할 수 있다..!
; 객체에 개념을 적용시키면 특정한 개념의 객체 집합에 포함시키거나 포함시키지 않게 됨
-> 어떤 객체를 타입으로 분류할 때 행동으로 분류
; 객체의 상태가 다르더라도 어떤 객체들이 동일한 행동을 한다면 동일한 타입으로 분류할 수 있다.
인스턴스: 개념이 적용된 객체
⭐️ 어떤 객체를 어떤 개념으로 분류할지 판단하는 것이 객체지향의 품질을 결정
소프트웨어 상에서 개념과 동일한 의미
객체는 시간에 따라 상태가 변경 될 수 있다 -> 너무 복잡해서 이해하기 어려움
시간에 따라 동적으로 변하는 객체의 상태를 시간에 무관한 정적인 모습으로 다루기 위해!
동적으로 변하는 객체의 상태를 정적인 관점에서 표현
시간이라는 불필요한 요소를 제거하고 단순하게 표현한다는 점에서 타입역시 추상화!
-> 서로 포함관계이기 때문에 슈퍼타입의 객체의 행동들을 서브타입 객체들도 수행할 수 있다.
-> 슈퍼타입의 인스턴스는 서브타입의 인스턴스로 대체될 수 있다.
객체지향의 핵심인 역할과 책임, 협력에 대해서 작성하려 했지만,,
추상화에 대한 개념을 한번 정리하고 가는게 좋을것 같아 추상화에 대해 집중해서 정리해보았다.
객체를 분류하는 기준은 타입(개념), 타입을 나누는 기준은 오직 객체가 수행하는 행동이다..!
다음 포스팅에선 역할, 책임, 협력에 대해 도식화를 이용해 정리해보겠다....