본문 바로가기
반응형

오브젝트18

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.
3. 역할, 책임, 협력 - 1 오브젝트 책(챕터3: 역할, 책임, 협력) 목차 협력 영화 예매 시스템 돌아보기 협력 협력이 설계를 위한 문맥을 결정한다. 챕터3 역할, 책임, 협력에서 협력에 대해 다루려고 합니다. 객체지향 패러다임 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration)이다. 객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다. 객체지향 설계의 핵심은 협력을 구성하기 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다. 어플리케이션의 기능을 구현하기 위해 1.어떤 협력이 필요하고 2.협력을 위해 어떤 역할과 책임이 필요한지 먼저 고민 구현부터 초점을 맞추면 변경하기 어렵고 유연하지 못한 코드를 낳는 원인이 된다. 역할, 책임, 협력이 제자리를 찾지 못하면.. 2022. 10. 14.
2. 객체지향 프로그래밍 진정한 객체지향 패러다임으로의 전환은 객체에 초점을 맞출 때 얻을 수 있다 클래스가 아니다. 객체지향 프로그래밍을 할 때 집중해야할 두가지 1. 어떤 클래스가 필요한지 고민하기 전에 어떤 객체들이 필요한지 고민하라 (클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것) → 시나리오를 만들자 2. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 2-1. 객체들의 모양과 윤곽 잡기 2-2. 공통된 특성과 상태를 가진 객체들을 타입으로 분류하기 2-3. 이 타입을 기반으로 클래스를 구현하기 도메인: 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야 소프트웨어는 사용자가 원하는 어떤 문제를 해결하기 위해 만들어진다. 객체지향 패러다임이 강력한 이유 : .. 2022. 10. 14.

반응형
반응형