Диаграмма объектов

Здесь можно ознакомиться с полезными дополнениями, которые можно использовать в любой из поддерживаемых диаграмм:

Определение объектов

Вы можете определить объекты используя ключевое слово 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

Общие с диаграммами классов функции

Map table or associative array

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]

Program (or project) evaluation and review technique (PERT) with map

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]