ども、皆川%ちょっとヘロヘロ状態@豆蔵です。
# 例によってメールの引用部分を一部削らせていただいています。
On Fri, 18 Mar 2005 09:34:50 +0900
Kiminobu Kodama <kiminobu-kodama@....jp> wrote:
> >問題:次の(ちょっと怪しい)クラス図に合致するオブジェクト図を描いてみてく
> >ださい。
> >
> >+--------+ 1 1..* +--------+
> >| 町内会 |◇----------------| 世帯主 |
> >+--------+ 会員 +--------+
> > | 1 1 | 会長
> > +----------------------------+
>
> context 町内会
> inv: self.会員->includes(self.会長)
>
> ですか。
あ、いや…、その辺のトピックもまた別途あるのですが…。うーん、でも、結
果は同じで、この制約が加わるとより明確になるから良いのかな。う〜ん。
実は、問題のクラス図では「実質的に二人以上の会員を持つ町内会が作れない」
のです(たぶん今回は間違ってない…と思いますが…)。
# 児玉さんが書かれた制約を加えると、さらに制限が強くなって(可能なオブジェ
# クト・ネットワークのバリエーションがかなり限定されて)、その「作れなさ」
# がより明確になりますね。
『え〜!? そんな事言ったって、「会員」ロールのところの多重度には「1..*」
と書いてあるんだから、二人以上の会員がいる「町内会」があってもいいんじゃ
ないの?』と思われる人も多いですよね、きっと。問題なのは、何気なく(たぶ
んあまり深く考えずに)付けられた他の多重度との兼ね合いなんです。
実際にオブジェクト図を描いてみようとすると、どの多重度が邪魔して二人以
上の会員を持つ町内会が作れなくなってしまうかが判ってくると思います(この
問題の場合は二種類の関連線があるので、オブジェクト図でも関連リンクにロー
ル名を明記するか、「会員」の関連リンクの方に集約マークを付けるなどして、
リンクの種類を明確に区別して描いてみると混乱が少なくて良いでしょう)。
もし、上のクラス図に合致する二人以上の会員を持つ「町内会」オブジェクト
が登場しているオブジェクト図を描くことに成功した人がいらっしゃいましたら、
是非、どのような形になったかお教えくださいませ(私はまだ今のところそのよ
うな形を発見できていません)。
さて、これは本当にパズルみたいなもんですが、いかがでしょうか?
--
/|/| ▲ 皆川 誠 @ 株式会社 豆蔵
/ ノ / } 「きつねはコンと鳴く」
|// ノ / | 会社用: kitsune@....com
=o=|\| / 自宅用: kitsune-san@....com
く | / 携帯用: kitsunex@....jp
■■■■