설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다. 훌륭한 설계를 하면 합리적 비용 안에서 변경을 수용할 수 있는 구조를 만들 수 있다. 00. 선요약 객체지향 설계란 올바른 객체에 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동. 객체의 상태가 아니라 행동에 초점을 맞추면 결합도와 응집도를 합리적 수준으로 유지할 수 있다. 캡슐화란 변경 가능성이 높은 부분을 내부로 숨기는 추상화 기법. 변경될 수 있는 것은 모두 캡슐화 해야 한다. 01. 데이터 중심의 영화 예매 시스템 객체의 상태는 구현에 속한다. 구현은 불안정하기 때문에 변하기 쉽다. (인터페이스, 추상클래스와 이것들을 일반화한 클래스, 확장한 클래스를 생각하면 이해가 갈 것임.) 상태를 중심으로 ..
00. 선요약 객체지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration) 2장에서 알아본 다양한 기술적 매커니즘이 모여 유연하고 재사용 가능한 협력을 만들 수 있는 기반을 제공한다. 객체는 상태와 행동을 함께 캡슐화 하는 실행단위. 객체의 상태와 행동은 객체가 참여하고 있는 협력을 통해 정함. 다양한 객체들이 특정 기능을 구현하기 위해 메시지를 주고받으며 상호작용을 하는 것을 협력이라 함. 객체가 협력에 참여하기 위해 수행하는 로직은 책임이라 부르고 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성 함. 01. 협력 요구사항을 구현해 기능을 제공하기 위해선 다양한 객체들이 참여하는 협력을 구축해야 함. 객체지향 원칙을 ..
요새 '오브젝트'라는 책을 다시 보고 있는데, 응집도와 결합도에 관한 내용이 나온다. 대강 LOW COUPLING(낮은 결합도)와 HIGH COHESION(높은 응집도)를 고려해 가며 설계를 하면 변경에 유연한 설계를 할 수 있다는 내용 이었다. 글로는 잘 이해 했다 생각했지만 실제로 어떻게 적용해볼까 고민이 있었는데, 마침 적절한 경험을 한 것 같아서 기록해두려 한다. 예시 상담신청이라는 도메인이 있고, 이번에 타임세일이라는 도메인을 추가하게 되었다. 유저는 상담신청을 할 수 있고, 타임세일을 통해 은 특정 시간에 싼 가격으로 상담신청을 할 수도 있다. @Entity public class Consultation { @Id Long id; ... @ManyToOne @JoinColumn(name = "..
00. 선요약 객체지향이란 말 그대로 객체를 지향한다는 것. 클래스가 아닌 객체에 초점을 맞춰야 한다. 객체의 경계를 구분(access modifier 사용하여)함으로서, 객체에 자율성을 보장할 수 있다. 추상화와 구체화의 트레이드오프를 잘 계산하고 상황에 따라 적절한 방식을 선택해야 한다. 상황에 따라 상속과 합성을 적절히 선택해서 사용해야 한다. 01. 영화예매 시스템 요구사항 살펴보기 사용자는 영화 예매 시스템을 이용해 쉽고 빠르게 보고싶은 예매를 할 수 있다. 용어의 정의 영화 상영 할인액을 결정하는 규칙 할인 조건 할인 규칙 예시 영화 할인정책 할인조건 아바타 금액 할인정책 할인액 800원 순번조건 - 조조상영 순번조건 - 10회 상영 기간조건 - 월 10:00 - 12:00 상영 시작 기간조건..
- Total
- Today
- Yesterday