UML-その2

前回はUMLのクラス図を取り上げました。今回はこのUMLのクラス図の関係を
取り上げようと思います。
この関係の表記にはいくつかありますが、その中で代表的な関係表記である“多重
度”、“汎化”、“集約”を取り上げようと思います。この関係表記はクラスを体系
的に整理するために使用されます。

クラスには属性の定義と操作(=機能)の定義がありました。従来の情報システムで
いえばデータベースサブシステムのようなものです。データベースですから、クラス
の属性であるデータ項目にはキーデータ項目が含まれています。情報モデルの項でも
述べましたように、データベース間にその含まれるレコードの関係が成り立ちまし
た。クラスも属性を有するレコードがたくさんあると考えて良いわけですから、クラ
ス間の関係が存在することになります。

(1)多重度の表記
この表記はクラス間のキー項目属性の関係を表すものです。
たとえば、受注伝票の項目属性を持つ受注クラスと顧客レコードの項目属性を持つ
顧客クラスの関係は、受注伝票には顧客NOキーが必ず1つありますので、受注クラ
スと顧客クラスの関係は“1”、同様にして、顧客クラスから受注クラスの関係を見
れば、1つの顧客は複数の注文を発行もしますし、1回だけの注文で終わっている顧客
もあるでしょうから、“1”から固定できない複数の値としての“N”の関係、
1からNの関係が成り立っています。
 この関係をUMLでは1個の関係を“1”と表記し、1個からN子の関係を
“1..N”という表記をして関係を明示的にします。

(2)汎化の表記
 汎化とは汎用化のことです。何を汎用化するかというとクラスの属性です。
よく例に引かれていますのは動物と人間、犬、猫との関係です。動物をスーパクラス
といい、人間、犬、猫をサブクラスとして位置づけます。この関係は動物としての
共通属性、食べる、動く、見る、声を出す、目、足など共通属性が多くあります。
これらの属性を動物クラスとすると、人間、犬、猫のそれぞれのクラスは動物クラス
以外の独自属性を持てば良いことになります。
 この動物クラスに共通属性をまとめて持たせることを“汎化”といいます。一方、
人間、犬、猫のサブクラスは動物クラスの下位として存在し、サブクラスを参照する
ときには上位の動物クラスの属性も共有できる構造にすればそれぞれの特徴を生かし
たクラス構造が出来上がります。
 このサブクラスを参照したときに上位のスーパクラスの属性も共有できるようにする
ことを“継承”といいます。
 情報システムのデータベースに置き換えますと、業績予実クラスなどがスーパクラス
に該当します。サブクラスとしては受注クラスや出荷クラスなどが該当します。業績
予実クラスは部門や、営業員、商品、顧客に対する受注目標や出荷目標といった計画
情報と実績サマリー情報を有することになります。サブクラスはそれぞれの計画値に
対する個々の実績項目を有しています。UMLで言う汎化の関係にあります。

(3)集約の表記
 集約の関係の例は自動車クラスです。自動車はエンジン、車体、ハンドルタイヤ、
シャーシといった部組(=部分組立品)から構成されます。これらの属性を見ます
と、汎化の例と違って共通の属性がありません。ただし、自動車はこれらの部組が
あって初めて機能する実体となります。この関係が“集約”です。
 情報システムに置き換えますと、商品クラスと商品カテゴリークラスがこの関係に
あります。
商品カテゴリー毎に異なるサブクラスの属性が存在することになります。

第64回はここで終了します。UMLのクラスの関係性を取り上げました。
次回は、クラス図の機能を決めるシーケンス図を「UML―その3」として取り上げます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする