도메인과 구현

업데이트:

도메인

  • 사용자가 프로그램을 사용하는 대상 분야를 도메인이라고 한다.
  • 도메인 모델에서 모델이란 대상을 단순화 해서 표현한 것이다.
  • 모델은 복잡성을 관리하기 위해 사용하는 기본적이 도구다.
  • 하나의 세상을 만들기로 했다면 각 도메인 모델들을 정의하고 모델들의 관계를 확인한다.

도메인 모델을 작성하는 단계에서는 어떤 관계가 포함 관계이고 어떤 관계가 연관 관계인지는 중요하지않다. 초첨을 맞춰야 하는 것은 어떤 타입이 도메인을 구성하느냐와 타입들 사이에 어떤 관계가 존재하는 지를 파악함으로써 도메인을 이해하는 것이다.

설계하고 구현

  • 도메인 모델들이 정리가 되면 메시지를 선택하고 메시지를 수신할 적절한 객체(도메인 모델)을 선택한다.
  • 메시지를 수신할 객체인 도메인 모델이 선택이 되면 수행해야하는 책임을 할당받게 된것이다.
  • 할당받은 책임에 대해 스스로 할수 없는 일을 확인 후 다른 객체에게 이를 요청해야 한다.
  • 위 방법대로 각 객체들은 협력관계에서 메시지를 요청하며 통신하고 각 책임을 수행한다.

인터페이스 정리

  • 객체가 수신한 메시지가 객체의 인터페이스를 결정한다.
  • 도메인 모델을 클래스로 만들어 수신한 메시지를 메서드로 만든다.

구현

  • 클래스의 인터페이스를 식별했으므로 메서드로 구현한다.
  • 구현단계에서는 객체의 인터페이스가 변경될 수 있다.
  • 설계 단계는 스케치를 작성하는단계로 구현 자체일 수 없다.
  • 협력을 구상하는 단계에서는 시간을 오래 쏟지 말고 최대한 빨리 코드를 구현해서 설계에 이상이 없는 지 판단해야 한다.
  • 코드를 통한 피드백 없이는 깔끔한 설계를 얻을 수 없다.

감상평

지금껏 기능을 설계하고 구현할떄 항상 객체를 먼져 생상하고 프로퍼티를 구성하고 메서드를 만들면서 프로그램을 작성했다.
객체 지향이라는 생각자체를 하지 않고 이점도 살리지 못한 상태로 그저 기능 구현만을 하면서 형편없는 코드들을 작성한 것 같다.
처음 나왔던 역활, 책임, 협력이 책에서 가장 중요하시 하는 부분이다. 실제 한나의 프로그램을 설계하면서 습득해 나가야 될 것 같고
다른 객체 지향 관련된 책들도 몇권 더 읽어서 좀더 생각을 넓혀야 될 것 같다.

댓글남기기