1

タイプ A および B のオブジェクトを格納できるコンテナ C が 1 つあるとします。C を空にすることはできず、各タイプのオブジェクトを 1 つだけ格納できます。これは、C に次のいずれかが含まれていることを意味します。

  • タイプ A の 1 つのオブジェクト
  • タイプ B のオブジェクト 1 個
  • タイプ A の 1 つのオブジェクト + タイプ B の 1 つのオブジェクト

UMLクラス図でこの問題をマッピングするために、私はこれらを試しました...

ここに画像の説明を入力

...しかし、左の図ではコンテナ C が空である可能性があり、右の図ではコンテナ C にタイプ A (または B) の 2 つのオブジェクトを含めることができるため、問題をマッピングするものはありません。

私の質問は次のとおりです。この問題をどのようにマッピングできますか?

4

2 に答える 2

1

あなたの問題の解決策は、Javaier が説明したように、UML 制約を使用することです。しかし、この特定のケースでは、正確に必要なことを行う、定義済みの UML 制約が呼び出され{or}ています。「or」制約は UML で事前定義されており、関連付け間でグラフィカルに記述できます。{or}集約の 1 つがまったく存在しない可能性があることを意味するため、多重度から 0 が削除されることに注意してください。

ここに画像の説明を入力

PS 1: 同様の例については、OMG Press Book{xor}の UML 2.0 Toolkit の 302 ページと 303 ページを参照してください。

PS 2: 私の知る限り、集約を分岐するために使用している表記は、正しい UML 表記ではありません (または、少なくとも異なる意味を持ちます)。複数の関係を結合することは、一般化に適用できる代替表記法です。

PS 3: もちろん、OCL または自然言語を制約に使用することもできます。

于 2013-03-21T03:43:52.207 に答える