Practical Statecharts in C/C++: Quantum Programming for Embedded Systems

The good thing about bubbles and arrows, as opposed to programs, is that they never crash.
Bertrand Meyer
In this appendix, I describe the graphical notation that I use throughout the book. [1] The notation should be compatible with version 1.4 of the UML specification [2] [OMG 01]. The timing diagrams are not part of the UML. I adapted them from Douglass [Doublass 99].
[1]In this appendix, I do not include the informal data structure diagrams that show particular C or C++ data structures at run time.
[2]I prepared all diagrams with Visio Technical v4.0. The accompanying CD-ROM contains the Visio stencil that I used.
A class diagram shows classes, their internal structures, and the static (compile-time) relationships among them. Figure B.1 shows the various presentation options for classes.
A class is always denoted by a box with the class name in bold type at the top. Optionally, just below the name, a class box can have an attribute compartment that is separated from the name by a horizontal line. Below the attributes, a class box can have an optional method compartment.
The UML notation allows you to distinguish abstract classes, which are classes intended only for derivation and cannot have direct instances. Figure B.1c shows the notation for such classes. The abstract class name appears in italic font. Optionally you may use the abstract stereotype. If a class has abstract methods (pure virtual member functions in C++),...