Index: [Article Count Order] [Thread]

Date:  Mon, 14 Mar 2005 11:40:03 +0900
From:  Yuji Ito <y_ito@....jp>
Subject:  [modeling-dojo:00211] Re: 関連のロール名
To:  modeling-dojo@....jp
Message-Id:  <4234F983.2040202@....jp>
In-Reply-To:  <20050314025807.0F14.KITSUNE@....com>
References:  <20050312051914238.DFX.8089.t-mta1.odn.ne.jp@....jp> <20050314025807.0F14.KITSUNE@....com>
X-Mail-Count: 00211

伊藤@AISです。

Makoto Minagawa wrote:
> 
>  上図のモデルの関連に付けられている名前は(たぶん)方向付けありの関連名で、
> これらの関連名とは別に、それぞれの関連端にロール名を示すことができます。
> たとえば、「男」クラス側には「ばら撒き先」、「女」クラス側には「有り難い
> 女神様達」、とかいった感じのロールが付けられるかもしれません (^_^; これ
> らのロール名は、それぞれ、ある「女」クラスのインスタンスから見た「男」ク
> ラスのインスタンス群の役割と、ある「男」クラスのインスタンスから見た「女」
> クラスのインスタンス群の役割、を示している名前です。
> 

Javaでの実装を考えますと

Class 男
	女[] 有り難い女神様達;

Class 女
	男[] ばら撒き先;

という感じなのでしょうか?
荒い解釈ではロール名=変数名で良いのでしょうか?
(関連名はコード上には現れない。)
ただし関連クラスを別途設けるなら別ですが。
バレンタインなんか1回限りではなく毎年ありますから、
関連クラスを設けて履歴を保存するとか。
(保存されたら恥ずかしいですけど)


> 
>>疑問2
>>反対が受身にならないケースもありますが、違いを意識する必要はない?
>>
>>                   結婚相手となる。
>>+--------+       1   +--------+
>>| 男     | ----------| 女     |
>>+--------+1          +--------+
>>        結婚相手となる。
> 
> 
>  上図のモデルの場合、関連名は「結婚相手となる」もしくは「結婚している」
> で、関連の「男」クラス側のロール名は「夫」、「女」クラス側のロール名は
> 「妻」といった感じになると思います。それぞれ、ある「女」クラスのインスタ
> ンスから見た「結婚している」相手の「男」クラスのインスタンスの役割を「夫」
> と呼び、ある「男」クラスのインスタンスから見た「結婚している」相手の「女」
> クラスのインスタンスの役割を「妻」と呼ぶ、という記述ですね。
> 
> # ちなみに、上図のクラス図では関連の両端の多重度が両方とも「1」なので、
> # この世界では男女とも一瞬たりとも独身でいることが許されないということで
> # すね (^_^; 結構厳しい世界かも… (^_^;; ちなみに、独身である状態を許す
> # のであれば、両端の多重度は共に「0..1」になります(重婚は考えない)。
> # 多重度は関連先のオブジェクトの個数に関するクラス不変制約(Invariant)の
> # 一種なので、そのクラスのオブジェクトが存在している間は常に満たしていな
> # ければならない条件を示しています。「1」(明確に1)という多重度は思いの外
> # 厳しい制限を表現しているものなんですよね。
> 

多重度が1という事は、
Class 男
	女 妻;

Class 女
	男 夫;

ではなくて、
Class 男
	女 妻 = New 女();

Class 女
	男 夫 = New 男();

もしくはコンストラクタ内で相手もインスタンス化する
という感じでしょうか?
(片方が他界してもすぐ次の相手が必要、とか
色々考えてしまいます。悲しい・・・)

こちらのMLの内容等を拝見させて頂いて、
モデリングと実装両方から学習していっております。
(実装できないモデルを作ってもシステム化出来なければ
意味は無いですし。)
「何故そうなのか」、を意識していないと前に進みにくいですねー。