Zustandsmaschinen definieren Aktionen in Abhängigkeit von vorhergehenden Aktionen bzw. eingenommen Zuständen. Sie finden immer da Verwendung, wo es eine endliche Anzahl von Zuständen und Aktionen geben kann. Dies sind unter Anderem: Datenparser, Maschinensteuerungen, Verbindungsprotokolle oder auch Spielelogik.
Beispiel (Quellcode): statemachine.cpp
Download (Quellcode): statemachine.zip
Beschreibung
Wie bereits erwähnt, benutzen Zustandsmaschinen die vorhergehenden Zustände bzw. den letzten Zustand, um eine Aktion im aktuellen Kontext durchführen zu können. Meist wird eine Aktion durch eine Eingabe in das Zustandssystem ausgelöst. Da nur eine limitierte Anzahl von Aktionen möglich ist, können je nach Zustand/Kontext verschiedene Dinge verboten, erlaubt oder in ihrer Funktion verändert sein. Dies lässt sich gut für Sicherheitsfunktionen verwenden (zum Beispiel für eine Authentifizierung).
Eine Zustandsmaschine kann von einem Zustand in einen Anderen überführt werden, dies muss nicht zwangsläufig der näc…



Die Festkommazahl wird durch eine Ganzzahl gehalten, die mindestens so groß sein muss, dass sie die Stellenanzahl (Vor- und Nachkommastellen) aufnehmen kann. Auch die Genauigkeit hängt direkt von der Anzahl der Nachkommastellen ab, daher wird hier meist der Mittelweg zwischen der Größe der Ganzzahl und der Genauigkeit gesucht. Häufig wird zwischen binären und dezimalen Festkommazahlen unterschieden, obwohl natürlich alle möglichen Basen benutzt werden können. Wenn die richtige Basis gewählt ist, besteht die Möglichkeit ohne Rundung eine Zahl vom möglichen Zahlenbereich aufzunehmen.
Der Behälter für den dynamischen Datentyp, besteht in den meisten Fällen aus einem Typindikator und den einzelnen Datentypen, die dieser aufnehmen kann. Beim Setzen eines Wertes für einen der enthaltenen Datentypen, wird der Typindikator mitgesetzt. Zum Auslesen wird anhand des Typindikators geprüft, ob eine Typumwandlung erford…
Die Datenstruktur bildet eine Liste, bei denen die Referenzen (oder auch die Objekte) mit begrenzter Anzahl gehalten werden. Wird ein Objekt benutzt, wird die Objektreferenz an den Anfang der Liste verschoben. Ist die Referenz noch nicht in der Liste, wird sie an den Anfang der Liste eingefügt. Ist die Liste zu lang, werden die Objekte am Listenende verworfen.
Durch zwei Zähler werden die Lese- und Schreibposition dargestellt. Wird ein Element ausgelesen, wird die Leseposition erhöht. Beim Hinzufügen eines Elements, erhöht sich die Schreibposition. Beim Erreichen des Datenfeldlimits, wird die Position auf den Anfang des Feldes zurückgesetzt. Alternativ kann auch ein Modulo oder eine andere Operation sicherstellen, dass die Position innerhalb des Datenfelds liegt und fortlaufend ist. Sind beide Positionen gleich, ist das Feld leer. Wären nach dem nächsten Hinzufügen beide Position gleich, ist das Feld voll.