1 분 소요

이번 포스트는 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 같은 컬레션 객체를 통해 구현
  • 구현 순서 : 의존성이 적은 클래스부터 구현하고 테스트하는 것이 바람직하다 .