PlantUMLでクラス図を描く際よく使う記法をまとめています。
#目次
1. フィールド、メソッドの表現
1. 可視性の定義
可視性は以下で表現します。
- : private
# : protected
~ : package private
+ : public
@startuml
class ClassA {
-fieldA : int
#fieldB : String
~methodA() : void
+methodB() : String
}
@enduml
各可視性は記号で表現されます。
コマンド skinparam classAttributeIconSize 0
で可視性の記号化をオフにできます。
業務で使う場合、記号では伝わらない場合があるのでオフにしておいた方が良いかもしれません。
@startuml
skinparam classAttributeIconSize 0
class ClassA {
-fieldA : int
#fieldB : String
~methodA() : void
+methodB() : String
}
@enduml
2. Static、Abstract
静的、抽象的の表現は {static}
、 {abstract}
修飾子を使用します。
@startuml
class ClassA {
{static} +fieldA : String
{abstract} +methodA() : void
}
@enduml
3. 空のフィールド、メソッドの省略
コマンド hide empty members
で空のフィールド、メソッドを省略することができます。
図のサイズを省略できるため気に入っています。
※以降このコマンドを使います。
@startuml
hide empty members
class ClassA {
}
class ClassB {
field
}
class ClassC {
method()
}
class ClassD {
field
method()
}
@enduml
2. クラス間の関係
1. 継承 Extension
UMLでは、汎化、Generalizationと表現されますが、馴染みのある継承と表現しています。
@startuml
hide empty members
abstract class AbstractClassA {
}
class ClassA {
}
AbstractClassA <|-- ClassA
@enduml
2. 実装 Implements
UMLでは、実現、Realization と表現されますが、馴染みのある実装と表現しています。
@startuml
hide empty members
Interface InterfaceA {
}
class ClassA {
}
InterfaceA <|.. ClassA
@enduml
3. 集約 Aggregation
子が親から独立して存在できる関係を表します。
@startuml
hide empty members
Class House {
}
class Persion {
}
House o-- Persion
@enduml
4. 構成 Composition
子が親から独立して存在できない関係を表します。一般に強い集約と表現されます。
@startuml
hide empty members
Class Persion {
}
class Head {
}
Persion *-- Head
@enduml
5. 依存 Dependency
一方がもう一方を使用する、または依存している関係を使用関係や依存関係と呼びます。
@startuml
hide empty members
Class GasStation {
}
class Car {
}
GasStation <.. Car
@enduml
6. 内部クラス Inner Class
内部クラスは以下のように表します。
@startuml
hide empty members
Class OuterClass {
}
class InnerClass {
}
OuterClass +-- InnerClass
@enduml
#3. 関係のラベル
1. ラベル、矢印の追加
クラス間の関係に対して : text
をつけることでラベルを追加することができます。
: text >
とすると矢印を付けることができます。
@startuml
hide empty members
Class ClassA {
}
class ClassB {
}
class ClassC {
}
ClassA -- ClassB : text
ClassB -- ClassC : text >
@enduml
2. 多重度
多重度は関係の両端に""で記載します。
@startuml
hide empty members
Class ClassA {
}
class ClassB {
}
ClassA "1..*" -- "*" ClassB
@enduml
#4. パッケージ
@startuml
hide empty members
package PackageA {
Class ClassA {
}
package PackageB {
Class ClassB {
}
}
}
@enduml
参考文献
この記事は以下の情報を参考にしました。