HOME / PREVIOUS / NEXT


Class図

Class図とは
クラスの静的な構造や、クラスどうしの静的な構造を描く図。
Keywords
Class(クラス)
Property(属性)
Operation(操作)
ステレオタイプ
Generalization(汎化)
Realization(実現)
Association(関連)
Aggregation(集約)
Composition(合成)
Dependency(依存)

クラス図の例

まずは簡単な例を1つ挙げる。

ここに出てきた様々な要素について、ここから説明したい。

クラスの表現

クラスは次のように表される。

クラスの名前だけ。
名前を斜体にしているのは
abstractクラスであるため。
属性と操作の名前を追加
属性と操作の詳細を追加

クラスを表すときには、必要に応じてこのように書き方を変えることができる。

詳細の記述方法について説明する。

ステレオタイプ

クラスによってアクターやインタフェースを表現する場合がある。その場合、ク ラスの名前にステレオタイプをつけて表す。

次の例は、インタフェースを表現した例である。

この図をJavaのコードで表すと、
interface vehicle{
public void run();
}
となる。

汎化(Generalization)と特化(specialization)

次に、クラス間に引かれているパスについて見てみる。
最初に、クラスCarと、クラスTruck、FamilyCarの間の線に着目する。

この線は「汎化」を表している。汎化関係とは、より特化(specialization)した クラシファイア(*)と、より一般的な クラシファイアの間の関係のことである。
たとえば、上の例で言うと、CarはTruckやFamilyCarのより一般的な分類であり、 逆にTruckやFamilyCarはCarの中の特定の分類である。

矢印のない側に特化したクラシファイア、矢印のある側に汎化したクラ シファイアを書く。矢印は必ず白抜きの三角形を使い、線は実線を用い る。

上のCarとTruckの関係をJavaで表すと、次のようになる。
class Truck extends Car{}

(*)クラシファイア(classifier) : 分類子。クラスやインタフェースはすべてこ れに含まれる。

実現(Realizaition)

インタフェースVehicleとクラスCarの間の破線の矢印を見てみる。

「実現」とは、一方が仕様(specification)を表すクラシファイアで、一方がそれを実装 (implementation)しているクラシファイアであるような2つのクラシファイア間 の抽象的関係である。
たとえばVehicleとCarの例では、インタフェースVehicleという仕様を、クラス Carが実装している。

UMLで書くときには、白抜きの三角矢印と破線を用いる。

上の例をJavaで書くとすると次のようになる。
abstract class Car implements Vehicle{}

関連(Association)、Aggregation(集約)、Composition(合成)

「関連」というのは、2つの要素間の意味論的な関係のことである。「集約」「合成」はどちらも「関連」の種類の1つである。

それぞれ、次のように表す。

関連
集約
合成

関連の方向を表示したいときには矢印を用いる。
また、最初の例のPersonとHandleの間の関連の「use」のように、関連名を書い てもよい。

多重度

最初の例では、関連を表す矢印の始点と終点の近くに、数字が書かれている。こ れは「多重度」といって、このクラスがインスタンス化したときの数の 上限と下限を表す。

たとえば、VehicleとPersonの間の関連には、それぞれ「0..*」と「1」という数 字が書かれている。
これは、Person「1人」がVehicleを「0個以上(上限なし)」持つことができる、と いうことである。(「*」は上限なしを表す)

Role(役割)

PersonとHandleの関連には、その始点と終点の近くに「driver」「handle」とい う文字がある。これは、この関連でそれぞれが表すRoleを示している。

依存(dependency)


HOME / PREVIOUS / NEXT