Unified Compliance NextGen
  • UCF NextGen
    • On-Boarding
    • PlantUML
      • Diagrams as Code
        • Why use diagrams as Code tools?
        • Use Cases
        • Introduction to PlantUML
        • Syntax
          • Basic PlantUML Syntax
          • Sequence Diagram
            • Lifelines
            • Messages
            • ExecutionSpecification
            • Autonumber
            • Notes
            • Interactions
            • Organization
          • Use Case Diagram
            • Use Case
            • Actor
            • Associations
            • Organization
            • Notes
          • Class Diagram
            • Classes and Other Entities
            • Attributes and Methods
            • Relationships
            • Organization
            • Notes
          • Object Diagram
            • Objects
            • Relations and Associations
            • Organization
            • Notes
          • Work Breakdown Structure Diagram
            • OrgMode Syntax
            • Arithmetic Notation
            • Styling
          • Activity Diagram
            • Actions and Other Objects
            • Arrows
            • Conditionals
            • Loops
            • Forks, Splits, and Merges
            • Notes
          • Text Formatting
          • Skin Parameters
    • Control Workspace
      • My Frameworks
        • Authority Document Details
        • Common Control Details
      • List Manager
      • Compare
      • Exports
    • UCF Catalog
    • Profile
    • Administration
      • Account Settings
        • General
        • Team
        • Organization
        • Industry
        • Groups
        • Initiatives
      • API Manager
      • Billing
    • API Gateway
Powered by GitBook
On this page
  • Declaration
  • Parts of Relationships
  • Entities
  • Labels
  • Label Text
  • Read Direction
  • Connections
  • Multiplicity
  • Arrowheads
  • Line Orientation
  • Line Type
  • Line Colors
  • Line Thickness
  • With All Properties
  • Written Relationships

Was this helpful?

Export as PDF
  1. UCF NextGen
  2. PlantUML
  3. Diagrams as Code
  4. Syntax
  5. Class Diagram

Relationships

Relationships show associations between different types of classes. For example a class named car has a relationship with a class named wheel.

PreviousAttributes and MethodsNextOrganization

Last updated 1 year ago

Was this helpful?

Declaration

A basic relationship contains two entities and a line showing the relationship between them.

Example: Declaring Relationships

@startuml
'Example: Declaring Relationships

'Create two classes.
class Car 
class Wheel

'Show a relationship between the two classes.
Car - Wheel

@enduml

Parts of Relationships

Relationships are comprised of three parts. Label is the only optional part.

  • entity - the object for which a relationship can be described in a class diagram, must have at least two

  • connection - visual description of the relationship between entities

  • label - textual description of the relationship between entities

Entities

The connected entity can be a class, attribute, or method. Classes are defined by their name. Attributes and methods are defined by the class name that contains them followed by two colons (::) and the attribute or method text.

  • class

  • attribute

  • method

Example: Relationship Entities

@startuml
'Example: Relationship Entities

'Create a class with a method and an attribute.
class Car {
    axle
    go()
}

'Create two more classes.
class Wheel
class Fuel

'Show a relationship between a class and a method.
Fuel - Car::go

'Show a relationship between an attribute and a class.
Car::axle - Wheel

@enduml

Labels

Though it comes last in syntax we will explain label before connection. This is a purely aesthetic issue. While label is not required much of the connection is drawn poorly if there is no label. It gets squished together.

  • label_text - the text describing the relationship between connected entities

  • read_direction - shows the direction a relationship is read

Label Text

This text describes the relationship between the connected entities. Label_text is not required even if read_direction is used. You can format label_text with creole syntax for emphasis and markup language for color and emphasis. You can define colors with a standard color name or hex code.

Example: Label Text

@startuml
'Example: Label Text

'Create a class with a method and an attribute.
class Car {
    axle
    go()
}

'Create two more classes.
class Wheel
class Fuel

'Show a relationship between a class and a method.
'Use a label to explain that relationship.
'Use creole to emphasize the text.
Fuel - Car::go : **requires** 

'Show a relationship between an attribute and a class.
'Use a label to explain that relationship.
'Use markup to add color and emphasis to the text.
Car::axle - Wheel : <color #561D5E><b>has</b></color>

@enduml

Read Direction

A greater than or less than sign (><) used to show the direction a relationship is read. The sign may be placed before or after the label. Read_direction is not required even if label_text is used.

Example: Read Direction

@startuml
'Example: Read Direction

'Create a class with a method and an attribute.
class Car {
    axle
    go()
}

'Create two more classes.
class Wheel
class Fuel

'Show a relationship between a class and a method.
'Use a label to explain that relationship.
'Add a read direction.
Fuel - Car::go : requires <

'Show a relationship between an attribute and a class.
'Use a label to explain that relationship.
'Add a read direction.
Car::axle - Wheel : > has

@enduml

Connections

The connection is the line between the entities. It can carry a lot of information. The only required portion of the connection is the dash (-) between the entities.

  • multiplicity - defines number relationships between the entities, one may be on each end of the connection

  • arrowhead - determines the shape of the arrow head, one may be on each end of the connection

  • line_type - determines the type of line between the entities

  • line_orientation - determines the direction of the second entity in relation to the first entity

  • line_color - determines the color of the line making the connection

  • line_thickness - determines the thickness of the line between the entities

