벡엔드/객체지향 프로그래밍 3

[객체지향의 사실과 오해] 3장 타입과 추상화

일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는 것에 관한 모든 것이라는 것을 깨닫고 나면 (훌륭한) 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이라는 것이 명확해 진다. - 키스 데블린 - 지하철을 이용하는 승객의 목적은 하나의 역에서 다른 역으로 이동하는 것이다. 승객이 원하는 것 어떤 역에서 출발해야 하는지 어떤 역에서 환승해야 하는지 어떤 역을 거쳐야 가장 빠르게 목적지에 도착할 수 있는지를 직관적이고 단순하게 보여주는 것 지하철 노선도는 사실적으로 지형을 묘사했는지가 아니라 역과 역사이 연결성을 얼마나 직관적으로 표현했느냐이다. 초기 지하철 노선도는 본래의 목적과는 무관한 사실적인 지형 정보를 혼합함으로써 중요한 정보를 파악하기 힘들게 만..

[객체지향의 사실과 오해] 2장 이상한 나라의 객체

객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. 레베카 워프스브록 객체 지향과 인지 능력 인간이 직접적으로 지각할 수 있는 대부분의 객체는 물리적인 경계를 지닌 구체적인 사물이다. 그러나 인간의 인지 능력은 물리적인 한계를 넘어 개념적으로 경계 지을 수 있는 추상적인 사물까지도 객체로 인식할 수 있게 한다. 예를 들어 주문과 계좌 이체는 비록 물리적인 실체는 존재하지 않더라도 인간이 쉽게 구분하고 하나의 단위로 인지할 수 있는 개념적인 객체의 일종이다. 세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 극복하기 위한 인간의 작인 몸부림..

[객체지향의 사실과 오해] 1장 협력하는 객체들의 공동체

시지를 생각하라 전체는 부분의 합보다 크다. -스티븐 코비- 실세계의 모방이라는 개념은 객체지향의 기반을 이루는 철학적인 개념을 설명하는데는 적합하지만 유연하고 실용적인 관점에서 객체지향 분석, 설계를 설명하기에는 적합하지 않다. 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. ⇒ 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 전통적 관점에서의 객체 지향 커피를 주문하고 나오는 모든 과정 속에는 손님, 캐시어, 바리스타 사이의 암묵적인 협력 관계가 존재한다. 주문을 하는 손님, 주문을 받는 캐시어, 커피를 제조하는 바리스타라는 역할이 존재한다. 커피를 제공하기 위해 협력하는 과정에서 자신이 맡은 바 책임을 다한다. 커피 주문이라는 협력에 참여하는 모..