司会 前回も少し触れましたが、「関連」も“Class”と同じく分類子の一種です。このあたりを今回見てみましょう。UML仕様書には「関連は、型付けられたインスタンス間に発生し得る意味的関係を指定する。2つ以上の終端を持ち、それぞれ型への接続を表すプロパティを持つ」(Infrastructure version 2.1.1 "11.3.1 Association")とあります。「型付けられたインスタンス」とは、例えば、M1レベルのクラス図で使用されるクラスです。関連の両端が、それぞれクラスとつながるわけです。
開発者 クラスとクラスが関連していると考えるより、関連がクラスとクラスをつないでいると考えるわけですね。
司会 前回お見せした「“Class”周辺のメタモデル」の図にメタクラス“Association”(「関連」)を追加すると、次のようになります(図1)。
司会 ご覧のように、メタクラス“Association”は“Classifier”の一種ですが、同時に“Relationship”の一種でもあります。このように、複数の親から継承することを「多重継承」と呼びます。この再利用の仕組みを用いてモデル要素をどんどん定義していくのも、UML仕様書の特徴です。図1の“Association”と関連している“Property”は関連端として定義されます。これは例えば、M1レベルのクラス図でいえば関連の両端がそれぞれクラスにつながっているイメージです。多重度が2以上となっているのは、普通の関連では2つのクラス間の意味的な関係を表す2項関連なので多重度は2になりますが、3つ以上のクラスの間の関連を表すn項関連もあるためです。
司会 「関連クラス」というモデル要素も多重継承で定義されています(Superstructure version 2.1.1 "7.3.4 AssociationClass")。以下に示す図2のように、メタクラス“Association”(「関連」)と“Class”(「クラス」)を多重継承しています。つまり、関連クラスは関連の一種であるので、複数のクラスを意味的に関係付ける機能があります。と同時に、クラスの一種でもあるので、通常のクラスのように属性と操作を持ちます。このように、多重継承をうまく使えば、複数の親の特性を再利用した新たな要素を作れる可能性が開けてきます。
司会 今回は、UML2のメタモデルによる仕様の語彙の幅と深さを段階的に拡大していく仕組みについて見てきました。特に、「要素定義の方法のベースとして、継承および多重継承の仕組みを用いて親の特性を引き継ぎ、名前の異なる新たな要素を追加して語彙を広げていく」「パッケージのマージを用いて、同じ名前の要素の意味付けを拡張し、深めていく」という2点に注目してみました。
ソクラテス 知識とは何かを考えるのに、また1つのヒントを得た。
某 継承により語彙を増やしていき、マージにより意味を深めていく。
ソクラテス 幅も深さも、一歩一歩段階的に拡大していく。
司会 どうもありがとうございました。次回も引き続き、「知識とは何か?」について考えていきたいと思います。よろしくお願いします。
河合 昭男(かわい あきお)
大阪大学理学部数学科卒業、日本ユニシス株式会社にてメインフレームのOS保守、性能評価の後、PCのGUI系基本ソフト開発、クライアント/サーバシステム開発を通してオブジェクト指向分析・設計に携わる。
オブジェクト指向の本質を追究すべく1998年に独立後、有限会社オブジェクトデザイン研究所設立。 OO/UML関連の教育コース講師・教材開発、Rational University認定講師、東京国際大学非常勤講師。
ホームページ:「オブジェクト指向と哲学」
Copyright © ITmedia, Inc. All Rights Reserved.