状態モデリングとステートチャート図のわな(前編)UML BASIC LECTURE(1/4 ページ)

» 2004年10月08日 12時00分 公開
[羽生田栄一(取締役会長), 岡村敦彦,豆蔵]

クラス図のあいまいさ

 数回に渡り、クラス図に関する落とし穴を説明しました。UMLのダイヤグラムの中ではクラス図は最も重要であり、また一番利用されているものです。しかし、この連載をご覧になっている読者の皆さんがよくご存じのように、クラス図だけでシステムのすべての局面を表現できるわけではありません。クラス図で記述可能な範囲はあくまでもシステムの持つ静的な側面のみです。振る舞いに関する表現はクラス図の役割ではないので、動的な側面に関しては言及できないことになります。つまり、クラス図は考え得る動的な振る舞いを包括した構造をダイヤグラムとして表現しますが、それがいかなるケースで何が有効なのか、といった事柄に関しては説明しません。そうした面でのあいまいさを常に含むものであるということもできます。

 例えば、以下のを見てください。

ALT 図1 演劇生活を表現したモデルの一部

 これはある演劇生活を表現したモデルの一部ですが、役者クラスと劇場クラスとの関係を2項関連で表現しています。この多重度によると、役者クラスと関連する劇場クラスのインスタンスはまったく存在しないか、もしくは1つだけ存在することを示しています。クラス図を検証するためには具体的なインスタンスを思い浮かべるのがよいので、例えば、役者クラスのインスタンスとして、ある公演中の役者と稽古(けいこ)中の役者を考えてみましょう。公演中の役者のインスタンスであれば、現在上演している劇場との関係がありますが、稽古中の役者の場合はまだ劇場とは無関係です。

ALT 図2 稽古中の役者の場合はまだ劇場とは無関係

 稽古中の役者が劇場とのリンクを持たないのは、劇場とは月よりも遠い場所だから、というわけでもないのでしょうが、つまり同じ役者クラスでありながら、インスタンスの状態によって他オブジェクトとのリンクの有無という違いが生じてくることになります。クラス図の関連における多重度ではそうした可能性の範囲を記述しているのですが、それがある条件(この場合はインスタンスの状態)で決定するものならばそれを明示的に記述しておくことは無意味ではありません。

 例えば、公演中の役者と稽古中の役者をインスタンスの状態の違いではなく、所属するクラスの違いとして考えてみることもできるかもしれません。しかし、オブジェクトのライフサイクルを考えれば公演中であれ稽古中であれ、役者オブジェクトとしての生存期間は同一です。それを異なるクラスとして表現するのはちょっと不自然ですね(インスタンスが自由にクラスを変更できればよいのかもしれませんが、またそれは別の話です)。

 そうはいっても、上記のクラス図では状態によるバリエーションをモデルとして表現したいけれどそれができない……。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