화물 해운 시스템 소개
- 초기 요구 사항은 다음의 세 가지 기본 기능
- 고객 화물의 주요 처리상황 추적
- 화물 사전 예약
- 화물이 일정한 처리 시점에 도달할 때 자동으로 고객에게 송장을 발송
- 그림 7-1 해운 도메인의 모델을 나타내는 클래스 다이어그램
도메인 격리: 응용 기능 소개
- 세가지 응용 계층 클래스에 할당 가능
- Tracking Query(추적 질의): 특정 화물의 과거와 현재 처리 상태에 접근
- Booking Application(예약 애플리케이션): 새로운 Cargo를 등록하고 등록된 화물처리를 준비
- Incident Logging Application(사건 기록 애플리케이션): 각 Cargo의 처리 내역을 기록(Tracking Query로 찾은 정보를 제공)
ENTITY와 VALUE OBJECT의 구분
Customer(고객)
- 사용하는 사람에게 중요한 식별성을 지니고 있으므로 ENTITY에 해당
- 초기에는 ID를 수동으로 입력할 것
Cargo(화물)
- 두 개의 동일한 컨테이너를 서로 구별할 수 있어야 하므로 ENTITY에 해당
Handling Event(처리 이벤트)와 Carrier Movement(운송수단 이동)
- 개별 사건은 현실세계의 사건을 반영하며, 대개 서로 교환할 수 없으므로 ENTITY에 해당
- Carrier Movement는 해운 일정에서 획득한 코드로 식별
- Cargo ID와 완료 시간, 화물 유형을 조합해서 Handling Event를 유일하게 식별
Location(위치)
- 자동으로 생성되는 임의적이고 내부적인 식별자만으로도 충분할 것
Delivery History(배송 이력)
- 서로 대체할 수 없으므로 ENTITY에 해당
- 식별성은 그것을 소유하는 Cargo에게서 가져온 것