2011-09-15 14 views
12

私はクラス図を設計していますが、疑問があります。umlクラス図の列挙型クラスへの関連付けをお勧めしますか?

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

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

クラス間の関連付けをマークすることをお勧めしますか、それとも取り除くことができますか?はいの場合、それらを集計すべきか(BankAccountはbankAccountTypeを持っていますか?

ありがとうございます。

答えて

22

は関係なく、属性タイプが列挙型であるかどうかの、UMLの属性を表現する2つの方法があります。適切な属性として、そして監督協会として。

The two ways of representing attributes in UML

属性宣言の2つのスタイルは、意味的に等価である:彼らはまったく同じことを意味します。言い換えれば、どちらを選択するかは、スタイルの問題になります。

属性を使用すると簡単な図が作成され、モデルのツリービューで属性を表示するにはいくつかのツールが必要になります。

ダイレクト・アソシエーションを使用すると、ダイアグラムにターゲット・タイプ(列挙型)を含める必要があります。つまり、リテラルが表示されます。もちろん、上記のAn_Enumで行ったように、別のケースにも含めることができます。

私は通常、コードレベルのモデリングに集約または合成を使用しません。私は彼らがクラス間のより抽象的な関係を記述するのに適していると感じています(情報モデルのように)、そして概念的にはソースコード内で実際には何も一致しません。属性は、ローカル変数型として使用されるクラスまたはメソッドが呼び出されるクラスに対する「依存関係」または「使用」関係によって補完される可能性があります。

+0

この場合、多重度はどのように機能しますか? – FateNuller

1

単純な関連付けがこのトリックを行います。集約は、含まれているクラスのライフサイクルが、そのクラスを含むクラスに結びついていることを示します。

投稿者: クラスは、他のクラスのコレクションまたはコンテナであるが、含まれているクラスがコンテナに強いライフサイクル依存性を持たない場合に発生することがあります。つまり、コンテナが破棄された場合、そうではありません。 またhttp://en.wikipedia.org/wiki/Class_diagram#Aggregation

は、あなたのためにこれを見つけた:UML class diagram enum

関連する問題