Object 6

Object 6장

6. 메시지와 인터페이스 객체지향 프로그래밍에 대한 가장 큰 오해 : 애플리케이션이 클래스의 집합 클래스 : 개발자가 직접 만지고, 실험하고, 고쳐볼수 있는 실제적이고 구체적인 도구 객체가 구행하는 책임에 초점을 맞춰야한다 -> 애플리케이션은 클래스로 구성되어 있지만 메시지로 정의된다 01 협력과 메시지 클라이언트-서버 모델 메시지를 전송한 객체(클라이언트)의 요청에 대해 수신한 객체(서버)가 응답하는 구조 협력에 참여하는 객체들은 동시에 클라이언트와 서버의 역할을 수행하는 것이 일반적임 두 가지 메시지 집합 객체가 수신하는 메시지의 객체 외부의 객체에게 전송하는 메시지 집합 메시지와 메시지 전송 메시지 (message) : 객체들이 협력하기 위해 사용할 수 있는 유일한 의사소통 수단 operation ..

Object 2020.07.23

Object 5장

05 책임 할당하기 데이터 중심 설계는 행동보다 데이터를 먼저 결정한다 협력이라는 문맥을 벗어나 고립된 객체의 상태에 초첨을 맞추기 때문에 캡슐화를 위반하기 쉬움 요소들 사이의 결합도가 높아짐 코드 변경이 어려워짐 책임을 초점을 맞춰서 설계할 때 직면하는 가장 큰 어려움 - 어떤 책임을 객체에게 할당할 것인가 GRASP 패턴 응집도와 결합도, 캡슐화, 책임할당과 트레이드오프의 기준 제공 01 책임 주도 설계를 향해 책임 중심의 설계로 전환을 위해 데이터 보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 데이터보다 행동을 먼저 결정하라

Object 2020.07.22

Object 4장

04 설계 품질과 트레이드오프 객체지향 설계 = 역할, 책임, 협력 협력 : 애플리케이션 기능구현을 위해 메시지를 주고 받는 객체들의 상호작용 책임 : 객체가 다른 객체와 협력하기 위해 수행하는 행동 역할 : 대체 가능한 책임의 집합 책임 주도 설계 이 중 책임이 제일 중요 : 적절하게 할당되지 않으면 원활한 협력도 기대 x, 역할도 협력과 조화 x 올바른 객체지향 설계 : 낮은 결합도, 높은 응집도, 올바른 책임 할당 데이터 중심의 영화 예매 시스템 객체지향 설계는 두 가지 방법을 이용해서 시스템 객체로 분리 가능 상태를 분활의 중심축 사용 : 데이터 중심 책임을 분활의 중심축 사용 : 객체의 행동에 초점 (더 좋은 방법)) 상태 = 데이터 책임을 분활의 중심축으로 사용해야 더 좋은 설계 객체의 상태는..

Object 2020.07.21

Object 3장

03 역할, 책임, 협력 지연 바인딩 메커니즘으로 구현한 다형성 코드 재사용을 위해 상속 < 합성 (composition) 01 협력 영화 예매 시스템 돌아보기 객체지향 원칙을 따르는 제어 흐름은 : 하나의 객체에 의해 통제 x 객체들의 요청/응답으로 분배된 로직 수행 협력 : 기능구현을 위해 수행하는 상호작용 책임 : 협력에 참여하기 위해 수행하는 로직 역할 : 객체들이 협력 안에서 수행하는 책임들의 행동의 모음 협력 객체간의 협력은 메시지 전달로 이루어짐 (method) 메시지를 받데 어떻게 응답할지는 객체가 선택 자신이 가진 정보를 가지고 액션을 취함으로 결합은 느슨하게 만듬 캡슐화를 통해 하나의 객체가 다른 객체에게 줄 수 있는 여파를 제어할 수 있음 협력이 설계를 위한 문맥을 결정한다 섬인 객체..

Object 2020.07.20

Object 2장

Object 2장 영화 예매 시스템 만들기 요구사항 살펴보기 이번 장에서 소개할 예제는 온라인 영화 예매 시스템이다. 앞으로의 설명을 위해 &#39;영화&#39;와 &#39;상영&#39;이라는 용어를 구분하자. 영화 영화에 대한 기본 정보를 표현 제목, 상영시간, 가격 정보와 같이 영화가 가지고 있는 기본적인 정보 상영 실제로 관객들이 영화를 관람하는 사건을 표현 상영 일자, 시간, 순번 등을 가리키기 위함 두 용어의 차이가 중요한 이유는 사용자가 실제로 예매하는 대상은 영화가 아니라 상영이기 때문이다. 특정한 조건을 만족하는 예매자는 요금을 할인 받을 수 있다. 영화 할인액을 결정하는 두 가지 규칙이 조건이 있는데 할인 조건(discount condition)과 할인 정책(discount policy)..

Object 2019.12.10

Object 1장

Object: 코드로 이해하는 객체지향 1장 클린 소프트웨어: 애자일 원칙과 패턴, 그리고 실천 방법 소프트웨어가 가져야 하는 세 가지 기능 실행 중에 제대로 동작하는 것 변경을 위해 존재하는 것 코드를 읽는 사람과 의사소통 하는 것 변경에 취약한 코드 의존성은 변경에 대한 영향을 암시한다. 의존성이라는 말 속에는 어떤 객체가 변경될 때 그 객체에게 의존하는 다른 객체도 함께 변경될 수 있다는 사실이 내포돼 있다. 그렇다고 해서 객체 사이의 의존성을 완전히 없애는 것이 정답은 아니다. 객체지향 설계는 서로 의존하면서 협력하는 객체들의 공동체를 구축하는 것이다. 따라서, 애플리케이션을 구현하는데 있어 최소한의 의존성을 유지하고 불필요한 의존성을 제거하는 것이다. 캡슐화와 응집도 밀접하게 연관된 작업만을 수..

Object 2019.12.10