立見さん、庄司さん
平澤@ウルシステムズです。
# 師範代ではありませんが、
# 今回のコンテストの運営をお手伝いしています。
>さて、最優秀モデルでは関連クラスが使われていて
>とてもすっきりしていい感じですが、1点気になる
>点がありました。
私も今回の最優秀モデル(No.31)は、一目見たときから気に入りました。
エンティティの単位、ネーミング、配置など
問題文を「素直に」表現していると思いました。
# 実は、あとで公開されると思いますが、私自身が書いたモデルも、
# 庄司さんのものとエンティティの単位&配置が全く同じだったんです!
ただ非常に残念ながらNo.31のモデルには、1つだけ微妙な間違いがあります。
それは「料金」を関連クラスにしてしまっていることです。
「関連クラス」は、関連がないと存在できないため、
品目に依存しない”防虫加工”の料金を設定できません!
# とはいえ「クリーニング品目」と「クリーニングサービス」間の関連の
# 多重度が、0..* vs 1..* になっていたことから、
# 品目に依存しない料金を表現しようとしている「気持ち」は読み取れました。
>関連クラスを料金としてしまうと、クリーニング品目
>とクリーニングサービスの間にある
>標準クリーニング日数のようなデータを格納できなくなります。
>クリーニングサービスをサービスとして
>関連クラスをクリーニングサービスとしたほうが
>しっくり行くと思います。
お題の文章を読む限り、標準日数の話は書いてありませんので、
「サービス料金」でOKだと思います。
ただ、実際の現場では「標準日数」などを管理するべきかを確認する必要がありますね。
その場合は「クリーニングサービス」といったエンティティ名にすべきと思います。
>庄司@NEC情報システムズです。
>
>■ 料金の改定
> これは今回、自分で解決できなかった考慮点です。
>
> こういう場合関連クラスとせず、他の方のモデルのように品目と
> サービスの間に料金クラスをはさめば良かったのでしょうか?
(今回のお題には書いてありませんが)
料金の改定(値上げ、値下げ)まで表現する場合は、
[クリーニング品目]と[クリーニングサービス]の関連エンティティの名前を
[クリーニングサービス]あたりにして、
[クリーニングサービス] 1--* [料金]
と表現すればいいと思います。
[クリーニングサービス]と[料金]を1--*とせず、
限定子に[期間]を設定して、1--1とした方がスマートかも知れませんが。
--
平澤 章 <akira.hirasawa@....jp>