Dillo v3.1.1-14-g8f67d6e0
No Matches
UML Legend

This page describes the notation for several diagrams used in the documentation, which is a slight variation of UML.


Classes are represented by boxes, containing there names:


(In most cases, the attributes and operations are left away, for better readibility. Just click on it, to get to the detailed description.)

Of course, in C++, there are no interfaces, but here, we call a class, which has only virtual abstract methods, and so does not provide any functionality, an interface.

Templates get a yellow background color:



In some cases, an examle for a concrete constellation of objects is shown. An object is represented by a box containing a name and the class, separated by a colon.


The names (x, y, and z) are only meant within the context of the diagram, there needs not to be a relation to the actual names in the program. They should be unique within the diagram.

Classes and objects may be mixed in one diagram.



In this example, one instance of A refers to an arbitrary number of B instances (denoted by the "*"), and each instance of B is referred by exactly one ("1") A. The label x is the name of the association, in most cases the name of the field, e.g. A::x.

Possible other values for the multiplicity:

  • a concrete number, in most cases "1",
  • a range, e.g. "0..1",
  • "*", denoting an arbitrary number.

Implementations and Inheritance


In this example,

  • the interface B extends the interface A,
  • the class C implements the interface A, and
  • the class D extends the class C.

Template Instantiations

Template instantiations are shown as own classes/interfaces, the instantiation by the template is shown by a yellow dashed arrow:


In this example, the interface template C uses the template argument as super interface.


Packages are presented by dashed rectangles:


Packages may be nested.