책임에 초점을 맞춰야 한다!!! 하지만 이때 우리가 마주하는 문제점은 어떤 객체에게 어떤 책임을 할당할 지 결정하기가 쉽지 않다는 것이다. 이번 장에선 GRASP패턴을 통해 응집도와 결합도, 캡슐화와 같은 다양한 기준에 따라 책임을 분배하고 결과를 트레이드오프할 수 있는 기준을 배운다. 00. 선요약 01. 책임 주도 설계를 향해 책임주도 설계를 위해 지켜야 할 두 가지 원칙 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 데이터보다 행동을 먼저 결정하라 앞서 데이터 중심 설걔를 했을 때 했던 질문의 순서를 바꿔야한다 이 객체가 수행해야 하는 책임은 무엇인가? 이 책임을 수행하는 데 필요한 데이터는 무엇인가? 즉 책임 중심의 설계에서는 객체의 행동(책임)을 먼저 결정한 후 객체의 ..
설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다. 훌륭한 설계를 하면 합리적 비용 안에서 변경을 수용할 수 있는 구조를 만들 수 있다. 00. 선요약 객체지향 설계란 올바른 객체에 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동. 객체의 상태가 아니라 행동에 초점을 맞추면 결합도와 응집도를 합리적 수준으로 유지할 수 있다. 캡슐화란 변경 가능성이 높은 부분을 내부로 숨기는 추상화 기법. 변경될 수 있는 것은 모두 캡슐화 해야 한다. 01. 데이터 중심의 영화 예매 시스템 객체의 상태는 구현에 속한다. 구현은 불안정하기 때문에 변하기 쉽다. (인터페이스, 추상클래스와 이것들을 일반화한 클래스, 확장한 클래스를 생각하면 이해가 갈 것임.) 상태를 중심으로 ..
00. 선요약 객체지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration) 2장에서 알아본 다양한 기술적 매커니즘이 모여 유연하고 재사용 가능한 협력을 만들 수 있는 기반을 제공한다. 객체는 상태와 행동을 함께 캡슐화 하는 실행단위. 객체의 상태와 행동은 객체가 참여하고 있는 협력을 통해 정함. 다양한 객체들이 특정 기능을 구현하기 위해 메시지를 주고받으며 상호작용을 하는 것을 협력이라 함. 객체가 협력에 참여하기 위해 수행하는 로직은 책임이라 부르고 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성 함. 01. 협력 요구사항을 구현해 기능을 제공하기 위해선 다양한 객체들이 참여하는 협력을 구축해야 함. 객체지향 원칙을 ..
00. 선요약 객체지향이란 말 그대로 객체를 지향한다는 것. 클래스가 아닌 객체에 초점을 맞춰야 한다. 객체의 경계를 구분(access modifier 사용하여)함으로서, 객체에 자율성을 보장할 수 있다. 추상화와 구체화의 트레이드오프를 잘 계산하고 상황에 따라 적절한 방식을 선택해야 한다. 상황에 따라 상속과 합성을 적절히 선택해서 사용해야 한다. 01. 영화예매 시스템 요구사항 살펴보기 사용자는 영화 예매 시스템을 이용해 쉽고 빠르게 보고싶은 예매를 할 수 있다. 용어의 정의 영화 상영 할인액을 결정하는 규칙 할인 조건 할인 규칙 예시 영화 할인정책 할인조건 아바타 금액 할인정책 할인액 800원 순번조건 - 조조상영 순번조건 - 10회 상영 기간조건 - 월 10:00 - 12:00 상영 시작 기간조건..
- Total
- Today
- Yesterday