롤 클래스 모델

Role Class Model

컴퓨터 과학에서 롤 클래스 모델(Role Class Model)은 Francis G가 기술한 역할 분석[1] 패턴입니다(발명되지는 않았습니다).Mossé는 모델 [3]역할에 대한 그의 기사에서.역할 클래스 패턴은 클래스에 여러 역할을 수행하고 역할 특성을 전용 클래스에 포함시킬 수 있는 기능을 제공합니다.

우리 사회에서, 우리가 그것을 만들면서, 역할은 어디에나 있습니다.팀워크를 통해 무언가를 창조하려는 사람은 누구나 역할이 있다.영화 촬영에서는 영화감독, 제작자, 배우, 연극작가 등 다양한 사람들이 영화 제작에 참여한다.심지어 우리의 국가 조직들도 다양한 역할을 기반으로 한다.공화국에는 대통령, 장관, 대리 등이 있습니다.

이러한 상황에 대처하는 것은 객체 지향 분석에서 가장 많이 발생하는 문제 중 하나입니다.프란시스 G.Mossé는 대부분의 역할 관련 문제를 해결하기 위해 사용할 수 있는 5가지 역할 분석 패턴(역할 상속, 연관성 역할, 역할 클래스, 일반 역할 클래스 및 연관성 클래스 역할)을 확인했습니다.이러한 시스템은 모두 다양한 수준의 제약, 유연성 또는 파워를 갖추고 있으며, 이를 통해 대부분의 역할 관련 문제를 완벽하게 해결할 수 있습니다.

의도

클래스가 동시에 하나 이상의 역할을 수행할 수 있는 모델입니다.Francis Mossé가 모델링[3] 역할에서 정의한 역할은 클래스가 특정 맥락에서 가질 수 있는 목적의 개념입니다.

맥락

다음으로 예를 제시하겠습니다.

많은 사람들이 각자 다른 역할을 가지고 영화를 작업한다.다른 개념의 차이에서, 한 사람은 한 가지 역할에 국한되지 않는다.한 명은 감독이자 영화 속 인물이 될 수 있다.그러한 개념에 대한 모델링 역할은 하나의 클래스가 단일 역할 이상의 역할을 수행할 수 있어야 한다.

상속을 사용하여 역할을 개념화하는 솔루션(cf. 상속 역할 모델)은 개인이 단일 역할만 수행할 수 있기 때문에 불가능합니다.아래 그림 1에서 볼 수 있듯이, 상속 롤 모델은 영화 속에서 인물인 인물이 연기하고 있다고 말합니다.하지만 그 역할을 맡은 사람이 감독이라고 말할 수 있는 방법은 없어요.왜냐하면 상속은 인물을 특정인이 아닌 일반인으로 만들기 때문입니다.

그림 1: 필름의 맥락에서 사용되는 상속 역할 모델(UML 메타 모델 표현 사용)

문제

컨텍스트에서 설명한 바와 같이 상속을 사용하여 여러 역할을 수행하는 것은 고려할 수 없습니다. 이러한 컨텍스트에서는 클래스가 동시에 두 개의 역할을 수행할 수 없기 때문입니다(상속 역할 모델 참조).

하나의 클래스가 둘 이상의 개념 또는 역할로 간주될 수 있고, 이러한 개념 중 하나에 고유한 속성을 지정할 수 있는 모델을 갖는 것이 기대됩니다.

솔루션

앞의 문제에 대한 해결책은 인물과 영화 사이에 연관성을 만들 수 있는 연관성 역할 모델을 사용하는 것일 수 있습니다.그러나 이러한 경우 각 역할에 대한 특정 정보를 저장할 수 없습니다.역할 클래스 모델은 역할별 속성 및 필요에 따라 클래스 조작과의 연관성을 유연하게 제공합니다.

그림 2: 롤 클래스 메타 모델(UML 메타 모델 표현 사용)

이 메타 모델(그림 2 참조)은 클라이언트BaseClass를 링크하는 요소와 같은 역할 클래스를 보여줍니다.클라이언트는 역할과 대화하는 것은 기본 클래스 자체와 대화하는 것과 같지만, 그 관점에서 보면 기대하는 것입니다.클래스로서의 역할을 갖는 장점은 속성을 결합할 수 있다는 것입니다.

역할 패턴이 흥미로운 또 다른 상황은 다음과 같습니다.

그림 2.1: 역할 패턴이 없는 계약자

그러면 계약서 소유자로서 그 사람이 특정한 속성을 가지고 있다는 것을 알게 됩니다.홀더 UML 역할은 이러한 특정 속성을 가진 전용 클래스 ContractHolder가 됩니다.이 경우 Person과 Contract에 근접한 배수는 항상 1입니다.즉, 계약과 개인 간의 각 연결에 대해 하나의 계약 소유자 개체가 있음을 의미합니다.

