- 厳密にUMLの規格には合致してないかも知れません
- ↑のような状況なので実用に耐えうる最小限の記述に留めます
- PlantUMLを参照するには以下のChrome拡張をインストールする必要があります。
@startuml
class クラス名 <<ステレオタイプ>> {
+ クラス外部から参照出来るフィールド:型
+ {static} CLASS_FIELD:型
# 自クラスと子クラスから参照出来るフィールド:型
- 自クラスからのみ参照するフィールド:型
+ クラス外部から参照出来るメソッド(引数1, 引数2):型
+ {static}クラス外部から参照出来るクラスフィールド():型
+ {abstract}抽象メソッド():型
# 自クラスと子クラスから参照出来るメソッド():型
- 自クラスからのみ参照するメソッド():型
}
@enduml
classDiagram
class クラス名 {
<<ステレオタイプ>>
+クラス外部から参照出来るフィールド:型
+type CLASS_FIELD$
# 型 自クラスと子クラスから参照出来るフィールド
- 型 自クラスからのみ参照するフィールド
+ クラス外部から参照出来るメソッド(引数1, 引数2):型
+型 クラス外部から参照出来るクラスフィールド()$
+型 抽象メソッド()*
# 自クラスと子クラスから参照出来るメソッド():戻り値の型
- 自クラスからのみ参照するメソッド():戻り値の型
}
- クラスは上記の様な表記で記述されます
- 上から、クラス名、フィールド群、メソッド群を表します
- クラス名以外の枠は省略可能です。記述されている枠がフィールドを表しているのか、メソッドを表しているのかは記載されている物に
()
が付いてるかで判断できます。付いていればメソッドです。 - 省略するケースとしては以下の通りです。
- フィールドは基本的に公開しないため、省略する事が多いです(プロパティ、定数、列挙型の場合は書きますが)
- システム全体を表現するときは、クラス名だけを記載する事が多いです。それだとわかりにくい場合は、代表的な公開メソッドや、定数フィールドを記載します
- フィールド、メソッドのスコープは以下の物があります
+
はpublicを表します#
はprotected(自クラスと子クラスからのみアクセス可能なフィールド)。省略する事が多いかな?-
はprivateを表します。ほぼ記載しません。データモデルとしてのフィールドを表現するなら、プロパティとしてpublicとしても良いです~
はpackage privateを表します。ほぼ記載しません。
- フィールドは
[フィールドの型] [フィールド名]
もしくは[フィールド名]:[フィールドの型]
と表現します。後者の方が可読性は高いのです - フィールドの型は省略可能です。
- メソッドは
[メソッドの戻り値の型] [メソッド名]([引数](,[引数])*)
もしくは[メソッド名]([引数](,[引数])*):[メソッドの戻り値の型]
と表現します。後者の方が可読性は高いです - 戻り値の型や、引数は省略可能です。
- 下線があるフィールドや、メソッドはクラスフィールドや、クラスメソッドを表します
- 斜体のメソッドは抽象メソッド(子クラスで必ず実装する必要があるメソッド)
- ステレオタイプは、そのクラスのアーキテクチャ上の特性や、そのクラスの特徴を表しモデルの視認性を向上させます。ステレオタイプは自由に定義ですが、以下のような代表的な物があります
- interface:インタフェース(実体化できず、処理の実装もされてないメソッド)
- enumeration/enum:列挙型を表す
- Entity/Boundary/Controller:BCEアーキテクチャに基づいた分類