Translate

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

2020/06/04

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

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

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

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

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


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

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

継承先クラスでの継承元クラス要素の表示

Tipsです。

「区間の名前表示と区間で表示するモデル要素」という記事で、クラス図において、クラスの区画上で表示する要素の選択や、表示する区画自体やそのタイトルの選択方法について説明しました。

関連して、「継承先クラスで継承元クラスの要素の選択表示は行えるか?」の話しです。

答えは「行えます」

上記の元記事にあるBaseクラスを継承してDerivedクラスを規定したとします。


DerivedクラスにBaseクラスの要素を表示するかどうかの操作は元記事と同様に Derived クラスをマウスで選択した後、

Filters → Show/Hide Contents

から行います。

上記操作により以下のダイアログが表示されます。


見ての通り、「(from <Class> Base)」として Base クラスの要素の表示が可能です。

全てをチェックしてOKとすると、クラス表記は、


となります。

なお「Show/Hide Contents」として表示されるダイアログ上で y や b が選択肢として出てきませんが、これはそれらが「private」として定義されているためであり、正しい動作となります。