クラス図
概要
クラスおよびクラス間の関連を示す図です。
表記法
クラス図では以下の要素を使用します。
要素 | 表記 | 説明 |
クラス | ![]() | クラスを表します。属性とメソッドの区画はそれぞれ省略可能です。 |
関連 | ![]() | 関連を表します。 |
集約 | ![]() | 全体と部分を表します。 |
コンポジション | ![]() | 強い集約です。 |
継承 | ![]() | 継承を表します。 |
実装 | ![]() | 多重継承をサポートしない言語を想定する場合、実装を使います。 |
クラスの詳細
書式
基本的に長方形で示します。

属性やメソッドはそれぞれ省略可能ですので、 クラス名のみの記載、クラス名と属性の記載、クラス名とメソッドの記載等でもかまいません。

属性やメソッドはそれぞれ省略可能ですので、 クラス名のみの記載、クラス名と属性の記載、クラス名とメソッドの記載等でもかまいません。
名称 | 書式 | 説明 | |||||||||
クラス名 | クラス名 | クラス名を記載します。抽象クラスの場合は斜体で記述します。 | |||||||||
属性 | 属性名 | 属性だけを表記する書式です。 | |||||||||
[可視性] 属性名 : 型[ = 初期値] [{制約}] | 型情報も記載する書式です。初期値がある場合、初期値も記述できます。クラスフィールドの場合は下線を引きます。 可視性は以下の4つが定義されています。
|
||||||||||
… | …と記述することで、明記されているもの以外にも属性が存在することを示せます。 | ||||||||||
メソッド | メソッド名() | メソッド名だけを表記する書式です。 | |||||||||
[可視性] メソッド名([引数 : 型]…) : 戻り値の型 | 型情報も記載する書式です。クラスメソッドの場合は下線を引きます。 | ||||||||||
… | …と記述することで、明記されているもの以外にもメソッドが存在することを示せます。 |
他の属性から導き出せる属性を派生属性といい、
分析では明記する場合があります。
先頭に/を記入して派生属性であることを示します。
クラス間関係
関連
クラスとクラスの間の関連を矢印で示します。

各関係には上記のように関連端名や多重度をつけることができます。
多重度は線の上でも下でも問題ありません。

各関係には上記のように関連端名や多重度をつけることができます。
多重度は線の上でも下でも問題ありません。
名称 | 説明 | ||||||||||||
多重度(multipricity) | 1つのインスタンスに対しどれだけの数のインスタンスが関連するかを示します。 値あるいは最小値..最大値で取りうる値を示します。 *は上限なしを表します。 矢印の下に記述します。
|
||||||||||||
関連名 | 役割を矢印の上に記述します。 | ||||||||||||
関連端名 | 矢印の上に記述します。 |
関連の誘導可能性
関連の可能性を以下に示します。
表記 | 説明 |
![]() | 関連未定 |
![]() | 関連確定 |
![]() | 関連なし |
継承
スーパークラスが上になるように配置するのが一般的です。
複数のサブクラスがある場合は以下のように記述します。
または
複数のサブクラスがある場合は以下のように記述します。


例
概要 | 表記 | 説明 |
クラス | ![]() | クラス内からのみアクセス可能な属性1、メソッド1があり、それ以外のメソッドがあることを示します。 |
抽象クラス | ![]() | クラス名を斜体にします。 |
多重度 | ![]() | クラスAに対し、複数のクラスBが対応します。クラスBに対してはクラスAは1つのみ対応します。 |
再帰 | ![]() | 再帰を表します。 |
誘導可能性 | ![]() | AからBへの関連があることを示します。BからAへの関連は未定です。 |
誘導可能性(単方向) | ![]() | AからBへの関連があることを示します。BからAへの関連はありません。 |
誘導可能性(双方向) | ![]() | AとBは双方向に関連があることを示します。 |
新旧対応(2.0と1.5)
1.5との相違点です。
項目 | 2.0 | 1.5 | 説明 |
関連端名 | 関連端名 | 役割名 | 1.5では名称が役割名になります。 |
関連の誘導可能性 | ![]() | ![]() | 両方向の関連です。 |
![]() | ![]() | 一方通行の関連です。 |