본문 바로가기

Study/오프젝트

(14)
06) 메시지와 인터페이스 훌륭한 객체지향 코드를 얻기 위해서는 클래스가 아니라 객체를 지향해야 한다. 즉 협력 안에서 객체가 수행하는 책임에 초점을 맞춰야 한다. 여기서 중요한 것은 책임이 객체가 수신할 수 있는 메시지의 기반이 된다는 것이다. 1. 협력과 메시지 1.1 클라이언트-서버 모델 협력은 어떤 객체가 다른 객체에게 무언가를 요청할 때 시작된다. 메시지는 객체 사이의 협력을 가능하게 하는 유일한 매개체다. 두 객체 사이의 협력 관계를 설명하기 위해 사용하는 전통적인 메타포는 클라이언트-서버 모델이다. 협력 안에서 메시지를 전송하는 객체를 클라이언트, 메시지를 수신하는 객체를 서버라고 부른다. 가격을 계산하라(메시지) ---> Screening(클라이언트) --------------------------> Movie(서버)
05) 책임 할당하기 1. 책임 주도 설계 데이터보다 행동을 먼저 결정해라 협력이라는 문맥 안에서 책임을 결정해라 1.1 데이터보다 행동을 먼저 결정하라 물론 나도 그렇듯 객체지향에 갓 입문한 사람들은 객체의 행동이 아니라 데이터에 초점을 맞추는 실수를 한다. 하지만 책임 중심의 설계에서는 객체가 수행해야 하는 책임이 무엇인지 결정한 후 이 책임을 수행하는데 필요한 데이터는 무엇인지 결정한다. 다시 말해 책임 중심의 설계에서는 객체의 행동, 즉 책임을 먼저 결정한 후에 객체의 상태를 결정하는 것이다. 1.2 협력이라는 문맥 안에서 책임을 결정하라 책임은 객체의 입장이 아니라 객체가 참여하는 협력에 적합해야 한다. 이전에 메시지를 통해서 협력하는 것을 알아보았다. 이 메시지를 전송하는 전송자의 의도에 적합한 책임을 할당해야 한..
04) 설계 품질과 트레이드오프 이번 장에서는 데이터 중심의 설계를 살펴보고 객체지향 설계와 비교하면서 좋은 설계, 나쁜 설계에 대해 또렷하게 배워보는 시간이였다. 이전 장에서 배웠던 내용을 떠올려보자. 객체지향 설계의 핵심은 역할, 책임, 협력이다. 협력은 애플리케이션의 기능을 구현하기 위해 메시지를 주고받는 객체들 사이의 상호작용이다. 책임은 객체가 다른 객체와 협력하기 위해 수행하는 행동이고, 역할은 대체 가능한 책임의 집합이다. 책임은 객체지향 애플리케이션 전체의 품질을 결정한다. 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 만드는 활동이다. 이를 합리적인 수준으로 유지할 수 있는 중요한 원칙은 객체의 상태가 아니라 객체의 행동에 초점을 맞추는 것이다. 응집도 모듈에 포함된 배우 요소들이..
03) 역할, 책임, 협력 1. 협력 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 의미한다. 2장에서 언급했듯이 객체지향 시스템은 자율적인 객체들의 공동체다. 메시지 전송은 객체 사이의 도움을 요청하는 커뮤니케이션 수단이다. 메시지를 수신한 객체는 스스로 어떻게 처리할지는 직접 결정한다. 이것은 객체가 자신의 일을 스스로 처리할 수 있는 자율적인 존재라는 것을 의미한다. 레이싱 경주를 떠올려보자 Race는 각 차량에 대한 정보를 알지 못한다. 차량의 정보와 얼마나 움직일 수 있는지 등 차량에 관련된 정보는 Car객체가 잘 알고 있으므로 메시지를 통해 자신의 일을 위임한다. 자신이 할 수 없는 일을 다른 객체에게 위임하면 협력에 참여하는 객체들의 전체적인 자율성을 향상할 수 있다. 2. 책임 객체가 협력에 참여하..
02) 객체지향 프로그래밍 1. 클래스를 고민하기보다 객체를 고민하자 나 또한 어떤 클래스가 필요한지 고민을 한다. 객체지향은 말 그래도 객체를 지향하는 것이다. 진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞춰야 한다. 1.1 클래스를 고민하기 전에 어떤 객체들이 필요한지 고민하자 클래스는 객체를 생성하기 위한 설계도이다. 그렇기 때문에 클래스를 정의하기 위해선 객체들이 어떤 상태와 행동을 가지는지를 먼저 생각해봐야 한다. 1.2 객체를 기능을 구현하기 위해 협력하는 공동체의 일원으로 보자 객체는 서로 도움을 주거나 의존하면서 협력적인 존재다. 그러므로 객체지향적으로 생각하고 싶다면 객체를 고립된 존재로 보지 말고 협력자로서 생각하자 2. 협력 객체는 상태와 행동을 함께 가지는 복합적인 존재다. 접근 제어 ..
01) 객체, 설계 기존 객체 지향에 대해 어느 정도 알고 있다고 생각을 했다. 하지만 우테코 프리코스를 진행하면서 조금 더 학습이 필요하다고 생각이 들어 추가 학습을 하려고 한다. 이 책의 저자는 기존 토끼책으로 유명한 객체지향의 사실과 오해의 저자 조영호 님의 책이다. 토끼 책을 살까 고민을 하다가 토끼 책 보다 최신판이고 코드로 직접 확인하는 게 더욱 이해가 빠를 거 같아서 구매를 했다. 자율성을 높이자 외부의 간섭을 최대한 배제하고 메시지를 통해서만 협력하는 자율적인 객체들의 공동체를 만드는 것이 휼륭한 객체지향 설계를 만들수 있는 지름길이라 한다. 외부의 접근을 제한하고 직접 맡은 역할을 처리하는 자율적인 존재가 되도록 설계를 하자. 캡슐화를 이용해 의존성을 적절히 관리함으로써 객체 사이의 결합도를 낮추자. 캡슐화..