コンピュータサイエンスにおいて、ロールクラスモデルは、フランシス・G・モセがロールのモデリングに関する論文[3 ]で説明した(発明されたわけではない[2] )ロール分析パターン[1]です。ロールクラスパターンは、クラスが複数の役割を果たす機能と、ロール特性を専用クラスに埋め込む機能を提供します。
私たちの社会では、私たちが築いたように、あらゆるところに役割があります。何かを創るためにチームで働こうとする人は誰でも役割を持っています。映画撮影では、映画監督、プロデューサー、俳優、脚本家など、さまざまな人が映画の制作に参加します。私たちの国家組織でさえ、さまざまな役割に基づいています。共和国には、大統領、大臣、議員など がいます。
これらの状況に対処することは、オブジェクト指向分析中に最も頻繁に遭遇する問題の 1 つです。Francis G. Mossé は、ロール関連のほとんどの問題を解決するために使用できる 5 つのロール分析パターンを特定しました。ロール継承、関連ロール、ロール クラス、一般化ロール クラス、関連クラス ロールです。これらはすべて、さまざまな程度の制約、柔軟性、またはパワーを備えており、これらを組み合わせることで、ほとんどのロール関連の問題の完全なソリューションが提供されます。
意図
クラスが同時に 1 つ以上の役割を果たすことを可能にするモデル。役割は、Francis Mossé が Modelling Roles [3]で定義しているように、特定のコンテキストでクラスが持つことができる目的の概念です。
コンテクスト
次のような例が挙げられます。
映画には多くの人が関わり、それぞれが異なる役割を担っています。他のコンセプトとは異なり、人は 1 つの役割に限定されません。映画の監督と登場人物の両方になることができます。このようなコンセプトで役割をモデル化するには、クラスが複数の役割を演じられる必要があります。
継承を使用して役割を概念化するソリューション(継承ロール モデルを参照) は不可能です。これは、このソリューションでは、1 人の人物が 1 つの役割しか演じられないためです。下の図 1 に示すように、継承ロール モデルでは、人物であるキャラクターが映画で演じています。ただし、そのキャラクターを演じている人物が監督でもあるとは言えません。継承によって、キャラクターは特定の人物ではなく、一般的な人物になるからです。

問題
コンテキストで説明したように、継承を使用して複数の役割を果たすことは検討できません。これは、そのようなコンテキストではクラスが同時に 2 つの役割を果たすことができないためです (継承ロール モデルを参照)。
クラスを複数の概念または役割として捉えることができ、それらの概念の 1 つに固有の属性を指定できるモデルが期待されます。
解決
前述の問題の解決策として、人と映画との関連付けを作成できる関連ロール モデルを使用する方法があります。ただし、このような場合、各ロールの特定の情報を保存することはできません。ロール クラス モデルは、必要に応じて、ロール固有の属性やクラス操作による関連付けの柔軟性を提供します。

このメタモデル (図 2) は、ロール クラスを、クライアントとBaseClass をリンクする要素として示しています。クライアントにとって、ロールと対話することは、基本クラス自体と対話することと同じですが、視点から見ると、期待どおりです。ロールをクラスとして持つ利点は、属性をそれにバインドできることです。
ロール パターンが興味深いもう 1 つの状況は、次のような場合です。

次に、契約保有者として、Person には特定の属性があることに気が付きます。ホルダーの UML ロールは、これらの特定の属性を持つ専用クラスContractHolderになります。その場合、Person と Contract の多重度は常に1であることに注意してください。つまり、Contract と Person 間の関連付けごとに 1 つのContractHolderオブジェクトがあるということです。

実際の例
シネマ

ロール クラス モデルの実際の例での簡単な適用は、7 番目の芸術 (図 3 を参照)、映画撮影です。この芸術には、作品 (映画) とそれを作成する人々が関係します。各人は映画の中で異なる役割を持ち、俳優として登場人物を演じることもあれば、監督や脚本家などになることもあります。人は映画の中で 1 つの役割に限定されず、俳優と監督の両方になることも、さらにそれ以上になることもできます。たとえば、映画「スクープ」(2006 年) はウディ アレンが監督し、脚本家でもあり、シド ウォーターマンの役を演じています。

