2020/04/30

PlantUMLでクラス図作成

背景


システムの詳細設計でクラス図を作成する必要があり、Gitで差分管理が可能なクラス図作成ツールを調査した。

記事の目的


PlantUMLでクラス図を作成する

クラス図


クラス図について記載する。

クラス図とは

クラス図は、システムの静的な構造・関係性を表現する為の図である。つまり、クラスはオブジェクトの型を表現している。

クラス図の描き方

  • オブジェクトの種類
  • @startuml
    class Class
    interface Interface
    abstract Abstract
    enum Enum
    @enduml
    
    オブジェクトの種類には、クラス(Class)、インタフェース(Interface)、抽象クラス(Abstract)、列挙型(Enum)がある。
    • クラス
    • オブジェクトを生成するための設計図あるいはひな形に相当するもの
    • インタフェース
    • クラスに含まれるメソッドの具体的な処理内容を記述せず、変数とメソッドの型のみを定義したもの
    • 抽象クラス
    • 具体的な処理内容を記述せず、メソッド名や引数などの定義だけを宣言したもの
    • 列挙型
    • 複数の変数をまとめたもの
  • 可視性
  • @startuml
    skinparam classAttributeIconSize 0
    class ClassA{
     - field1: str
     # field2: int
     ~ method1(int a): void
     + method2(): int
    }
    @enduml
    
    可視性は、「属性」や「操作」に対してアクセスが可能となる範囲を表現するものである。
    • +: すべてのクラスからアクセスが可能
    • ー: 自クラスからのみアクセスが可能
    • #: 自クラスおよび継承されているクラスからのみアクセスが可能
    • ~: 同一パッケージ内のクラスからのみアクセスが可能
  • 関係を示す線
  • @startuml
    A --> B: 関連 
    C ..> D: 依存
    E o-- F: 集約
    G *-- H: 合成
    I <|-- J: 汎化
    interface K
    K <|.. L: 実現
    @enduml
    オブジェクト間の関係には、関連、依存、集約、合成、汎化、実現があり、線で表現される。
    • -->:  関連 (Association)
    • 関連は、複数のクラス間における関係を表現したものである。
    • ..>:  依存 (Dependency)
    • 依存は、クラス間で関係性はあるが、あまり強くない関係性の場合に使用する。
    • o--:  集約 (Aggregation)
    • 集約は、関連のあるクラス同士が、「全体」と「部分」の関係にある場合に使用する。
    • *--:  合成 (Composition)
    • 合成は、「全体」インスタンスが「部分」インスタンスの生成や削除を担っている場合に使用する。
    • <|--: 汎化 (Extension)
    • 汎化は、クラスAの型を継承し、具体化したクラスBがあるときのAとBの関係性を指す。
    • <|..: 実現 (Realization)
    • 実現は、インタフェースとサブクラスの関係を指す。
  • 多重度と関連のラベル
  • @startuml
    BookShelf "1" o-- "*" Book : contains
    @enduml
    多重度は、関連のあるクラス間において、クラスAから見たクラスBの存在しうる数を表したものである。
    • "*": 任意
    • "n": 値の通り(n)
    • "0..n" または "*": 0以上
    • "1..*": 1以上
    • "m..n": mからnまで

まとめ


  • PlantUMLでクラス図を作成する方法を調査、記載した

参考文献



変更履歴


  1. 2020/04/30: 新規作成

0 件のコメント:

コメントを投稿

MQTTの導入

背景 IoTデバイスの接続環境構築のため、MQTT(mosquitto)の導入を行った。 記事の目的 MQTT(mosquitto)をUbuntuに導入する mosquitto ここではmosquittoについて記載する。 MQTT MQTT(Message Qu...