Index: [Article Count Order] [Thread]

Date:  Wed, 20 Apr 2005 15:10:56 +0900
From:  Hanyuda Eiiti <hanyuda@....com>
Subject:  [modeling-dojo:00336] パワータイプに関して質問
To:  modeling-dojo@....jp
Message-Id:  <20050420145349.696A.HANYUDA@....com>
X-Mail-Count: 00336

お初にメールします.豆蔵の羽生田です.

コンテストに応募いただきました皆さん,ありがとうございました.
わたしも苦労してコメント全部付けた甲斐がありました.

さっそくML賑やかしのための質問です(強力協力者のHさんのそそのかしです).
(もともと内輪のメールだったので文言に失礼がありましたら御免ください)

児玉さん

羽生田です.
今回は参加者にもコメントを喜んでもらい,やったかいがありましたね.

ところで,児玉さんのモデルへの児玉さん自身のコメントに関して
疑問があります.

On Tue, 19 Apr 2005 09:10:00 +0900
Kiminobu Kodama <kiminobu-kodama@....jp> wrote:

>  モデリングのポイントは「お預かり品」という現物と「サービス」の
> 対応関係だと思います。多対多の関連にしてあります。タグに特別な情
> 報を盛り込む必要がある(たとえば「色落ちに注意」などの指示)なら
> ば,この関連に関連クラスを付ければいいですね。
>  単なる関連にしておくことで,同じサービスが二度以上加わらない,
> つまり,ドライクリーニングが二度行われるないようにする制約になっ
> ています。

いまの児玉さんのモデルでは,
「お預かり品」*---*「サービス」
となっていますよね.『単なる関連にした』というだけでは,
ドライクリーニングというサービスが2度適用されない
という制約はどう考えても表現できていないと思います.
多重度「*」ですから,1預かり品に対して何個もクリーニングというサービス
インスタンスを結合できますよね.

何かの勘違い??でしょうか?

制約を正確に追加するか,私のモデルのようにサービス明細でも出さない限りは
解決しないのではないでしょうか.

とここまで書いて気づきましたが,...

児玉さんの「サービス」クラスはパワータイプ(冪型)なのですね.
(ちなみに私のモデル中のサービスはパワータイプではありません.)
M.Fowlerもそれを<<powertype>>などと明示することはしていないようですが
そのような宣言がないままのクラス図では個々のインスタンスがユニークに種別
を表現しているかどうかクラス名からはわからないですよね.

また,児玉さんのサービスがパワータイプなのだとすると,
サービスクラスが属性「サービス名」をもつのは変ですね.
(もたせるなら,{unique}プロパティを宣言する必要がありますが)
あくまで1個1個のインスタンスが区別を担うわけですから,冗長ですし
属性はない方が誤解がないように思います.
その一方でサブクラス「クリーニング」「加工」をもつというのも
ミスリーディングですね.
これはインスタンスのサブ種別名であるべきで,
すべてクラス名に「種」という語を付加して
「サービス種」「加工サービス種」「クリーニング種」
と命名する方が誤解がないなと思いました.

以上です.
失礼いたしました.

Hanyuda Eiiti,  hanyuda@....com
Chairperson, Object Software Engineering Consultant, Mentor
MAMEZOU CO., LTD   http://www.mamezou.com/
163-0434 Nisi-Sinzyuku 2-1-1 Sinzyuku-Mitui building 34F, Sinzyuku-ku, Tokyo JAPAN
TEL +81-03-5367-5830   FAX +81-03-5367-5831