본문 바로가기

책 정리/오브젝트4

[책 오브젝트] CHAPTER4 - 설계 품질과 트레이드오프 데이터 중심 영화 예매 시스템 (이렇게 하면 안됨) 해당 챕터에서 데이터 중심으로 설계를 진행하면서 나쁜 예시를 보여준다 객체 내부에 저장되는 데이터를 기반으로 분할한다 ex) Movie.class public class Movie { private String title; private Duration runningTime; private Money fee; private List discountConditions; private MovieType movieType; private Money discountAmount; private double discountPercent; } 예약 관련 class public class ReservationAgency { public Reservation reser.. 2023. 6. 18.
[책 오브젝트] CHAPTER3 - 역할, 책임, 협력 객체지향의 핵심 역할 책임 협력 협력 객체 간 메세지 전송 - 다른 객체에게 도움을 요청 메서드를 실행헤 요청에 응답 캡슐화 → 객체의 자율성 상승 협력이 설계를 위한 문맥을 결정함 객체의 행동을 결정하는 것은 협력임 책임 협력에 참여하기 위해 객체가 수행하는 행동임 하는 것과 아는 것으로 나뉘어짐 하는 것: 객체 생성, 계산 수행, 다른 객체 활동 제어 등 아는 것: 사적인 정보, 관련된 객체에 관해 아는 것 책임 할당 책임수행에 있어 필요한 정보를 가장 잘 아는 전문가(INFORMATION EXPERT)에게 책임을 할당 → 객체 자율성 상승 협력에 필요한 메세지 찾기 → 적절한 객체 선택 (반복) 메세지가 객체를 결정함 장점 최소한의 인터페이스 추상적인 인터페이스 객체의 상태(x) 행동에 집중해야함 .. 2023. 6. 18.
[책 오브젝트] CHAPTER 2 - 객체지향 프로그래밍 객체지항의 본질 어떤 Class가 필요한 지, 어떤 Method가 필요한지(X) 어떤 객체가 어떤 상태와 행동을 가지는지 설정 → 더 단순하고 깔끔한 설계 접근 제어의 필요성 Why? 외부 간섭 최소화 → 객체에게 자율성 부여 외부에서는 객체에게 간섭, 직접 개입 x 객체에게 요청, 객체가 결정해야함 인터페이스와 구현의 분리 (핵심 원칙) 구현 은닉 역할: 클래스 작성자, 클라이언트 프로그래머 내부 외부를 명확하게 경계지음 → 내부 구현 은닉, 의도치 않은 부분 접근 방지 프로그래머 입장에선 알아야할 부분 감소, 작성자 입장에선 구현 변경 폭 상승 Money class (custom) 내부적으로 하나의 인스턴스 변수(BigDecimal)만 포함 Long 타입으로 처리하지 않은 이유? → 개념을 명시적으로.. 2023. 6. 18.
[책 오브젝트] CHAPTER 1 - 객체, 설계 좋은 설계란? 소프트웨어 모듈의 목적 (로버트 마틴) 동작해야함 간단한 작업으로도 변경이 가능해야함 (저자가 강조하는 부분) 이해하기 쉬워야함 (두번째로 강조) 좋지 않은 설계(entry method 확인) public class Theater { private TicketSeller ticket Seller; public Theater(TicketSeller ticketSeller){ this.ticketSeller = ticketSeller; } public void enter(Audience audience){ if (audience.getBag().hasInvitation()){ Ticket ticket = ticketSeller.getTicketOffice().getTicket(); audien.. 2023. 6. 18.