[객사오] Chapter 7

  • 객체지향 설계 안에 존재하는 세가지 연관된 관점
    1. 개념 관점: 도메인 안에 존재하는 개념과 개념들 사이의 관계 표현
    2. 명세 관점: 객체가 협력을 위해 무엇을 할 수 있는가에 초점
    3. 구현 관점: 실제 작업을 수행하는 코드를 작성하는 것

커피 주문 설계

  • 메뉴 항목은 메뉴판에 포함된다 = 포함관계
  • 손님 타입은 메뉴판 타입을 알고 있어야 원하는 커피를 선택할 수 있다.
    • 한 타입의 인스턴스가 다른 타입의 인스턴스를 포함하지 않지만 서로 알고 있어야 한다.
    • 연관 관계

설계하고 구현하기

  • 메시지가 객체를 선택하게 해야 한다.
    • 메시지 선택 → 메시지를 수신하기 적절한 객체 선택
    • 메시지를 수신할 객체 = 메시지를 처리할 책임
    • 객체가 수신하는 메시지는 객체가 외부에 제공하는 공용 인터페이스에 포함

인터페이스 정리

  • 객체가 수신한 메시지 → 객체의 인터페이스
  • 객체를 협력이라는 문맥에서 떼어내어 수신 가능한 메시지만 추려냄 → 인터페이스

구현

  • 인터페이스 식별 이후 메서드 구현

코드의 3가지 관점

  1. 개념 관점
    • 도메인을 구성하는 중요한 개념과 관계 반영
  2. 명세 관점
    • 클래스의 인터페이스
    • 변화에 안정적인 인터페이스 = 인터페이스를 통해 구현과 관련된 세부사항이 없어야 한다.
  3. 구현 관점
    • 클래스 내부 구현
    • 메서드의 구현과 속성의 변경은 외부 객체에게 영향을 미쳐서는 안된다.
    • 메서드와 속성이 클래스 내부로 캡슐화 되어야 한다.

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus