<aside> 🤔 객체지향이란 무엇인가? 에 대한 정답은 존재하지 않는다. 중요한 것은 자신만의 견해를 가지는 것이다. 객체지향으로 향하는 첫 걸음은 클래스가 아니라 객체를 바라보는 것으로 시작한다.

</aside>

01. 협력하는 객체들의 공동체

시너지를 생각하라. 전체는 부분의 합보다 크다.

애플리케이션을 개발 하면서 객체에 직접적으로 대응되는 실세계의 사물을 발견할 확률은 그다지 높지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다.

협력하는 사람들

역할, 책임, 협력

협력 속에 사는 객체

객체지향의 본질

02. 이상한 나라의 객체

객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다.

함께 행동하는 물체를 하나의 개념으로 인지한다. 물체가 여러 부분으로 구성돼 있더라도 함께 움직일 경우 그 물체를 하나의 유기적인 단위로 인식한다.

객체지향과 인지 능력

객체, 그리고 이상한 나라

객체, 그리고 소프트웨어 나라

기계로서의 객체

행동이 상태를 결정한다

은유와 객체

03. 타입과 추상화

일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는 것에 관한 모든 것이라는 것을 깨닫고 나면 (훌륭한) 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이라는 것이 명확해진다.

지하철을 이용하는 승객의 목적은 하나의 역에서 다른 역으로 이동하는 것이다. ”이 지도는 상식에 근거한 것입니다. 지하철을 갈아탈 때 지형 때문에 골치 아플 필요가 있을까요? 지형은 중요한 것이 아닙니다. 중요한 것은 연결, 즉 연차를 갈아타는 것입니다.”