図 4 では、各人が映画で果たせる役割をより詳細に見ることができます。映画から、それを詳しく説明するスタッフとキャストのリストを求めることができます。各人は映画で 1 つ以上の役割 (俳優、監督、プロデューサー、カメラマンなど) を持ち、複数の映画に参加できます。ある人は、ある映画では俳優で、別の映画ではプロデューサーになることもできます。俳優の役割の場合に役割クラスを使用する利点の 1 つは、キャラクターの特性を役割内に保存できることです。これは俳優の役割に当てはまり、他の役割にも当てはまりますが、すべてに当てはまるとは限りません。
図 4 では、考えられるロールのごく一部だけがモデル化されています。簡単にわかるのは、すべてのロールに属性が必要なわけではなく、すべてのロールにロール クラス モデルを使用する必要はないということです (ディレクターロールなど)。さらに、各ロール クラス間には多くの冗長性があります。コンピューター サイエンスにおける冗長性は、メンテナンスの作業が増えることを意味し、これは望ましくありません。
強みと弱み
このモデルの使用はビジネス プロセスによって異なります。分析パターン「ロール クラス モデル」は、基本クラスとクライアントをリンクするモデルの使用を可能にします。さらに、ロール (ロール固有の属性と操作) が 0 個または複数個の柔軟性があるため、継承はソリューションの一部ではありません。強みは、その反対の弱点も意味します。ロール クラス モデルの問題は冗長性です。たとえば、メソッドgetNameは、図 4 で説明されているすべてのロール クラスで表示されます。これが不便であると考えられる場合は、Modelling Roles [3]で定義されているロール クラス一般化モデルが有効な手段です。
参照
フランシス・G・モッセ[3]は役割問題に対する他の解決策を述べている。
- ロール継承
- 協会の役割
- 汎用ロールクラス
- 関連クラスの役割
- ロール タイプを持つ関連クラス ロール。これは、前のものを改良したものです。
- 参照の透明性
参考文献
- ^ Fowler, Martin (1997-07-20). 「役割の扱い方」(PDF) . Analysis Pattern . 2007-01-16閲覧。
- ^ Magnus Penker (著者) の「Business Modeling With UML: Business Patterns at Work」という本の中で、 Hans-Erik Eriksson の章にこれに関する引用があります。
...その起源は不明ですが、このパターンは国連が使用する地雷除去システムをモデル化するために使用されています。このパターンの基礎となる概念の説明は、Murray R. Cantor の著書『Object-Oriented Project Management with UML』(John Wiley & Sons, Inc.、1998 年) に記載されています。
- ^ abcd Francis G. Mossé (2002 年 9 月)。「Modeling Roles - A Practical Series of Analysis Patterns」。Journal of Object Technology、vol. 1、no. 4、pp. 27–37。2006年 12 月 28 日閲覧。
さらに読む
- ファウラー、マーティン(1996-11-27)。分析パターン: 再利用可能なオブジェクトモデル。Addison - Wesley。ISBN 0-201-89542-0。概念モデルによるオブジェクト指向分析入門
- Raventós, Ruth および Cabot, Jordi (2006)。「役割の概念モデリング パターン」(PDF)。Journal on Data Semantics V。2007年 1 月 16 日閲覧。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要です[リンク切れ ]CS1 maint: 複数の名前: 著者リスト (リンク) - コンピュータサイエンス学部 (2004)。「パターンにおける役割の使用」。パターン分析。イリノイ大学アーバナ・シャンペーン校。2007 年 1 月 1 日にオリジナルからアーカイブ。2007年 1 月 16 日に取得。
- chromatic (2006-08-31). 「パターンにおけるロールの使用法」.技術. O'Reilly Media . 2007-01-16閲覧.
{{cite web}}:外部リンク(ヘルプ)|work=
関連リンク
- アクターロールパターン、JPA 実装 https://web.archive.org/web/20071105232543/http://www.ibstaff.net/fmartinez/?p=16
