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:
In this example,
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.