코드로 우주평화

객체지향의 세 가지 관점(도메인, 인터페이스, 구현) 본문

나는 이렇게 본다/객체지향의 사실과 오해

객체지향의 세 가지 관점(도메인, 인터페이스, 구현)

daco2020 2022. 4. 18. 23:01

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다.설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 

 

 

 

제목 : 객체지향의 사실과 오해

저자 : 조영호

범위 : 07 함께 모으기

 

 


 

요약 정리

  • 객체지향의 세 가지 관점 
  • 개념 관점(Conceptual Perspective)
    • 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현
    • 소프트웨어는 도메인에 존재하는 문제를 해결하기 위해 개발된다.
    • 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다.
  • 명세 관점(Specification Perspective)
    • 도메인을 벗어나 개발자의 영역인 소프트웨어에 집중
    • 객체들의 책임에 초점을 맞추며 객체의 인터페이스를 바라보는 관점이다.
  • 구현 관점(Implementation Perspective)
    • 책임을 수행하는 데 필요한 코드를 작성
    • 객체의 책임을 어떻게 수행할 것인가
    • 인터페이스를 구현하는 데 필요한 속성과 메서드를 클래스에 추가한다.
  • 세 가지 관점은 동일한 클래스를 세 가지 다른 방향에서 바라보는 것을 의미한다.
  • 클래스는 세 가지 관점을 모두 수용할 수 있도록 개념, 인터페이스, 구현을 함께 드러내야 한다.
  • 객체의 인터페이스는 수정하기 어렵다. 최대한 변화에 안정적인 인터페이스를 만들기 위해서는 구현과 관련된 세부 사항이 드러나지 않게 해야 한다.
  • 도메인 개념을 객체에 적용할 수록 코드의 구조와 의미를 쉽게 유추할 수 있다. 이는 유지보수에 큰 영향을 미친다.
  • 중요한 것은 클래스를 봤을 때 명세 관점과 구현 관점으로 나눠볼 수 있어야 한다는 것이다. 구현이 인터페이스 밖으로 노출해서도 안 되고, 인터페이스와 구현을 섞어놓아도 안 된다. 

 

하고 싶은 말

  • 도메인, 인터페이스, 구현의 관점을 실제 업무에서도 적용해가면서 코드를 작성해야겠다.
  • 도메인 공부가 반드시 필요할 것 같다. 이는 생산성 측면에서 특히 중요해보인다.