本日は、メタモデルとモデル図の関係、そしてメタクラスについて議論して行きましょう。
メタモデル、メタクラス
UMLは構造と振る舞いを持つ対象をモデル化する言語です。そして、UML自身も構造と振る舞いを持ちます。すなわち、UMLは自分自身をモデル化することができ、その自分自身のモデルのことをメタモデルと呼びます。
個々のオブジェクトの集まりをクラスとしてまとめたように、個々のクラスをさらにまとめたものをメタクラスと呼びます。
「ミケ」や「タマ」などの個々の「猫」オブジェクトをすべて集めたものを「猫」クラスと呼ぶように、「猫」クラス、「犬」クラスなどモデル作成で使用するクラスをすべて集めたもの、つまりクラスのクラスをメタクラスと呼びます。
図2−1メタモデリング
図2−1の例で示される様に、「人」クラスや「車」クラスは「Class」というメタクラスのインスタンスの関係になります。
また注意を要する点として、モデル作成で使用される要素は、メタモデル化されるとすべてメタクラスとなります。
つまり、モデル作成で用いられる関連「所有する」は、メタモデルでは「Association(関連)」メタクラスとなります。
そして、通常のモデル図の世界とメタモデル図の世界は別のレイヤー(層)として区別され、モデル作成を行うレイヤーのことをモデルレイヤー、メタモデルのレイヤーをメタモデルレイヤーと呼び、レイヤー間の個々の要素の関係はインスタンスの関係となります。(図2−1中の<<InstanceOf>>というステレオタイプで示された従属関係)