Диаграмма объектов - это графическое представление, демонстрирующее объекты и их взаимосвязи в определенный момент времени. Она дает представление о структуре системы, фиксируя статический вид присутствующих экземпляров и их связей.
PlantUML предлагает простой и интуитивно понятный способ создания объектных диаграмм с помощью обычного текста. Его удобный синтаксис позволяет быстро создавать диаграммы, не прибегая к сложным средствам графического интерфейса. Кроме того, на
форуме PlantUML пользователи могут обсуждать, обмениваться опытом и обращаться за помощью, что способствует формированию коллективного сообщества. Выбирая PlantUML, пользователи получают преимущества как от эффективности построения диаграмм на основе markdown, так и от поддержки активного сообщества.
Вы можете определить объекты используя ключевое слово
object
.
🎉 Copied!
|
@startuml
object первыйОбъект
object "Второй объект" as o2
@enduml
|
Взаимосвязи между объектами (согласно нотации UML) задаются с помощью следующих символов:
Тип
|
Символ
|
Отображение
|
Наследование
|
<|--
|
|
Композиция
|
*--
|
|
Агрегация
|
o--
|
|
Зависимость
|
<..
|
|
Ассоциация
|
<--
|
|
Реализация (Имплементация)
|
<|..
|
|
Если рассматривать более универсально,
- есть два типа линий:
--
- рисует сплошную линию
..
- рисует штриховую линию
- к любой стороне (или сразу к обоим сторонам) линии, соединяющей два элемента, можно добавить разные наконечники:
<
- рисует заостренный наконечник стрелочки
<|
или ^
- рисует наконечник стрелочки в виде треугольника
*
- рисует неконечник стрелочки в виде сплошного ромба
o
- рисует неконечник стрелочки в виде полого ромба
#
- рисует неконечник стрелочки в виде полого квадратика
x
- рисует неконечник стрелочки в виде крестика
}
- рисует неконечник стрелочки в виде обратного треугольника
+
- рисует неконечник стрелочки в виде кружочка с крестиком внутри
Чтобы добавить к связи текстовую метку, используйте символ
:
и за ним разместите текст метки:
object1 --> object2 : метка
.
Чтобы добавить текстовую метку к началу и/или к концу связи, разместите текст метки в двойных кавычках перед описанием связи и/или после описания связи:
object1 "начало" --> "конец" object2
Примеры:
🎉 Copied!
|
@startuml
object Объект01
object Объект02
object Объект03
object Объект04
object Объект05
object Объект06
object Объект07
object Объект08
Объект01 <|-- Объект02
Объект03 *-- Объект04
Объект05 "к одному" o-- "от многих" Объект06
Объект07 .. Объект08 : некоторая заметка
@enduml
|
Ещё больше примеров можно посмотреть:
🎉 Copied!
|
@startuml
object o1
object o2
diamond dia
object o3
o1 --> dia
o2 --> dia
dia --> o3
@enduml
|
Для добавления полей (свойств) Вы можете использовать символ
:
. Для этого каждый раз указывайте имя объекта, затем символ
:
и затем имя поля, который Вы хотите добавить в этот объект.
🎉 Copied!
|
@startuml
object user
user : name = "Dummy"
user : id = 123
@enduml
|
Чтобы не указывать каждый раз имя объекта, для которого Вы хотите добавить поле (свойство), можно все такие поля для одного объекта указать сразу перечислив их все внутри фигурных скобок {}.
🎉 Copied!
|
@startuml
object user {
name = "Dummy"
id = 123
}
@enduml
|
You can define a map table or
associative array, with
map
keyword and
=>
separator.
🎉 Copied!
|
@startuml
map CapitalCity {
UK => London
USA => Washington
Germany => Berlin
}
@enduml
|
🎉 Copied!
|
@startuml
map "Map **Contry => CapitalCity**" as CC {
UK => London
USA => Washington
Germany => Berlin
}
@enduml
|
🎉 Copied!
|
@startuml
map "map: Map<Integer, String>" as users {
1 => Alice
2 => Bob
3 => Charlie
}
@enduml
|
And add link with object.
🎉 Copied!
|
@startuml
object London
map CapitalCity {
UK *-> London
USA => Washington
Germany => Berlin
}
@enduml
|
🎉 Copied!
|
@startuml
object London
object Washington
object Berlin
object NewYork
map CapitalCity {
UK *-> London
USA *--> Washington
Germany *---> Berlin
}
NewYork --> CapitalCity::USA
@enduml
|
[Ref. #307]
🎉 Copied!
|
@startuml
package foo {
object baz
}
package bar {
map A {
b *-> foo.baz
c =>
}
}
A::c --> foo
@enduml
|
[Ref. QA-12934]
🎉 Copied!
|
@startuml
object Foo
map Bar {
abc=>
def=>
}
object Baz
Bar::abc --> Baz : Label one
Foo --> Bar::def : Label two
@enduml
|
[Ref. #307]
You can use
map table
in order to make
Program (or project) evaluation and review technique (PERT) diagram.
🎉 Copied!
|
@startuml PERT
left to right direction
' Horizontal lines: -->, <--, <-->
' Vertical lines: ->, <-, <->
title PERT: Project Name
map Kick.Off {
}
map task.1 {
Start => End
}
map task.2 {
Start => End
}
map task.3 {
Start => End
}
map task.4 {
Start => End
}
map task.5 {
Start => End
}
Kick.Off --> task.1 : Label 1
Kick.Off --> task.2 : Label 2
Kick.Off --> task.3 : Label 3
task.1 --> task.4
task.2 --> task.4
task.3 --> task.4
task.4 --> task.5 : Label 4
@enduml
|
[Ref. QA-12337]
Simple example
🎉 Copied!
|
@startuml
class Class
object Object
json JSON {
"fruit":"Apple",
"size":"Large",
"color": ["Red", "Green"]
}
@enduml
|
[Ref. QA-15481]
For another example, see on
JSON page.