UMLを基礎から理解する ――UMLでできること,できないこと
●UML 2.0で取り入れられた構造化クラス
UMLの新しいバージョンであるUML 2.0は,2003年に公開される予定になっています.UML 2.0にはいくつかの新しい機能が取り入れられていますが,その一つである構造化クラスは,ハードウェアも含めた組み込みシステムのモデル表現として重要だと思うので,ここで紹介しておきます.
哲学者の食事問題をモデル化したクラス図とオブジェクト図の違いに注目してください.クラス図(図6)のほうは,哲学者が右手と左手にフォークを持つという一般的なことを表しています.オブジェクト図(図7)のほうは,哲学者が5人いてフォークを共有していることを表しています.クラス図は概念を表すものなので,同一のクラスを二つ並べることができません.「哲学者というもの」と「フォークというもの」を表すので,一つ,二つと数えることができないのです.「哲学者」という概念は一つだけということです.英語で言えば,冠詞を付けない単語だけで文章を作るようなものです.
そんなわけで,オブジェクト図のほうが問題に特有の状況を表現している気がしませんか?
これは,一般化されたクラス表現と具体化されたインスタンス表現の違いです.哲学者が6人になってもクラス図はそのまま再利用できますが,オブジェクト図はもう使えません.しかし,オブジェクト図(もしくはそれに対応するもの)がないと,何をしたいのかがわかりにくくなります.
構造化クラスというのは,クラスの中にその内部構造を表現するためのインスタンス・ベースの表現を持たせたものです.ここでは,内部の構造を表すために持たせた図をクラス構造図と呼ぶことにします.クラス構造図は,オブジェクト図では具体的すぎるので,役割ベースのコラボレーション図(図8)を使用します.ただし,コラボレーション図のメッセージのやり取りを表す部分はやはり具体的すぎるので,ポートとコネクタという新しいモデリング要素を導入して,互いに通信し合うことを表現します.クラス構造図を使用することで,かなり直感的なモデリングが可能となります.