👽
クラス図と矢印記法を忘れるのでメモ
はじめに
参照 画像引用元
https://cacoo.com/ja/blog/how-to-write-class-diagram/
クラス
アクセス修飾子
- 「+」 public すべてのクラスからアクセス可能
- 「-」 praivete 自クラスのみアクセス可能
- 「#」 protected 自クラスおよび継承されているクラスからアクセス可能
- 「~」 package private 同一パッケージ内のクラスからアクセス可能
属性
- 属性名: データ型
操作
- 操作名(引数名:データ型):戻り値型
インターフェース
<<interface>>をつける
矢印
-
呼び出し元のインスタンスから見た関係性を書く ので
- コードに起こすと
- 矢印の元側が呼び出し元のイメージ。
- 矢印の先が呼び出し先(callee, invokee)
つまり、矢印の先は呼び出し元の存在を知らない(としてもなんとかなるケースが多い)
- コードに起こすと
-
関連
- 多重度のあれ
-
1
: 厳密に1 -
*
: 複数 -
0..*
: 0以上 -
1..*
: 1以上 -
0..n
: 0 ~ nの範囲 -
a, b, c
: 数値a, b, cのいずれか
-
- 「そのインスタンスが1つあった時、相手側のインスタンスは何個関係するか」を書く
- 多重度(関係性)は相手側の関連端に書く
- 多重度のあれ
-
汎化 = 継承
-
実現 = インターフェース
-
集約とコンポジット
- 集約: 全体と部分
- コンポジット(コンポジション):
- 「全体」クラスが「個別」クラスの生成や削除の権利があるときに使用
- 「強い結びつきがあるとき」に利用する
- 矢印の元側がないと成立しない場合に記載する
タイヤは車のコンポジットだが、剣は勇者のコンポジットではない。("勇者の剣"はコンポジット?)
諸説あるので、チームのコンテキストとして統一できればいい
Discussion