オブジェクト図はクラス図と同様の文法で記述することができます。 下記のページも参考にしてください。
オブジェクト図の基本
オブジェクト図 (object diagram) は、システム内のオブジェクト群のある時点のスナップショットを表現します。 具体的なオブジェクト同士の関係を表現することができるため、複雑な依存関係を持つオブジェクト
インスタンス名は下線付きで「インスタンス名:クラス名」という形式で記述します。 インスタンス名とクラス名はどちらか一方を省略して記述することもできますが、クラス名だけを記述する場合は、「:クラス名」のようにコロン部分だけは残して記述します。
オブジェクト図は、メッセージなしのコミュニケーション図と考えることもできます。 ─『UMLモデリングのエッセンス第3版』マーチン・ファウラー
PlantUML で登場させるオブジェクト群は、object
キーワードを使って定義します。
as
を使って別名を付けておくことができます。
@startuml
object object1
object "My second object" as o2
@enduml
関連の線を引く
オブジェクト同士の依存関係を示すには、--
でオブジェクト名(あるいは別名)を繋ぎます。
代わりに ..
を使用すると、破線 (dashed line) で繋ぐことができます。
@startuml
object object1
object "Second object" as o2
object "Third object" as o3
object "Fourth object" as o4
object1 -- o2
object1 -- o3
object1 -- o4
o2 .. o3
o3 .. o4
@enduml
ハイフンやドットの数を 1 つに減らすことで、オブジェクトを横方向に配置することができます。
@startuml object-lines2
object object1
object "Second object" as o2
object "Third object" as o3
object "Fourth object" as o4
object1 -- o2
object1 -- o3
object1 -- o4
o2 . o3
o3 . o4
@enduml
オブジェクト名に下線を引く
オブジェクト図らしく、オブジェクト名に下線を引くには下記のようなマークアップを使用します。
@startuml
rectangle "<u>tools: Organization</u>" as tools
rectangle "<u>John : Person</u>" as john
rectangle "<u>Don : Person</u>" as don
tools -- john
tools -- don
@enduml
上記では、object
キーワードの代わりに rectangle
キーワードを使ってオブジェクトを定義しているため、属性部分が表示されず、単純な矩形としてオブジェクトが表示されています。
関連を示すテキストを追加する
関連の線に沿う形でテキストを表示するには下記のようにします。 それぞれのオブジェクトに近い位置、あるいは中央に配置できます。
@startuml
object Parent
object Child1
object Child2
object Child3
Parent "parent" -- Child1
Parent -- "child" Child2
Parent -- Child3 : family
@enduml
属性を表示する
オブジェクトの属性(フィールド)を表示するには、下記のように、オブジェクトを定義した後で、オブジェクト名 : フィールド
というフォーマットで記述していきます。
@startuml
object "<u>tools: Organization</u>" as tools
object "<u>apps: Organization</u>" as apps
tools : location = "Chicago"
apps : location = "Saba"
@enduml
複数の属性を表示したいときは、次のように属性定義の行を追加していくか、
@startuml
object "<u>tools: Organization</u>" as tools
object "<u>apps: Organization</u>" as apps
tools : location = "Chicago"
tools : id = 100
apps : location = "Saba"
apps : id = 200
@enduml
あるいは、object
定義時にブロックを付加して属性を列挙します。
属性が 1 つだけの場合も、このようにブロックを使って記述しちゃった方がまとまりがあって分かりやすいかもしません。
オブジェクト図のサンプル
最後に複雑なオブジェクト図のサンプルを載せておきます。
出典:『UMLモデリングのエッセンス第3版』マーチン・ファウラー著