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