관리 메뉴

생각해보기

객체지향 사실과 오해 정리 -6- 본문

객체지향

객체지향 사실과 오해 정리 -6-

정한_s 2021. 11. 9. 12:28

객체지향에서는 사용자에게 제공할 '기능'과 기능을 담을 안정적인 '구조'가 있어야 한다. 기능은 사용자가 자신의 목표를 달성하기 위해 사용할 수 있는 시스템의 서비스다. 구조는 시스템의 기능을 구현하기 위한 기반이다.

 

기능보다 구조를 기반으로 모델을 구축하는 것이 좀 더 범용적이고 이해하기 쉽고 변경에 안정적이다. 사람들의 요구사항은 계속 변하기 때문에 모델이 제공하는 기능 역시 지속적으로 변할 수밖에 없다. 따라서 기능 기반의 모델은 재사용이 불가능하고 변경에 취약하다. 하지만 안정적인 구조 기반의 모델은 범용적이고 변경에 유연하게 대처할 수 있다.

 

일반적으로 기능을 수집하고 표현하기 위한 기법을 유스케이스 모델링이라고 하고 구조를 수집하고 표현하기 위한 기법을 도메인 모델링이라고 한다.

 

도메인 모델링은 도메인에 대한 사용자 모델, 디자인 모델, 시스템 이미지를 포괄하도록 추상화한 모델이다. 도메인이란 사용자들이 관심을 가지고 있는 특정 분야나 주제를 말한다.  사용자 모델은 사용자가 제품에 대해 가지고 있는 개념이고, 디자인 모델은 설계자가 마음속에 갖고 있는 시스템에 대한 개념이다. 시스템 이미지는 최종 제품이다. 우리는 디자인 모델을 기반으로 만든 시스템 이미지가 사용자 모델을 정확히 반영하도록 노력해야 한다.

 

유스케이스 모델링은 사용자와 시스템 사이의 상호작용을 일련의 이야기 흐름으로 표현하는 것이다. 이를 통해 우리는 시스템의 기능적인 요구사항들을 이야기 형식으로 묶을 수 있다. 따라서 각 기능이 유기적인 관계를 지닌 체계를 이룰 수 있게 한다

 

사용자와 시스템은 상호작용하며 시스템은 사용자가 원하는 기능을 수행해야 할 책임이 있다. 시스템은 이러한 책임들을 더 작은 크기의 객체들의 협력을 통해 구현한다. 이때 객체들은 안정적인 구조로 책임과 역할을 할당해야 한다. 마지막으로 객체의 책임에 대한 행동을 구현함으로써 시스템의 기능을 완성한다.

 

객체지향 설계 안에서 존재하는 세 가지 상호적으로 연관된 관점이 있다. 이는 개념 관점, 명세 관점, 구현 관점이라고 부른다. 

 

개념 관점에서 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현한다. 이 관점은 사용자가 도메인을 바라보는 관점을 반영한다. 따라서 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다.

 

명세 관점은 사용자의 영역인 도메인을 벗어나 개발자의 영역인 소프트웨어로 초점을 옮긴 것이다. 도메인이 아닌 객체들의 책임에 초점이 맞춘다. 즉, 객체의 인터페이스를 바라본다. 

 

구현 관점은 객체의 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 것이다. 인터페이스를 구현하는 데 필요한 속성과 메서드를 클래스에 추가한다.

 

클래스는 이러한 세 가지 관점을 모두 수용할 수 있도록 개념, 인터페이스. 구현이 함께 들어내야 한다. 코드 안에서 세가지 관점을 쉽게 식별할 수 있도록 분리해야 한다. 인터페이스와 구현을 분리하는 것은 매우 중요하다. 명세 관점은 클래스의 안정적인 측면을 드러내야 하며 구현 관점에서는 클래스의 불안정한 측면을 드러내야 한다. 

Comments