Translate

ラベル Relationship の投稿を表示しています。 すべての投稿を表示
ラベル Relationship の投稿を表示しています。 すべての投稿を表示

2020/06/04

クラスのプロパティ表示から関連表示への変換

Tipsです。

クラスをモデル化する際、ユーザ定義クラスを型とするプロパティを属性区画に追加した後で、関連(Association)として表示したい事があります。

例えば
というクラスがあった場合に、この parts メンバ要素をXクラスとの関連として表示させたい場合です。クラス図上で、ClassXクラスの各種要素と共にXクラスの詳細も表示することで、両者が関係するある特徴を明示したクラス図として表記したい時などです。

この時のModel Explorerの表示は


となっています。
通常、各種関連も Model Explorer 上で表記されているのですが、ClassAクラスに直接 parts プロパティを追加したため、関連を示すモデルが存在しません。

では関連としてのモデル要素をEdgeパネルから作らないといけないかというと、そういう訳ではありません。その関連を自動生成するやり方があります。

まず、クラス図上で対象のプロパティ(parts)を選択し、マウス右クリックから

Utils > Create Association From Property

を選択します。


これを実行すると、何の変化も起こらない様に見えますが、Model Explorer を見ると、ClassAクラスとXクラスの間のpartsに関する関連が生成されています。


一番下の「A_parts_classA」です。

これをクラス図上で Drag&Drop することで、関連が表示されます。


後はXクラスの表示内容を変更したり、関連(A_parts_classA)の見せ方を変更することで、所望の意図を持つクラス図に修正することが可能です。

関係(Relationship)に関わるメタクラスの関係

クラス間の関係をモデル化している際、その間に使用可能な「関係」(Relationship)にどういうものがあるかや、そこで使用することが適切か等を悩むことがあります。

UMLのメタクラス定義において、関係に関するメタクラスは継承関係を用いて定義されており、その基本理解をしておくと、関係のモデル化の見通しが立ちやすいです。

Papyrusは、その内部で使用している「UML Metamodel」をクラス図の作図要素として用いることが可能で、その汎化の関係も表示されます。

クラス図で使用可能な関係(Relationship)要素を抽出して、そのメタモデルレベルでの継承関係を示したものが以下となります。


改めて見ると気づきも多いです。

なおこのモデルは、SysMLのようなUMLプロファイル定義中の関係に関するモデル要素が、どのUMLメタモデルを拡張しているのかを見ることで、その意味理解を助けることも可能です。