[객체지향의 사실과 오해] 제 7장 | 함께 모으기

Jiwoo Kim·2021년 2월 4일
0
post-thumbnail

7장 | 함께 모으기

🔥 개념, 명세, 구현 세 가지 관점이 클래스에 명확하게 드러나야 한다.
🔥 인터페이스와 구현을 분리해야 한다.


💻 객체지향 설계의 세 가지 관점

개념 관점 (Conceptual Perspective)

  • 사용자가 도메인을 바라보는 관점
  • 설계는 도메인 안에 존재하는 개념과 개념 사이의 관계

명세 관점 (Specification Perspective)

  • 소프트웨어 내 객체들의 인터페이스를 바라보는 관점
  • 객체가 협력을 위해 무엇을 할 수 있는가에 초점

구현 관점 (Implementation Perspective)

  • 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 관점
  • 객체의 책임을 어떻게 수행할 것인가에 초점

💻 코드와 세 가지 관점

코드는 세 가지 관점을 모두 제공해야 한다

  • 개념 관점: 도메인을 구성하는 중요한 개념과 관계를 클래스에 반영해야 한다.
  • 명세 관점: 변화에 탄력적인 공용 인터페이스를 만들어야 한다.
  • 구현 관점: 클래스 내부 속성과 메서드는 철저히 캡슐화되어야 한다.

도메인 개념을 참조하는 이유

  • 도메인 개념 안에서 적절한 객체를 선택하는 것은 도메인에 대한 지식을 바탕으로 코드의 구조와 의미를 쉽게 유추할 수 있게 한다.
  • 좀 더 쉽게 변화에 대응할 수 있게 됨으로써 시스템 유지보수성을 향상시킨다.

인터페이스와 구현을 분리하라

  • 명확하게 명세 관점과 구현 관점으로 나누어 볼 수 있어야 한다.
  • 명세 관점, 즉 인터페이스가 설계를 주도하고 구현을 통해 세부사항을 추상화하면 설계의 품질이 향상된다.

📝 느낀점

카페 주문 시나리오를 바탕으로 객체지향 설계 방법에 대해 배울 수 있었다. 유즈케이스에서 추상화되는 개념을 추출하고 이를 객체로 추상화한 다음, 도메인 간 협력 관계를 우선적으로 파악한다. 그 과정에서 주고 받는 메시지를 기반으로 각 도메인에서 수행해야 하는 책임을 부여하고, 인터페이스와 세부사항 구현을 한다.

졸업 프로젝트에서 했던 것도 카페에 주문을 하는 서비스였는데, 접근 절차와 방법이 정반대였다. 같은 주제로 이렇게 예시를 접할 수 있어서 마음에 잘 와 닿았고 더 쉽게 이해할 수 있었다. 부록까지 읽고 토이 프로젝트의 설계는 객체지향적으로 하도록 노력해야겠다.

0개의 댓글