Object Design & Designing for Visibility
이번 포스트는 Larmen 책의 Chapter 18~19 부분인 Object Designing 과 Designing for VIsibility 에 대해 다룬다.
Object Design
Use Case Realization (UCR)
- 특정 Use Case의 동작을 객체 지향적으로 구체화한 것
- 시스템이 요구사항을 어떻게 클래스와 메시지 흐름을 통해 수행하는지를 보여줌
- 구성요소
- 설계 클래스들 : 도메인 모델의 클래스 혹은 새롭게 도입된 클래스
- 메시지 흐름 : 어떤 객체가 어떤 객체에 어떤 메시지를 보내는가
- 시나리오 기반 : 구체적인 시나리오를 바탕으로 그려짐
- SSD의 시스템 연산 = 설계 상의 controller method 호출
- 실제 설계에서 Controller 객체에게 처음 보내는 메시지로 매핑
- Operation Contract는 Use Case와 설계 사이의 다리 역할
- 설계자, 개발자, 테스터 모두에게 명확한 기준선을 제공
Designing for Visibility
Visibility
- 객체 A가 객체 B를 참조할 수 있는가?
- 객체 간의 접근 가능성에 대한 개념으로 객체 A가 객체 B에게 메시지를 보내기 위해서는 B가 A에게 보여야(visible) 한다.
- 객체 간 메시지 송신이 가능하기 위해 visibility가 선행되어야 함.
- 네 가지 유형
- Parameter Visibility: B가 A의 메서드 파라미터로 들어올 때 (의존)
- Local Visibility : B가 A의 메서드 안에서 지역 변수로 선언될 때 (의존)
- Attribute Visibility : B가 A의 멤버 변수일 때 (연관)
- Global Visibility : B가 전역 객체로 어디서든 접근 가능할 때(연관)
Mapping Designs to Code
- 설계 시 작성한 Interaction Diagram, DCD은 코드 생성의 입력자료로 사용됨.
- 구현 모델에는 다음이 포함된다.
- 소스코드, 데이터베이스, UI 파일 등
Class Diagram -> Class Definitions
Interaction Diagram -> Method Bodies
- 다대일 관계 -> Java 에서는 List or Map 같은 컬레션 객체를 통해 구현
- 구현 순서 : 의존성이 적은 클래스부터 구현하고 테스트하는 것이 바람직하다 .