[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 1546] Re: Java スレッドプ ログラミングを読む会第 4 回議事録



高橋(徹)です。

   "takekawa@xxxxxxxxxxxxxx"さんは書きました:
> アグリゲーションの主要な意味を実装している?
> 
> →UMLの記法で「◆と◇」で意味が違ったとおもう。
>  ◆の方はたしかに固定格納と同様の意味だったはず。
今までの読書会でも何度か出てきたような気がするのですが、
UMLって実際に自分でいろいろな場合を書いてみないとなかなか
覚えられないですね(^^;;;

そこで、下記文献をあたってみました。
まず◇の方は、集約(英語だとaggregation?)を示すものです。
文献P.67から引用
“「全体/部分」の関係、つまり大きい方のもの(全体)が小さい
方のもの(部分)から構成されている関係を表す必要が出てきます。
この種の関係は集約と呼ばれ、「保有する(has-a)」関係を表します。”
一方◆の方は、コンポジションを示すものです。コンポジションは
集約のバリエーションです。
文献P.147から引用
“コンポジションは集約の1つの形態で、強い所有関係があり、全体の
中の部分として生存期間が完全に一致しています。コンポジションに
おける全体側のオブジェクトのことをコンポジットといいます。多重度
が固定されていない場合は、コンポジット自体を生成した後で部分を
生成できますが、いったん生成した後は、部分はコンポジットと生死を
共にします。これらの部分は、コンポジットが消滅する前であれば明示
的に削除することもできます。”
ということで、◆は◇の1種だけど、より強い(意味を狭めた)関係を示す
ものでした。違いは、◇の場合、複数の全体が1つの部分を共有できるが
◆の場合は部分はたった1つの全体にしか属さないという点にあります。

Javaのプログラムで単なる集約(◇)とコンポジション(◆)の違いを実装
するとしたら、後者はインナークラスあたりでしょうか? 

参考文献
邦題:UMLユーザーガイド 最新のUML1.3準拠
原題:The Unified Modeling Language User Guide Version 1.3
著者:グラディ・ブーチ
訳:オージス総研オブジェクト技術ソリューション事業部
出版:ピアソン・エデュケーション
価格:6,400円
ISBN:4-89471-155-9

======------======------======
Toru Takahashi,  TOSHIBA Corps. KOMUKAI Works
(office)tooru6.takahashi@xxxxxxxxxxxxx
(private)torutk@xxxxxxxxxxx
http://www.alles.or.jp/~torutk/oojava/