LoginSignup
6
0

More than 1 year has passed since last update.

マーメイド#9 クラス図1

Last updated at Posted at 2022-12-13

ひとりマーメイド9日目
クラス図1

概要

マーメイドエンジニアのひろきです。こんにちは。
最近流行り(流行らせたい)のマーメイドについて理解を深めていこうと思います。

この記事ではクラス図の記法を紹介します!

↓↓前回の記事はこちら

クラス図ってなんですか!

前回の記事ではシーケンス図の基本構文を紹介しました!

今日はクラス図を見ていきます。クラス図とは一言で言うとオブジェクト指向の設計図です。クラス、メンバ、メソッドおよびこれらの関係を表すことができます。

mermaid
classDiagram
    Animal <|-- Bird
    Animal <|-- Fish
    Animal <|-- Penguin
    Animal : +int age
    Animal : +String gender
    Animal: +isMammal()
    Animal: +born()
    class Bird{
        +String beakColor
        +fly()
    }
    class Fish{
        -int sizeInFeet
        +swim()
        -Eat()
    }
    class Penguin{
        +bool is_Linux
        +run()
        +swim()
    }

クラス図の見方

クラス図には3つの段があります。上段にはクラスの名前、中段にはメンバ、下段にはメソッドが入ります。

クラスの定義

classでクラス名を定義して、その下に属性とメソッドを記述します。属性とメソッドの違いは()の有無です。

クラスの定義には2種類の記法があります。

記法1
クラス名:に続いてメンバ,メソッドを記述します。

classDiagram
    class User
    User: +String id
    User: +String name
    User: +post()
    User: +like()

記法2
クラスごとに{}で囲って属性とメソッドをまとめて記述します。筆者はこっち派です。

classDiagram
    class User{
        +String id
        +String name
        +post()
        +like()
    }

引数と返り値

メソッドの引数と返り値の型を記述することができます。返り値の前にはスペースが必要です。
METHOD(引数) 返り値の型

mermaid
classDiagram
    class User{
        +String id
        +String name
        +post(message) bool
        +like(post) bool
    }

これ考えた人絶対タイプスクリプターだ

ジェネリック型

~TYPE~List<int>のようなジェネリック型を記述できます。List<List<int>>のような多重ジェネリックは非対応です。

mermaid
classDiagram
    class User{
        +String id
        +List~String~ message
        +post(List~String~ message) bool
        +like(post) List~String~
    }

やっぱりタイプスクリプターだろ

アクセス修飾子

メンバ, メソッドにアクセス修飾子をつけることができます。

  • +Public
  • -Private
  • #Protected
  • ~Package
mermaid
classDiagram
    class User{
        +String PublicData
        -String PrivateData
        #String ProtectedData
        ~String PackagedData

        +PublicMethod()
        -PrivateMethod()
        #ProtectedMethod()
        ~PackagedMethod()
    }

下線,斜体

メンバとメソッドを強調表示することができます。

  • *斜体
  • $下線
mermaid
classDiagram
    class User
    User: +String id*
    User: +String name$
    User: +post()*
    User: +like()$

関係の定義

矢印でクラス同士の関係を示すことができます。
--|> <|--どちらでもokです。

mermaid
classDiagram
    classA --|> classB
    classC <|-- classD

デフォルトでは矢印の向きは決まっていません。記述内で宣言した順番でクラスが配置され、それらを線で結ぶという順番で描画が進みます。

矢印の種類

矢印の種類を変えることができます。

  • 継承
mermaid
classDiagram
    classA --|> classB
  • コンポジット
mermaid
classDiagram
    classA --* classB
  • 集約
mermaid
classDiagram
    classA --o classB
  • 汎化
mermaid
classDiagram
    classA --> classB
  • 関連(実線
mermaid
classDiagram
    classA -- classB
  • 依存
mermaid
classDiagram
    classA ..> classB
  • 実現
mermaid
classDiagram
    classA ..|> classB
  • 関連(点線)
mermaid
classDiagram
    classA .. classB

全8種類です。

まとめ

クラス図の記述について紹介しました!

↓↓次回の記事はこちら!

参考

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0