UML Relationships

Visual Notation

RelationshipNotationMermaid
AssociationSimple arrowA --> B
DependencySimple arrow, dashed lineA ..> B
AggregationSimple arrow, empty diamond backA o-- B
CompositionSimple arrow, filled diamond backA *-- B
InheritanceEmpty triangle headA —|> B
RealizationEmpty triangle head, dashed lineA ..|> B

Relationship Reference

RelationshipQuestionExampleKey Property
Association”Does A use/know B?”Customer → OrderA holds a reference to B
Dependency”Does A temporarily use B?”Order → TaxCalculatorB appears only in method param/return, not stored
Aggregation”Does A have B, but B can exist alone?”Team → PlayerA contains B; B has independent lifecycle
Composition”Does A own B, and B cannot exist alone?”Car → EngineB’s lifecycle is bound to A
Inheritance”Is A a B?”Dog → AnimalA is a subtype of B
Realization”Does A implement interface B?”Dog → IAnimalA fulfills the contract defined by B

Notes

  • Composition vs Aggregation: Both use diamond notation. The difference is lifecycle — in composition, the contained object cannot exist without the container. In aggregation, it can.
  • Association vs Dependency: Association implies a persistent reference (field). Dependency implies a transient use (local variable, parameter).
  • Inheritance vs Realization: Inheritance is class→class. Realization is class→interface.
  • Abstract class: Name written in italic in diagrams.
  • <<extend>> / <<include>>: These are use case diagram relationships, not class diagram relationships. Do not confuse with Inheritance/Realization.

Mermaid Example

classDiagram
    Animal <|-- Dog
    IAnimal <|.. Dog
    Car *-- Engine
    Team o-- Player
    Customer --> Order
    Order ..> TaxCalculator