## Object Diagram
## Definition of objects
You define instances of objects using the ``object``
keyword.
@startuml
object firstObject
object "My Second Object" as o2
@enduml
## Relations between objects
Relations between objects are defined using the following symbols :
| Type | Symbol | Image |
| ----------- | -------- | ------------------ |
| Extension | ``<|--`` |  |
| Composition | ``*--`` |  |
| Aggregation | ``o--`` |  |
It is possible to replace ``--`` by ``..`` to have a dotted line.
Knowing those rules, it is possible to draw the following drawings.
It is possible a add a label on the relation, using ``:`` followed by the text of the label.
For cardinality, you can use double-quotes ``""`` on
each side of the relation.
@startuml
object Object01
object Object02
object Object03
object Object04
object Object05
object Object06
object Object07
object Object08
Object01 <|-- Object02
Object03 *-- Object04
Object05 o-- "4" Object06
Object07 .. Object08 : some labels
@enduml
## Associations objects
@startuml
object o1
object o2
diamond dia
object o3
o1 --> dia
o2 --> dia
dia --> o3
@enduml
## Adding fields
To declare fields, you can use the symbol ``:`` followed by
the field's name.
@startuml
object user
user : name = "Dummy"
user : id = 123
@enduml
It is also possible to group all fields between brackets ``{}``.
@startuml
object user {
name = "Dummy"
id = 123
}
@enduml
## Common features with class diagrams
* [Hide attributes, methods...](class-diagram#Hide)
* [Defines notes](class-diagram#Notes)
* [Use packages](class-diagram#Using)
* [Skin the output](class-diagram#Skinparam)
## Map table or associative array
You can define a map table or [associative array](https://en.wikipedia.org/wiki/Associative_array), with `map` keyword and `=>` separator.
@startuml
map CapitalCity {
UK => London
USA => Washington
Germany => Berlin
}
@enduml
@startuml
map "Map **Contry => CapitalCity**" as CC {
UK => London
USA => Washington
Germany => Berlin
}
@enduml
@startuml
map "map: Map" as users {
1 => Alice
2 => Bob
3 => Charlie
}
@enduml
And add link with object.
@startuml
object London
map CapitalCity {
UK *-> London
USA => Washington
Germany => Berlin
}
@enduml
@startuml
object London
object Washington
object Berlin
object NewYork
map CapitalCity {
UK *-> London
USA *--> Washington
Germany *---> Berlin
}
NewYork --> CapitalCity::USA
@enduml
*[Ref. [#307](https://github.com/plantuml/plantuml/issues/307)]*