Klassen- und Objektmodell:
Der Inhalt dieser Seite ist veraltet und dient lediglich der Veranschaulichung einiger Ideen die während meiner Arbeit aufkamen.
Diese Seite enthält sowohl frühe Konzepte und Ideen als auch das letztendlich verwendete Objekt- und Klassenmodell.
Konzepte und Ideen:
Ein Zustandsautomat, siehe Bild 1 oben, wird durch Knoten (also Zustände) und ihre Übergänge (in der Regel beim auftreten von Ereignissen) dargestellt.
In meinem ersten Entwurf wird der eigentliche Automat durch einen "Controller" abgebildet, der sich den aktuellen Zustand merkt, Jeder Zustand (auch Knoten genannt) ist mit all seinen Übergängen assoziert (Es muss später die konkrete Entscheidung getroffen werden, ob ein Knoten in der Implementierung nur auf die von ihm ausgehenden Übergänge aktiv zugreifen kann!). Zu jedem Übergang gehört ein Start und ein Endknoten! Jeder Übergang enthält ein Attribut vom Typ "MatchMap", welches eine Vergleichsstruktur für aus dem Stream stammende Events darstellt.
Ablauf:
- Controller erhält event (typ "Map") aus dem Stream und gibt es via notify() an den aktuellen Zustand und alle dazugehörigen (möglichen) Übergänge. Alle so erreichten Übergänge prüfen nun ihre
MatchMap mit dem erhaltenen Map, bei übereinstimmung wird die abstrakte (also vom späteren User zu implementierende) Methode onTransition() ausgeführt. Sie setzt den aktuellen ZUstand des Controllers neu, startet ggf. parallel einen neuen Controller oder läßt ein neues event an den Stream übergeben und schließt den aktiven Controller.
Alle von mir erstellten Dokumente, auf die in dieser Seite verwiesen wird, können hier heruntergeladen werden.