목록Book (7)
재 현

책을 다 읽고서 혼자서 만들어본 객체 지향적 프로그래밍 고객은 음식점에 들어간다. 메뉴판을 보고 음식을 정한 후, 셰프에게 주문을 한다. 셰프는 한식, 중식, 양식 셰프들이 있다. 고객이 주문한 요리에 맞는 셰프가 요리를 시작한다. 요리가 끝나면 고객에게 제공한다. 1. 유스케이스 음식을 주문하라 -> 시스템의 책임으로 바꿔준다. 2. 시스템은 이 거대한 책임을 나눌 객체를 선별한다 고객은 메뉴판을 보고 주문을 할 책임이 있다. 메뉴판은 고객에게 메뉴항목을 알려줄 책임이 있다 셰프는 주문을 받아 요리를 줄 책임이 있다 3. 객체들을 선별했으면 관계를 정의해야 한다 요리는 메뉴판에 포함되어 있으니 포함관계로 정의한다. 손님은 메뉴판을 알지만 포함은 아니므로 연관관계이다. 셰프는 손님을 알지만 포함은 아니므..
기능이 아니라 구조 중심 설계 기능 : 사용자를 위해 무엇을 할 수 있는 지, 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현 구조 : 제품의 형태가 어떠해야 하는 지, 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현한다 훌륭한 기능 + 훌륭한 구조 = 훌륭한 소프트웨어 좋은 설계는 사용자가 만족할 수 있는 기능을 제공하는 동시에 예측 불가능한 요구사항 변경에 유연하게 대처할 수 있는 안정적인 구조를 제공하는 설계다 안정적인 재료 : 구조도메인 모델 도메인이란 사용자가 프로그램을 사용하는 대상 분야를 일컫는다. 모델은 대상을 추상화한 것이다.→ 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태이다 어플리..
'어떻게'가 아니라 '무엇'을 자율적인 책임의 특징은 객체가 어떻게 가 아니라 무엇을 해야 하는가를 설명한다는 것이다. 객체가 자신에게 할당된 책임을 수행하도록 만드는 것은 외부에서 전달되는 요청이다. 객체가 다른 객체에게 접근할 수 있는 유일한 방법은 요청을 전송하는 것일 뿐이고, 우리는 이것을 메시지라고 부른다. 메시지와 메서드 메시지 하나의 객체는 메시지를 전송함으로써 다른 객체에 접근한다. 메시지 전송은 수신자와 메시지의 조합이다. 메시지 전송은 수신자, 메신지 이름, 인자(추가정보)의 조합이 된다. ex) 모자장수. 증언하라(어제, 왕국) 객체가 수신할 수 있는 메시지의 모양이 객체가 수행할 책임의 모양을 결정한다 메시지를 처리하기 위해 책임을 수행하는 방법은 외부의 다른 객체가 볼 수 없는 객..
협력 요청하고 응답하며 협력하는 사람들 협력은 다른사람에게 요청을 할 때 시작되며, 응답으로 마무리 된다. 객체지향의 세계는 동일한 목적을 위해 협력하는 객체들의 공동체이다. 재판 속의 협력 장면을 한 번 들여다보자. 왕, 하얀토끼, 모자 장수 등 다양한 인물들은 재판이라는 동일한 목적을 위해 협력하고 있다. 누군가 왕에게 재판을 요청 왕이 토끼에게 증인을 부르라 요청 토끼는 모자장수에게 증인석으로 입장할 것으로 요청 모자장수는 증인석에 입장함으로써 응답, 토끼장수는 이로써 왕의 요청에 응답 왕은 모자장수에게 증언을 요청 모자장수는 증언을 함으로써 응답 요청은 책임을 정의한다. 왕이 재판을 요청 받은 이유는, 재판을 수행할 의무가 있고 이에 대한 지식이 있어서다. 토끼가 요청받은 이유는, 목격자에 대해 ..