UML:クラス図についてのメモ
前提
- Javaで実装する前提で考える
クラス図
基本的な考え方
- 1つの概念 = 1つのクラスと考える
- 概念間の 関係(Relatioships) を明示的に記述することで、概念が指し示す意味をより明確にする
関係(Relatioships) の類型
- インスタンスレベルのものとクラスレベルのものが存在する [1]
- インスタンスレベル
- 関連( Association )
- コンポジション( Composition )
- 集約( Aggregation )
- 依存( Dependency )
- クラスレベル
- 汎化( Generalization / Inheritance ) : 継承,
extends
を使う時はこちら - 実現( Realization / Implementation ) : interface,
implements
を使う時はこちら
- 汎化( Generalization / Inheritance ) : 継承,
関係(Relatioships) の図での記述ルール
関連(Association)
Link
SourceとTarget
- 左側のクラス - 関連名 - 右側のクラスには、英語の
「主語(S) - 動詞(V) - 目的語(O)」
の関係がなりたつ- 例えば以下の図は、
「購読者は/雑誌を/購読する」
と読み替えることができる - 主語になる側を ソース (Source) , 目的語になる側をターゲット(target)と呼ぶ
- 例えば以下の図は、
実装パターン
public class Source{ private Target target; ... }
多重度(Multiplicity)
定義
多重度の記載方法
下限値の考え方
- 下限が0の場合 : インスタンスの初期化に際し、関連するインスタンスの初期化が必須ではない(なくてもいい) [4]
- 下限が1の場合 : インスタンスの初期化に際し、関連するインスタンスの初期化が必須(参照型変数にポインタが入っていなければならない)
脚注/参考
[1] Wkipedia上は、他にGeneralレベルのものがあるが割愛 https://en.wikipedia.org/wiki/Class_diagram#Realization/Implementation
[2] 『UMLモデリング入門』P60
[3] 『UMLモデリング入門』P61
[4] 『ダイアグラム別UML徹底活用 第2版』P59