アソシエーションとは、クラス間の関係です。関連は、要素間の永続的な参照と考えることができます。アソシエーションは、クラス図でモデリングされたJavaクラス間およびJavaインタフェース間に作成できます。
注意: アソシエーションの2つの終端には異なる名前が必要です。また、あるクラスの反対側にあるアソシエーションの終端に、そのクラスのフィールドと同じ名前を付けることもできません。アソシエーション名は、大/小文字の違いに関係なく、ネームスペース内で一意である必要があります。
JavaクラスとJavaインタフェースの間のアソシエーションは、元のJavaクラスのコード中で、デフォルトでprotectedのフィールドとして表されます。JavaインタフェースとJavaクラスの間のアソシエーションは、そのインタフェースのコード中でpublicのフィールドとして表されます。
注意: モデリングされたアソシエーションのプロパティを迅速に変更するには、ダイアグラムでアソシエーションをダブルクリックし、アソシエーションの詳細を指定します。これにより、アソシエーションの集約などのアソシエーションのプロパティを変更できます。
アソシエーションが複雑でなく、Javadocを使用しなくても判断できる場合を除き、アソシエーションを実装するJavaクラスのアソシエーションを表すフィールドには、モデリングされたアソシエーションの詳細を指定するJavadocがあります。 次に例を示します。
/**
* Comment here
* @link aggregationByValue
* @associates <{model.JavaClass1}>
*/
protected List javaClass20;
注意: アソシエーションに対して最低限の数のJavadocタグが作成されます。タグは、フィールド宣言から推測できないアソシエーションの詳細を明確化するために使用されます。
アソシエーションの終端は、それがアソシエーションの中でどのように機能するのかを定義します。アソシエーションの終端には、次の3つの種類があります。
アソシエーションの終端 | アソシエーション |
---|---|
![]() |
単純なアソシエーション: どちらのクラスも特別な意味や所有権を持ちません。 |
![]() |
弱い集約: アソシエーションはこのアソシエーションのクラス定義の一部を構成します。集約されたクラスの存続期間は、このアソシエーションのクラスの存続期間に依存しません。 |
![]() |
強い集約(コンポジション): アソシエーションのもう一方の終端にあるクラスは、このアソシエーションによって識別されるクラスの一部を構成し、そのクラスによって所有されています。集約されたクラスの存続期間は、このアソシエーションのクラスの存続期間に依存します。 |
アソシエーションのロールを定義する際に、そのアソシエーションのもう一方の終端にある要素に影響する特性も指定します。特に、アソシエーションの一方の終端にあるオブジェクトが、もう一方の終端のフィールドをどの程度変更できるかを指定できます。
Copyright © 1997, 2004, Oracle. All rights reserved.