Skip to content

UML Class Diagram ​

To create a UML class diagram, one uses the classDiagram diagram function:

HyLiMo
classDiagram {
    // define elements
}

All elements described below are also available in the general UML diagram.

Elements ​

The following elements are supported:

class ​

Creates a new class element, with the defined name, and optional properties and operations:

Note that properties and functions are defined declaratively, and are not executable code. Thus, e.g. if x is a defined variable, the property is still named x, not the value of x. Five different types of visibility are supported:

  • public
  • private
  • protected
  • package
  • default (no visibility)

In addition, by providing named arguments abstract or private to the scope function call, inner entries are in italics / underlined respectively:

Using the section function, one can also add another section to the body of the class:

To simplify using classes later in the diagram, class automatically sets itself on the current scope if the variable is not yet defined:

Abstract ​

To mark a class as abstract, one can use the abstract named argument:

Keywords ​

The keywords named argument can be used to add keywords or stereotypes in guillemets (« and »):

Nesting ​

Classes can now contain other classes as nested elements, allowing for a more organized hierarchy:

The nested class is scoped within its parent class and will be visually displayed inside the outer class.

Ports ​

Classes can now have ports, which are connection points on the class boundary. Ports can be defined either inside the class block or using dot notation outside the class:

For more details, see UML Component Diagram

interface ​

Creates a new interface element. Identical to class, however automatically adds the «interface» keyword.

enum ​

Creates an enumeration class. Enums are a special type of class and support all class functionality. You can define enum entries using the entries block:

This is equivalent to creating a class with the "enumeration" keyword:

Enums can also have additional properties and methods like regular classes:

package ​

Creates a UML package with a name

Packages can contain nested elements, similar to classes:

The nested elements are scoped within the package and will be visually displayed inside the package.

comment ​

Allows creating UML comments:

Connections / Associations ​

Connections / Associations are created using a PlantUMl-inspired operator syntax. Both sides of the operand can be either points, or canvasElemments, and thus classes, interfaces, packages or comments. The following operators are supported:

  • -- for a simple association
  • --* for a composition
  • --<> for an aggregation
  • extends for a generalization
  • implements for an implementation
  • ..> for a dependency
  • --! for an association not-navigatable in one direction
  • --> for an association navigatable in one direction
  • ... and several combinations of the above, e.g, !--!, *-->, ...

Config properties ​

The following config properties are available for class diagrams:

VariableMeaningDefault value (in pixels)Comment
abstractAsPropertyWhether to show { abstract } after the name of abstract classesfalse-
providesDistanceDefault distance of provided interfaces to the classifier outline100-
requiresDistanceDefault distance of required interfaces to the classifier outline100-

Styling ​

The following style variables are used by the class diagram elements:

VariableMeaningDefault value (in pixels)
providedInterfaceSizeDiameter of the circle of a provided interface30
requiredInterfaceSizeSize of the socket of a required interface45

Example ​

The following example shows the domain model of a small shop, using most of the elements described above: