KHCの

KHC( https://twitter.com/we_can_panic )が140字を超えるツイートをするところ

俺がMermaidのチートシートを作る(クラス図)

Mermaid、いい感じのチートシートが見つからなかったので作ります

完成図

↑のコード

  ```mermaid
  classDiagram

  %% Original typeの宣言
  class Id { -int value }
  class Name { -string value }
  class Age { -int value }

  %% Enum型の宣言
  class UserType {
    Employee
    Customer
    Administrator
  }
  <<enumeration>> UserType
  %% <<>> の中は何を書いても通る

  %% クラス
  %% クラス内の変数等の書き方は自由(id: Id 等もOK)
  class User {
    +Id id
    +Name name
    +Age age
    -UserType type
    +regist()
    +greeting()
  }
  <<interface>> User

  class EmployeeUser {
    +Id id
    +Name name
    +Age age
    +regist()
    +greeting()
  }

  %% 関係性
  User <|-- EmployeeUser: extends
  User o-- Id
  User o-- Name
  User o-- Age
  User o-- UserType
  ```

記号

https://zenn.dev/tak_uchida/articles/da583cf960e854 より

Mermaidのルールではないが使うので掲載

記載 意味 サンプル
* Abstract foo*, foo()*
$ Static foo$, foo()$
+ Public +foo, +foo()
- Private -foo, -foo()
# Protected #foo, #foo()
~ Package/Internal ~foo

矢印

https://zenn.dev/tak_uchida/articles/da583cf960e854 より

意味はMermaidのルールではないが使うので記載

一覧

記載 意味
A <|-- B 継承
- Aが親クラス
A <|.. B 実現
- Aがabstract
A <-- B 関連
- AがBのクラス内変数
A <.. B 依存
- Aの変更がBに影響を与える
A *-- B 構成
- Aの構成にBが寄与(BはAの子)
A o-- B 集約
- Aの構成にBが寄与(BはAの子とは限らない)
A -- B リンク
- 何かしらの関連
A .. B リンク2
- 弱い関連

サンプル付き一覧

記載 意味 サンプル
<|-- 継承
- Aが親クラス
<|.. 実現
- Aがabstract
<-- 関連
- AがBのクラス内変数
<.. 依存
- Aの変更がBに影響を与える
*-- 構成
- Aの構成にBが寄与(BはAの子)
o-- 集約
- Aの構成にBが寄与(BはAの子とは限らない)
-- リンク
- 何かしらの関連
.. リンク2
- 弱い関連