C++ Machine Objects 0.9.4 review

Download
by rbytes.net on

C++ Machine Objects class library supports a subset of the UML statechart notation for implementing hierarchical state machines in st

License: MIT/X Consortium License
File size: 49K
Developer: Eduard Hiti
0 stars award from rbytes.net

C++ Machine Objects class library supports a subset of the UML statechart notation for implementing hierarchical state machines in straight C++, similar in spirit to the GoF "State" design pattern.

The currently supported features are hierarchical states, entry and exit actions, state histories, and state variables.

Installation:

The class library as such does not need to be installed. Just include the header file Macho.hpp to make use of it. Prerequisite however is a C++ compiler with sane support for templates.

Included are the example state machines HelloWorld, Example, Microwave and Test. To make the examples run just compile them in the directory they are in, for example:

# GCC
g++ -o microwave Microwave.cpp

# MSVC7
cl /EHsc Microwave.cpp

I like the GoF "State" design pattern. It enables implementing the important concept of state machines with common programming language features. By utilising only basic language mechanisms it is easy to apply in real-life software development.

Another important property that stems from this simplicity is orthogonality, meaning that the pattern can be combined with other design elements, patterns and idioms in arbitrary ways.

In contrast stand the tool supported approaches to state machine creation (of which there is no shortage). Based on code generators and graphical editors, they tend to generate incomprehensible code and forfeit orthogonality by necessarily being outside the domain of the programming language.

Unfortunately the "State" pattern is limited in scope because it does not allow for hierarchical state machines. This is regrettable because flat state machines tend to become unwieldy when getting bigger, for the sheer number of states they produce.
Hierarchical state machines as defined by the statechart notation alleviate this problem by giving an additional structural element through grouping states into hierarchies.

The "State" pattern in its original form is not capable of modeling state hierarchies. The Macho class library extends the concept with this possibility, while keeping the properties of simplicity (there possible) and tool independence from its inspiration.

What's New in This Release:
This release adds the feature of backtracking to previous states by using "Snapshots".

C++ Machine Objects 0.9.4 keywords