« アナパタは難しい | トップページ | SharpReader使ってます »

2004/09/13

概念を抽出するには
クラスとインスタンスの区別から始まる

 エンティティを抽出する時、イメージしている概念はインスタンスなのか、クラスなのか、区別することが意外とできていないのではないか?

 ある勉強会で、「日頃具体的な実体(インスタンス)と思って会話している内容が、実は殆どが概念(クラス)で話をしているのではないか?」という問題提起があった。例えば、「顧客」「商品」という言葉で、ユーザとSEの議論が噛み合わない時、「顧客」「商品」から想像される機能がお互いに異なるにもかかわらず、知らずに議論しているように思う。そんなケースは非常に多い。

 他には、「本質」では、「ロール名は極力クラスにしない」という原則を提示している。「販売先」「仕入先」という概念は「取引先」のロール(つまりインスタンス)にすべき、という例をあげている。クラスにしてしまうと、柔軟性が失われるからだ。

 アナパタでは、クラスとインスタンス以外にも、パワータイプを導入して、モデルを更に柔軟にしようとして複雑にしている部分がある。クラス=集合、インスタンス=集合の要素とするならば、パワータイプ=族集合に相当する。
 責任関係パターンが難しいのは、クラスとインスタンスを区別することさえも労力がかかるのに、パワータイプが出てきて混乱しやすいから。

 結局、オブジェクト図がモデリングの基本であり、慣れてくると、クラス図だけでオブジェクト図が見えてくる。
 インスタンスがはっきりすれば、関連によってどの機能を委譲すればよいか、見えてくる。

|

« アナパタは難しい | トップページ | SharpReader使ってます »

モデリング」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/49479/1429132

この記事へのトラックバック一覧です: 概念を抽出するには
クラスとインスタンスの区別から始まる
:

« アナパタは難しい | トップページ | SharpReader使ってます »