児玉さん
羽生田です.
さっそくご返事ありがとうございます.
On Wed, 20 Apr 2005 18:06:18 +0900
kiminobu-kodama@....jp (児玉公信) wrote:
> こんにちは,児玉@(株)エクサです。
>
> 羽生田さん,
>
> 「[modeling-dojo:00336] パワータイプに関して質問」のお返事させていただきます。
>
> >> モデリングのポイントは「お預かり品」という現物と「サービス」の
> >> 対応関係だと思います。多対多の関連にしてあります。タグに特別な情
> >> 報を盛り込む必要がある(たとえば「色落ちに注意」などの指示)なら
> >> ば,この関連に関連クラスを付ければいいですね。
> >> 単なる関連にしておくことで,同じサービスが二度以上加わらない,
> >> つまり,ドライクリーニングが二度行われるないようにする制約になっ
> >> ています。
> >
> >いまの児玉さんのモデルでは,
> >「お預かり品」*---*「サービス」
> >となっていますよね.『単なる関連にした』というだけでは,
> >ドライクリーニングというサービスが2度適用されない
> >という制約はどう考えても表現できていないと思います.
> >多重度「*」ですから,1預かり品に対して何個もクリーニングというサービス
> >インスタンスを結合できますよね.
> >
> >何かの勘違い??でしょうか?
>
> はい,勘違いです。関連はリンクの集合です。集合は{Bug}などの
> 制約をかけない限り{Set}と解釈しますので,同一のオブジェクト間
> での重複リンクを許さないことになっています。
>
> って,なかなか言わないと分かりませんよね。
むむむ,以下のコメントを参照ください.
> >制約を正確に追加するか,私のモデルのようにサービス明細でも出さない限りは
> >解決しないのではないでしょうか.
> >
> >とここまで書いて気づきましたが,...
> >
> >児玉さんの「サービス」クラスはパワータイプ(冪型)なのですね.
> >(ちなみに私のモデル中のサービスはパワータイプではありません.)
> >M.Fowlerもそれを<<powertype>>などと明示することはしていないようですが
> >そのような宣言がないままのクラス図では個々のインスタンスがユニークに種別
> >を表現しているかどうかクラス名からはわからないですよね.
>
> 「サービス」はパワータイプではありません。「品目」がパワータイ
> プなので,ロールに「型」というのをつけています。これはFowlerのプ
> ラクティスなんです。
> 「型」では説明が難しかろうということで,「UMLモデリングの本質」
> では「カテゴリ」というロール名をつけました。
サービスがパワータイプではなく普通のクラスなのだとすると
サービスのインスタンスとして,050420-001:クリーニングとか
050420-002:クリーニングといったオブジェクトができますよね.
それら2つのオブジェクトと同一のお預かり品オブジェクトの間に2本のリンク
ができそうですが...
児玉さんのオブジェクト図を見ると,クリーニングクラスのインスタンス例とし
ては,ドライ:クリーニングや水洗い:クリーニングというオブジェクトが登場
していますから,これはどう見ても,やはり「クリーニング」クラスはパワータ
イプとしか考えられないのですが...
いかがでしょうか?