그림 2.2: 역할 패턴이 있는 계약서 소유자

실제의 예

영화

그림 3: 롤 클래스 모델의 제7조 적용(개요)

실제 예에서 롤 클래스 모델의 단순한 적용은 7번째 아트(그림 3 참조)인 촬영에 있습니다.이 예술은 창작(영화)과 그것을 창조하는 사람들을 포함한다.영화 속 인물들은 각자 다른 역할을 가지고 있는데, 그들은 배우나 극중 인물일 수도 있고, 감독이나 시나리오 작가일 수도 있다.한 사람은 영화에서 한 역할에만 국한되지 않고 배우와 감독, 그리고 그 이상을 할 수 있다.예를 들어, 영화 스쿱(2006)우디 앨런이 감독을 맡았고, 그는 또한 시나리오 작가이며 시드 워터맨 역할을 맡았다.

그림 4: 더 자세한 7번째 기술 (UML 클래스 다이어그램 표현 사용)클릭하면 확대됩니다.

그림 4에서 각자가 영화에서 할 수 있는 역할을 더 자세히 볼 수 있다.이 영화에서, 그것을 정교하게 설명하는 데 도움이 되는 크루와 배역들의 명단을 물어볼 수 있다.각 개인은 영화에서 하나 이상의 역할(예: 배우, 감독, 프로듀서, 카메라맨 등)을 가지고 있으며 둘 이상의 영화에 참여할 수 있습니다.한 사람은 심지어 영화의 배우가 될 수도 있고 다른 영화의 프로듀서가 될 수도 있다.배우 역할의 경우 역할 클래스를 사용하는 한 가지 장점은 역할 내에 캐릭터 특성이 저장될 수 있다는 것입니다.이것은 배우 역할에도 해당되며, 다른 역할에도 해당되지만, 전부는 아닐 수도 있다.

가능한 역할 중 일부만 그림 4에서 모델링되었습니다.쉽게 알 수 있는 한 가지 주의사항은 모든 역할이 속성을 필요로 하는 것은 아니며 모든 역할에 롤 클래스 모델을 사용할 필요가 없다는 것입니다(Director 역할 등).또한 각 역할 클래스 간에는 많은 용장성이 있습니다.컴퓨터 과학의 용장성은 유지 보수 작업의 증가를 의미하지만 이는 바람직하지 않습니다.

장점과 단점

이 모델의 채용은 비즈니스 프로세스에 따라 달라집니다.분석 패턴 "Role Class Model"은 기본 클래스와 클라이언트 간에 링크된 모델을 사용할 수 있습니다.또한 역할(역할별 속성 및 작업)이 0개 또는 여러 개일 경우 유연하기 때문에 상속은 솔루션의 일부가 아닙니다.강점은 상대방의 약점을 암시하기도 한다.롤 클래스 모델의 문제는 용장성에 있습니다.예를 들어 getName 메서드는 그림4에 기재되어 있는 모든 롤클래스에 표시됩니다.이것이 불편하다고 생각되는 경우, 모델링[3] 역할에 정의된 역할 등급 일반화 모델을 사용할 수 있습니다.

「 」를 참조해 주세요.

프란시스 G.Mossé는[3] 역할 문제에 대한 다른 해결책을 설명했습니다.

  • 역할 상속
  • 어소시에이션의 역할
  • 일반 역할 클래스
  • 어소시에이션클래스 역할
  • 역할 유형과의 연관 클래스 역할. 이는 이전 유형을 개선한 것입니다.
  • 참조 투명도

레퍼런스

  1. ^ Fowler, Martin (1997-07-20). "Dealing with Roles" (PDF). Analysis Pattern. Retrieved 2007-01-16.
  2. ^ 이에 대한 인용은 Magnus Penker(저자), Hans-Erik Eriksson의 "Business Modeling With UML: Business Patterns at Work" 에 있습니다.

    그 기원은 알 수 없지만, 이 패턴은 유엔이 사용하는 지뢰 제거 시스템을 모형화하기 위해 사용되었습니다.이 패턴의 기초가 되는 개념에 대한 설명은 Murray R에서 확인할 수 있습니다.Cantor의 저서, 객체 지향 프로젝트 관리 with UML(John Wiley & Sons, Inc, 1998).

  3. ^ a b c d Francis G. Mossé (September 2002). "Modeling Roles - A Practical Series of Analysis Patterns". Journal of Object Technology, vol. 1, no. 4. pp. 27–37. Retrieved 2006-12-28.

추가 정보

관련 링크