전체 글154 5. 책임 할당하기 - 4 🐿️ 올바른 설계가 됐는지 코드를 통해 검증 🗣️ 구현을 통한 검증 movie의 구현을 고려하지 않고 필요한 메시지를 결정 → movie의 내부 구현을 깔끔하게 캡슐화함 public class Screeening { private Movie movie; private int sequence; private LocalDateTime whenScreened; public Reservation reserve(Custoemr customer, int audienceCount) { return new Reservation(customer, this, calculateFee(audienceCount), audienceCount); } public Money calculateFee(int audienceCount) .. 2022. 10. 14. 5. 책임 할당하기 - 3 🐿️ 3장에서 책임 주도 설계 방법에 대해 좀더 자세히 살펴봄 🗣️ 책임 할당을 위한 GRASP 패턴 1. 도메인 개념에서 출발하기 설계 시작 전에 도메인에 대한 개략적인 모습을 그려보는 것이 좋음 어떤 책임을 할당해야 할때 가장 먼저 고민해야 하는 유력한 후보는 도메인 개념 책임을 할당받을 객체들의 종류와 관계에 대한 유용한 정보를 제공할 수 있다면 충분 설계를 시작하는 것일뿐 도메인 개념들을 완벽하게 정리하는 것은 아님 빠르게 설계와 구현을 진행 도메인 모델: 실용적이면서 유용한 모델이 되게 하기 2. 정보 전문가에게 책임을 할당하라 책임 주도 설계 방식의 첫번째: 애플리케이션이 제공해야 하는 기능을 애플리케이션의 책임으로 생각하기 영화 예매 기능 질문1: 메시지를 전송할 객체는 무엇을 원하는가? →.. 2022. 10. 14. 5. 책임 할당하기 - 2 🙂 5장 내용: 🐿️ 2장에서 소개한 코드의 설계 과정을 한 걸음씩 따라가 보면서 객체에 책임을 할당하는 기본적인 원리를 살펴보기 🗣️ 책임 주도 설계를 향해 1. 데이터보다 행동을 먼저 결정하라 객체에게 중요한 것은 데이터가 아니라 외부에 제공하는 행동이다. 책임 중심의 설계에서는 객체의 행동, 즉 책임을 먼저 결정한 후에 객체의 상태를 결정한다. 객체지향 설계에서 가장 중요한 것은 적절한 객체에게 적절한 책임을 할당하는 능력이다. 객체에게 어떤 책임을 할당해야하는가는 협력에서 찾을 수 있다 2. 협력이라는 문맥 안에서 책임을 결정하라 객체에게 적절한 책임을 할당하기 위해서는 협력을 고려 협력을 고려함에 있어 적절한 책임은 클라이언트 관점에서 적절한 책임 올바른 객체지향 설계는 메시지(클라이언트가 전송.. 2022. 10. 14. 5. 책임 할당하기 - 1 목차 책임 주도 설계를 향해 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 책임 주도 설계 책임 할당을 위한 GRASP 패턴 도메인 개념에서 출발하기 정보 전문가에게 책임을 할당하라 높은 응집도와 낮은 결합도 창조자에게 객체 생성 책임을 할당하라 구현을 통한 검증 DiscountCondition 개선하기 타입 분리하기 다형성을 통해 분리하기 변경으로부터 보호하기 Movie 클래스 개선하기 변경과 유연성 책임 주도 설계의 대안 메서드 응집도 객체를 자율적으로 만들자 책임에 초점을 맞춰서 설계할 떄 직면하는 가장 큰 어려움은 어떤 객체에게 어떤 책임을 할당할지를 결정하기가 쉽지 않다는 것이다. 따라서 올바른 책임을 할당하기 위해서는 다양한 관점에서 설계를 평가할 수 있어야 한다. 🍀.. 2022. 10. 14. 4. 설계 품질과 트레이드오프 목차 데이터 중심의 영화 예매 시스템 데이터를 준비하자 영화를 준비하자 설계 트레이드오프 캡슐화 응집도와 결합도 데이터 중심의 영화 예매 시스템의 문제점 캡슐화 위반 높은 결합도 낮은 응집도 캡슐화를 지켜라 자율적인 객체를 향해 스스로 자신의 데이터를 책임지는 객체 캡슐화 위반 하지만 여전히 부족하다 높은 결합도 낮은 응집도 데이터 중심 설계는 객체의 행동보다는 상태에 초점을 맞춘다 데이터 중심 설계의 문제점 데이터 중심 설계는객체를 고립시킨 채 오퍼레이션을 정의하도록 만든다 🍀목표 데이터 중심 설계를 통해 책임 주도 설계가 얼마나 중요한지를 알기 객체지향 설계의 핵심은 역할, 책임, 협력이다. 역할: 대체 가능한 책임의 집합이다. 책임: 객체가 다른 객체와 협력하기 위해 수행하는 행동이다. 협력: 애플.. 2022. 10. 14. 3. 역할, 책임, 협력 - 4 코드스피츠 3강 강의 코드스피츠 83 오브젝트 - 3회차 객체망과 객체간 통신 설계란 구동하고 있는 코드를 어떻게 배치할 것인가의 문제이다. 객체 : 내부상태는 캡슐화 외부소통은 메소드(정보은닉) 객체끼리 메세지를 주고 받는다. 형(type)으로 개발해야 객체지향으로 쓴다 도메인을 객체망의 협력의 메세지망으로 표현할 수 있는가가 관건 순환하는 망이 생기면 안됨. 비선형 망이 생기게 해야함 의존성은 제거할 수 없다. 의존성은 필요하니까 만든것 의존성을 심플렉스로 만드는 것이 중요 단방향으로 만드는 것이 중요 객체설계 난점 인터페이스의 그룹화 도메인A관점 도메인B관점 네트웍관점 모델링관점 여러 관점을 수용하는 객체 다양한 객체 알려진 기본 설계요령 SOLID 원칙 SRP Single Responsibilit.. 2022. 10. 14. 3. 역할, 책임, 협력 - 3 오브젝트 책(챕터3: 역할, 책임, 협력) 목차 역할 역할과 협력 유연하고 재사용 가능한 협력 객체 대 역할 역할과 추상화 배우와 배역 챕터3 역할, 책임, 협력에서 역할에 대해 다루려고 합니다. 역할 역할과 협력 객체는 협력이라는 주어진 맥락 안에서 특정한 목적을 갖게 된다. 객체의 목적은 협력 안에서 객체가 맡게 되는 책임의 집합으로 표시된다. 역할: 객체가 어떤 특정한 협력 안에서 수행하는 책임의 집합 협력을 모델링할 때는 특정한 객체가 아니라 역할에게 책임을 할당한다고 생각하는 것이 좋다. → 역할에 특별한 이름을 부여하지는 않았지만 실제로는 익명의 역할을 찾고 그 역할을 수행할 수 있는 객체를 선택하는 방식으로 설계가 진행됐다고 생각하는 것이 자연스럽다. 유연하고 재사용 가능한 협력 역할이 중요.. 2022. 10. 14. 3. 역할, 책임, 협력 - 2 오브젝트 책(챕터3: 역할, 책임, 협력) 목차 책임 책임이란 무엇인가 책임 할당 책잉 주도 설계 메시지가 객체를 결정한다 행동이 상태를 결정한다 챕터3 역할, 책임, 협력에서 책임에 대해 다루려고 합니다. 책임 책임이란 무엇인가 책임: 협력에 참여하기 위해 객체가 수행하는 행동 객체의 책임은 객체가 ‘무엇을 할 수 있는가’와 ‘무엇을 알고 있는가’로 구성된다. 하는 것 객체를 생성하거나 계산을 수행하는 등의 스스로 하는 것 다른 객체의 행동을 시작시키는 것 다른 객체의 활동을 제어하고 조절하는 것 아는 것 사적인 정보에 관해 아는 것 관련된 객체에 관해 아는 것 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것 협력 안에서 객체에게 할당한 책임이 외부의 인터페이스와 내부의 속성을 결정한다. 중요한 .. 2022. 10. 14. 이전 1 ··· 14 15 16 17 18 19 20 다음