連載第7-1回
UMLの基礎と応用

(株)NTTデータ 技術開発本部 副本部長
山本修一郎

■■クラス図(その2)■■

 前回は対象領域やシステムの静的な構造を表すためのクラス図とオブジェクト図について紹介した。また、ユースケース図やシーケンス図とクラス図との関係やクラス図の作成手順についても述べた。以下では、ラショナル社のROSE [1]を用いてクラス図を作成してみよう。次いでクラス図を作成する上での課題などについて考えてみる。

ROSEによるクラス図作成の準備

 ROSEでクラス図の編集を選択すると、ツールバーには単方向の関連だけが提示されている(ROSEでは、クラス間の関係を示す場合、「関係」ではなく「関連」を用いているので、以下の記述でも「関係」ではなく「関連」を用いる)。最も基本的な双方向の関連がツールボックスに最初から置いてないのはいかにも不便だ。ROSEでクラス図を作成する前に、ツールバーに「関連」と「集約」を追加しておこう。

 クラス図を作成するための基本的なアイコンがツールバーに一覧表示されている。ツールバーのボタンがないところの上でマウスをダブルクリックすると、図1に示すようなツールバーの変更ウィンドウが表示される。

図1 ツールバーの変更メニュー
図1 ツールバーの変更メニュー

 ここで「関連を生成します」と「集約を生成します」の2つを選んで追加ボタンを押せば、この2つがツールバーに追加される。

 こうして変更したツールバーの構成要素とその用途を図2に示した。


図2 ツールバーの構成
図2 ツールバーの構成

 UMLではいろいろな関連が矢印の種類や実線か点線かで意味がことなるので覚えるのは大変だが、ROSEではツールバーの上にマウスを置けば、アイコンの意味が提示されるので便利だ。

クラスの挿入

 クラス図にクラスを挿入するにはツールバーでクラスアイコンを選択して、クラス図の中の挿入位置を指定すればいい。このとき、すでに定義されているクラスが挿入位置にメニューで提示されるので、この中から選択する。新しいクラスを挿入するときはNewClassを選択するとクラス名の入力モードになる。もし、ステレオタイプで定義された既存のクラスを選択すると、ステレオタイプに応じたアイコンでクラスが表示される。図3にクラス図を挿入する例を示した。

図3 ROSEによるクラス図の編集例
図3 ROSEによるクラス図の編集例

 このクラス図では、酒類販売の在庫管理に対するシーケンス図で定義した注文主、出庫依頼画面出庫指示、在庫などのクラスがステレオタイプのアイコンで記述されている。

関連の編集

 クラス間を関連付けるには、ツールバーから関連に対するアイコンを選択して、起点となるクラスの上にマウスを移動しクリックしてから、終点となるクラスの上にマウスを移動してクリックすればいい。関連の詳細を定義する場合、クラス間につけた関連に対応する線分をダブルクリックして、ポップアップ表示される関連仕様ウィンドウを用いる。関連仕様ウィンドウには、図4に示すように、[基本]、[詳細]、[ロールAの基本]/[ロールBの基本]、[ロールAの詳細]/[ロールBの詳細]という6個のタブがある。

図4 関連の仕様ウィンドウ
図4 関連の仕様ウィンドウ

 基本タブでは、関連名、関連に対するステレオタイプ、関連の両端に対する役割名(ROSEではロール名)、そしてアイテムを定義する。予め用意されている関連に関するステレオタイプとして、通信関連communicate、拡張関連extend、包含関連include、実現関連realize、購読関連subscribeがある。これらのうち通信関連、拡張関連と包含関連はユースケースについてのステレオタイプでありJacobsonが導入した。実現関連は、クラス、インタフェース、コンポーネント、およびパッケージ間の関連である。クラスとインタフェース間、およびコンポーネントとインタフェースの間の実現関連では、インタフェースが提供する操作をクラスが実現することを表す。クラス間には実現関連を定義しない。購読関連はクラス間の関連である。購読関連は一方のクラスから他方のクラスへ影響を与えるようなイベントが発生したことを通知する必要があることを示す。

 関連の詳細タブでは、派生チェックボックス、リンクエレメント指定、名前の方向、制約を記述する。派生ボックスにチェックがあるとこの関連が計算可能であることを示す。リンクエレメントでは関連クラスを指定する。関連クラスは選択中の関連に関する性質を記述するクラスである。制約フィールドでは選択中の関連が守るべき条件を記述する。ロールの基本タブと詳細タブは関連が2項関連なので、AとBがある。ロールAが関連線の終点、ロールBが関連線の始点に対応する。しかし、ロールAとかロールBとかいうのは不親切でわかりにくい。ロールAとロールBをそれぞれ、終点のロール、始点のロールあるいはロールTO、ロールFROMとでもしたら、意味が理解しやすいと思うがどうだろうか。日本語版だけでも直してもらいたいものだ。

 ロールの基本タブには、ロール名、操作の可視性とアイテム定義フィールドがある。アイテム定義フィールドではロールの目的や意味を記述する。ロールの詳細タブにはロール名、制約フィールド、多重度メニュ、チェックボックス(参照可能、集約、スタティック、フレンド)、保有(Containment)指定、キー指定フィールドなどがある。ロールの詳細タブでこれらの内容を修正することで一度つけた関連を変更することができる。

NEXT >> 

・連載第1回

・連載第2回

・連載第3回

・連載第4回

・連載第5回

・連載第6回

・連載第7回

・連載第8回

・連載第9回

・連載第10回

・連載第11回

・連載第12回

・連載第13回

・連載第14回

・連載第15回

・連載第16回

・連載第17回