八葉の日記

日々、感じたことをまとめる場として利用する

クラス図について... その3

■分類と汎化

よく汎化のことを、ia-a関係というが注意しないといけないことがある。

それは以下のいずれもia-a関係であるということ。

・分類:ポチはボーダーコリーです。(ポチ is ボーダーコリー)

・汎化:ボーダーコリーは血統です。(ボーダーコリー is 血統)

 

サブタイプ化(汎化)をする際には、2つの上が混在したりしないように注意が必要となる。

 

■多重分類

一つのクラスに複数のサブセットタイプがつくこと。

この概念をそのまま実装することは難しい(やり方がない?)ため、概念レベルの設計で利用されることもあるけど、個人的にはわざわざ一般的でない書き方をしなくても...と思う

f:id:konboi_kun:20170128150443j:plain

 上の図では、Carクラスは、グレード(HighとLow)と駆動方式(4WD、FD、FR)の2つのサブクラスのセットに属している。

 

■関連クラス

関連クラスは関連に付くクラスであり、これにより関連に属性、操作を追加できる。

関連クラスのインスタンスは、関連両端のオブジェクトに対して1つしか存在できないという制約が付く。

このため、1つしか存在しない場合は関連クラス、1つ以上存在する場合は普通のクラスとしてモデル化する。