Multiplicity

Multiplicity defines number relationships between the connected entities. Multiplicity can exist on each end of the connection. It is written as a number or numbers between quotation marks. You can format multiplicity with creole syntax for emphasis and markup language for color and emphasis. You can define colors with a standard color name or hex code. In this example one car has between four and six wheels.

Example: Multiplicity

@startuml
'Example: Multiplicity

'Create two classes.
Class Car
Class Wheel

'Show a relationship between the classes.
'Use a label with direction to explain that relationship.
'Add multiplicity with markup for emphasis and color.
Car "1" - "<color #561D5E><b>4..6</b></color>" Wheel : > has

@enduml

Arrowheads

The connection can have an arrowhead on both ends. It must touch the dash that defines the connection.

Example: Arrowheads

'Example: Arrowheads

'Create connections with all arrowhead types.
Class01 --     Class02
Class03 <-->   Class04
Class05 <|--|> Class06
Class07 }--{   Class08
Class09 #--#   Class10
Class11 ^--^   Class12
Class13 *--*   Class14
Class15 +--+   Class16
Class17 o--o   Class18
Class19 x--x   Class20

@enduml

Line Orientation

Line_orientation determines the placement of a class in relation to the connected class. There are two options, default and relative directions.

Default

By default a single dash in the connection draws the relationship horizontally. Two dashes draws the relationship vertically. These are read left to right and then drawn from left to right and top to bottom.

Example: Line Orientation Default

@startuml
'Example: Line Orientation Default

'Create Five Classes
Class Center
Class Right
Class Left
Class Up
Class Down

'Create relationships that point in all four directions.
'Use the default method.
Center - Right
Left - Center
Center -- Down
Up -- Center

@enduml

Relative Directions

Relative directions are defined by always using two dashes for the connection and writing the relative direction between the dashes. These are read from left to write and then drawn in the relative direction.

Example: Line Orientation Relative Directions

@startuml
'Example: Line Orientation Relative Directions

'Create Five Classes
Class Center
Class Right
Class Left
Class Up
Class Down

'Creat relationships that point in all four directions.
'Use relative directions.
Center -right- Right
Center -left- Left
Center -down- Down
Center -up- Up

@enduml

Line Type

The line_type can change the connecting line to dashed or dotted. Line_type is placed inside of square brackets inside of the connecting dashes. Line_type, line_color and line_thickness can be placed in any order inside of the square brackets they are separated by commas.

Example: Line Types

@startuml
'Example: Line Types

'Create Four Classes
Class Car
Class Axle
Class Wheel
Class Driver

'Create a relationship with a standard line type.
Car - Axle

'Create a relationship with a dotted line type.
Axle -[dashed]- Wheel

'Create a relationship with a dashed line type.
Car -[dotted]- Driver

@enduml

Line Colors

The line_color changes the connecting line's color. Line_color is placed inside of square brackets inside of the connecting dashes with a hash symbol (#) before the color. You can define colors with a standard color name or hex code. Line_type, line_color and line_thickness can be placed in any order inside of the square brackets they are separated by commas.

Example: Line Colors

@startuml
'Example: Line Colors

'Create Four Classes
Class Car
Class Axle
Class Wheel
Class Driver

'Create a relationship with a standard line color.
Car - Axle

'Create a relationship with a hex code line color.
Axle -[#561D5E]- Wheel

'Create a relationship with a named color.
Car -[#cyan]- Driver

@enduml

Line Thickness

The line_thickness changes the connecting line's width. Line_thickness is placed inside of square brackets inside of the connecting dashes. Line_type, line_color and line_thickness can be placed in any order inside of the square brackets they are separated by commas.

Example: Line Thickness

@startuml
'Example: Line Thickness

'Create Four Classes
Class Car
Class Axle
Class Wheel
Class Driver

'Create a relationship with a standard line color.
Car - Axle

'Create a relationship with a line thickness of 4.
Axle -[thickness=4]- Wheel

'Create a relationship with a line thickness of 8.
Car -[thickness=8]- Driver

@enduml

With All Properties

Example: Relationships With All Properties

@startuml
'Example: Relationships With All Properties

class Car
class Wheel
class Fuel

Car "1" -[#blue,dashed,thickness=2]-> "4..8" Wheel : has >

Car -right[#561D5E,dashed,thickness=4]- "1..*" Fuel : needs >

@enduml

Written Relationships

Some relationships can be written as the class is declared. These written relationships are "extends" and "implements."

Example: Written Relationships

@startuml
'Example: Written Relationships

'Create one class and one interface.
class ClassA
interface Interface1

'Create a class that extends ClassA.
class ClassB extends ClassA

'Create a class that implements Class1.
class Class2 implements Interface1

@enduml

Note: The following example will be shown with two dashes in the code to provide better aesthetics for the example image. See for further explanation.

line orientation
Declaring Relationships
Relationship Entities
Label Text
Read Direction
Multiplicity
Arrowheads
Arrowheads
Line Orientation Default
Line Orientation Relative Directions
Line Types
Line Colors
Line Thickness
Relationships With All Properties
Written Relationships