背景
システムの詳細設計でクラス図を作成する必要があり、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でクラス図を作成する方法を調査、記載した
参考文献
変更履歴
- 2020/04/30: 新規作成
0 件のコメント:
コメントを投稿