クラス図の落とし穴UML BASIC LECTURE(3/3 ページ)

» 2004年07月16日 12時00分 公開
[羽生田栄一(豆蔵 取締役会長), 岡村敦彦(豆蔵),@IT]
前のページへ 1|2|3       

ロールとクラスの関係は相対的

 次に、関連とクラスの間に登場する概念である「ロール」を簡単に説明しておきましょう。ロールとは役割ということです。ある関連RにクラスAが参加している場合に、Aがどのような役割や立場でその関連Rに関わっているのかを示すのがロールr1です。ロールを使うと、同じクラスどうしの関連であってもその役割に応じて区別してオブジェクトを取り扱うことができるようになります。例えば、同じ社員どうしの関連「監督する」であっても、ロール「上司」とロール「部下」を用いることで、社員オブジェクトがその状況ではどちらの役を演じているかを特定できるわけです(図8)。

ALT 図8 関連と参加クラスのロール、社員と上司、部下の例

 今の例では、社員クラスが上司ロールを演じたり部下ロールを演じたりしていたわけです。しかし、ここでは社員はクラスという扱いでしたが、別のモデルでは、社員は会社との関係で「人」クラスの演じるロールとも考えられます(図9)。

ALT 図9 人と会社・人と学校

 では、クラスとロールとは一般にどのような関係にあると考えられるでしょうか。クラスは、その問題領域で総じて基本的な概念、ベース概念を示します。それに対して、ロールはベース概念がある関連において演じる相対的な役割を表現する事になります。

 もし、これから扱おうとしている問題領域で教育や学校などに関するテーマは無関係であり、あくまでも会社の組織内の人の振る舞いにしか関心はない、それ以外のテーマは排除してよいというコンセンサスがあったとします。その場合には、「人」という概念は今度はあまりにも一般的な広すぎるものとなります。こうしたときには、その限定された問題領域でもっとも使いやすい概念、この場合だと「社員」をベース概念として扱うということなるでしょう。こうした例からもわかるように、概念クラスとロール(役割)とは相対的な位置づけに過ぎません。モデリングの対象領域がどの範囲なのか、何をベース概念としたときに一番わかりやすく簡潔なモデルが構成できるか、で判断する必要があります(図10)。

ALT 図10 社員と会社

オブジェクト図で命題=述語(補語1、補語2、・・・)に分解

 ある問題領域を対象としたモデルの構成要素として妥当なクラスを抽出する際の基本的な技法として、名詞抽出法があります。その問題領域を記述した文章(命題の集合)から、重要なキーワードとなる名詞をクラス候補としてピックアップし、それらが業務上重要な概念に対応しており、なおかつ「業務上1個1個区別して管理・記録したい対象か」を問いただす事により、適切なクラスを抽出するという方法です。ここでやっていることは、名詞の抽出というよりは、より的確に言い直せば、「業務上管理したい『概念抽出法』」といったほうが目的がわかりやすいと思います。たまたま、概念は文法上は名詞で表わされることが多いというだけで、動詞が重要な概念を表わしていることもあるので、注意が必要です。

 概念抽出法では、各文を命題として分析していきます。命題とは、述語(補語1、補語2、……)という構造のことです。論理学の世界では、述語(項1、項2、…)といったりもしますが同じことです。述語は「こと」を表わし、補語は「もの」を表わします。補語の1つが主語ですが、モデリングの上では、特に主語を特別扱いすることはありません。

 したがって、1つの文は、基本的に、「こと」オブジェクトの周りに「もの」オブジェクトが配置されたスター構造になります。たとえば、『田中一郎氏は、昼食にカレーライスを自宅の居間で食べた。』という文は、図のようになります。実際には、複数の関連する文からなる問題記述の「文章」や「ストーリー」「ユースケース」をもとにして、ある特定のモノを介して別の「コト」が接続して、「モノ?コト?モノ?コト」という具合により複雑なオブジェクト・ネットワーク構造を作り上げていくのですが、それについてはまたの機会にしましょう。モノとコトのスター構造を知っているだけでも、クラスの識別は非常に合理的に進めていくことができますので、トライしてみてください(図11)。

ALT 図11 文に対応する「モノ-コト」のスター構造
前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