【1】クラス図
+----------------------+ | << ステレオタイプ >> | | クラス名 | +----------------------+ | 属性 | +----------------------+ | 操作 | +----------------------+ +-----------------------------------+ | 従業員 | +-----------------------------------+ | - 名前 : String = "Mike" | +-----------------------------------+ | + 名前設定 (名前 : String) : void | +-----------------------------------+
【2】属性 / attribute
可視性 属性 : 型宣言 = 初期値
例
- 名前 : String = "Mike"
可視性
* 他のクラスなどから参照・操作可能かどうかを4段階で設定している
一覧
* public (+) 全てのクラスからアクセス可能 * protected (#) 自分のクラスとそれを継承するクラスからのみアクセス可能 * private (-) 自分のクラスからのみアクセス可能 * package (~) 自分のクラスと同一パッケージに所属するクラスからのみアクセス可能
【3】操作 / operation
* Javaのメソッドに当たる 可視性 操作名 (引数名 : 引数の型) : 戻り値の型
例
+ 名前設定 (名前 : String ) : void
【4】関連 / Association
* クラス間に構造的な関係がある場合に使用 * 2つのクラスを実線で結ぶ(点線になっちゃってるけど)
イメージ
+--------+ +--------+ | 従業員 | | 会社 | +--------+ +--------+ | |-----------| | +--------+ +--------+ | | | | +--------+ +--------+
関連名
+ 関係性を表す + 関連名は、任意 + 黒塗りの三角(『>』だけど)で、関連の方向性を明示可能(任意)
イメージ
+--------+ +--------+ | 従業員 | | 会社 | +--------+ 仕事する > +--------+ | |------------| | +--------+ +--------+ | | | | +--------+ +--------+
誘導可能 / Navigate
+ 以下のクラス図でいうと、Aクラス(左)が、Bクラス(右)のインスタンス変数を含んでいる + 実線の矢印(『--->』だけど)で表す
イメージ
+--------+ +--------+ | A |----------->| B | +--------+ +--------+
使用パターン
+ 以下の3つ (1) 引数で参照する場合 (2) ローカル変数として参照する場合 (3) グローバル変数に参照する場合
【5】集約 / Aggregation
+ 以下のクラス図でいうと、Aクラス(左)が、Bクラス(右)を 保持している(AクラスがBクラスを所有している関連) + 白塗りの菱形(『<>』だけど)で表す + 例「買い物リスト」と「商品」:商品がなくても、買い物リストが存在する(結びつきが少ない)
イメージ
+--------+ +--------+ | A |<>--------->| B | +--------+ +--------+
合成 / Composition
+ 基本、集約と同じだが、こちらは結びつきが強い + 黒塗りの菱形(『<|>』だけど)で表す + 例「車」と「タイヤ」:タイヤがないと、車として存在できない(結びつきが強い)
イメージ
+--------+ +--------+ | A |<|>-------->| B | +--------+ +--------+
依存 / Dependency
+ 以下のクラス図でいうと、Aクラス(左)が、Bクラス(右)のインスタンス変数を含んでいる + 点線の矢印(『- ->』だけど)で表す
イメージ
+--------+ +--------+ | A |- - - - - ->| B | +--------+ +--------+
使用パターン
+ FactoryMethodパターンなどで使用される
http://www.rarestyle.net/main/patterns/abstractfactory.aspx
【6】汎化 / Generalization
* サブクラスからスーパクラスを生成すること
イメージ
┌───┐ │哺乳類│ └─┬─┘ │ ∧ ┌─────┬─────┐ │ │ │ ┌─┴──┐┌─┴──┐┌─┴──┐ │ 人間 ││ 馬 ││クジラ │ └────┘└────┘└────┘
is-a 関係
* プログラムで書くと以下の通り。 public class parent {} public class child extends parent {}
【7】特化 / specialization
* スーパクラスをサブクラスに分解すること
関連記事
図作成ツール / サイト ~ Draw.io(Desktop) / LucidChart ~
https://dk521123.hatenablog.com/entry/2019/11/21/223833
ER図、DFD
ロバストネス分析