👽

クラス図と矢印記法を忘れるのでメモ

2023/01/09に公開

はじめに

参照 画像引用元
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