web-dev-qa-db-ja.com

UMLクラス図で列挙型クラスに関連付けることをお勧めしますか?

私はクラス図を設計していますが、疑問を抱きました:

Java enumsとdbカタログとしてマップされる他のクラスを参照するいくつかの属性を持つクラスがあります。

たとえば、type:BankAccountType(列挙型)という属性を持つBankAccountというクラスと、bank:Bank(カタログクラス)というクラスがあります。

クラス間の関連をマークすることをお勧めしますか、それとも回避できますか?はいの場合、それらを集約する必要がありますか(BankAccountはbankAccountTypeを持っています)、または単に関連付けますか?

前もって感謝します。

17
htafoya

属性タイプが列挙型であるかどうかに関係なく、UMLで属性を表すには、適切な属性として、および指定された関連付けとしての2つの方法があります。

The two ways of representing attributes in UML

属性宣言の2つのスタイルは、意味的に同等です。つまり、まったく同じ意味です。つまり、どちらを選択するかは、スタイルの問題に帰着します。

属性を使用すると、ダイアグラムが単純になります。一部のツールでは、モデルのツリービューに属性を表示するために必要です。

有向関連付けを使用することは、図にターゲットタイプ(列挙型)を含める必要があることを意味します。つまり、リテラルを表示できます。もちろん、上記のAn_Enumで行ったように、他の場合にも含めることができます。

私は通常、コードレベルのモデリングに集計や構成を使用しません。 (情報モデルの場合のように)クラス間のより抽象的な関係を記述するのに適していると思います。概念的には、ソースコードのどの部分にも実際には一致しません。属性は、ローカル変数タイプとして使用されるクラスまたはそのメソッドが呼び出されるクラスへの「依存関係」または「使用」関係によって補足される可能性があります。

30
Uffe

単純な関連付けでうまくいきます。集計は、含まれているクラスのライフサイクルが含まれているクラスに関連付けられていることを示しています。

ウィキペディアから:クラスが他のクラスのコレクションまたはコンテナーである場合に集約が発生する可能性がありますが、含まれるクラスがコンテナーに対して強いライフサイクル依存関係を持たない場合、基本的に、コンテナーが破棄されても、その内容は変わりません。 http://en.wikipedia.org/wiki/Class_diagram#Aggregation

また、あなたのためにこれを見つけました: MLクラス図列挙

0
Jeremy