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