Wir haben im Abschnitt 1.4 über das Klassendiagramm gesprochen,
das ganz wesentlich ist, um im Problembereichsmodell statische Beziehungen darzustellen.
Im Anschluss wollen wir jetzt das Zustandsdiagramm besprechen,
war dieses Zustandsdiagramm uns hilft, den Überblick über Zustände des Systems
und damit den Überblick über das Verhalten eines Systems zu beschreiben.
Die Fragen, die wir dazu haben,
sind hier Frage 16, 17, 18,
über das Zustandsdiagramm, die Elemente des Zustandsdiagramms und dann noch
Verfeindungsmöglichkeiten dazu
Das Zustandsdiagramm ist im Englischen, mit dem Englischen als State-Maschine bezeichnet,
Zustandsautomat im Deutschen. Das können wir uns durchaus mit dazu
schreiben. Also die Automatentheorie ist die theoretische Grundlage davon,
so ein Zustandsdiagramm, eine State-Maschine, eine Zwischenschnittsautomat,
beschreibt ein System als Volker von Zuständen.
Und zwar als Volker von Zuständen wie ein Objekt.
Deswegen möchte ich, das möchte ich hier hervorheben,
Dieses eine Objekt im Laufe der Existenz dieses Objekts,
also zur Laufzeit, annehmen kann.
Mit dem einen Objekt ist gemeint, es kann sich um
ein System handeln. Es kann ein Subsystem sein.
Es kann eine Komponente sein, ein Modul.
Komponente dazu, das können wir nicht besser.
Und natürlich kann es auch tatsächlich ein Objekt,
ein Exemplar sein
Und diese Folge von Zuständen sind durch Zustandsübergänge miteinander verbunden und werden durch Ereignisse ausgelöst.
Wir haben hier das Wort Stimulie in der Definition.
Irgendetwas stimuliert das, löst das aus. Ja,
also Ereignisse sind hier ganz häufig. Der endliche Automat ist
die fachliche Grundierung davon. Endlich heißt das Ding deswegen,
weil es hat eine endliche Menge von Zuständen und damit kann
es eine endliche oder auch unendliche Menge von Ereignissen verarbeiten,
verbunden sind, diese Zustände durch Zustandsübergänge.
Häufig gibt es einen Anfangszustand und in vielen Fällen auch eine Menge von Endzuständen.
Das entspricht dem, was wir im Grafischen dann haben.
Wir fangen mal an mit einem Beispiel. Das hier geht
es um Kfz-Verkauf. Man hat vielleicht auch Verleih,
das ist nicht so richtig wirklich hier so richtig trotzdeutlich.
Man hat irgendwie einen Wunsch für etwas und dann wird der Wunsch geprüft, reserviert.
Und dann kann man auch was stornieren, beenden und so weiter.
Das Zustandsdiagramm bezieht sich hier immer auf einen Auftrag, zum Beispiel.
Das, was wir im Vorgehen,
es bezieht sich nicht auf die Menge aller Kfz,
oder es bezieht sich nicht auf ein Werk oder ein ganzes Softwaresystem,
was noch die Abrechnung mitmacht.
Nein, das ist nicht drin. Hier geht es immer
nur um einen Reservierungsauftrag, zu diesem Reservierungsauftrag gehört dann eben
ein Kfz etwas bestehigtes
Noch so etwas. Also das ist das, was wir
hier stehen haben. Es geht um ein System,
ein Kommunende, ein Objekt, ein Exemplar.
Das wäre hier in unserem Beispiel eben so eine Reservierung,
die hier zunächst als Bunsch existiert und ja,
schauen wir uns mal an, was es hier gibt.
Es gibt also Beziehungen, das sind solche Knotenhänze,
ich möchte es anders sagen, es gibt Knoten und Kanten,
diese Knoten in diesem Grafen,
das sind die Zustände,
sie sind dargestellt durch solche Kästen mit abgerundeten Ecken oder
manchmal sind es auch Elipsen
Und dann haben auf jeden Fall keine Rechtecke, bitte.
Und dann gibt es hier Pfeile, diese Pfeile sind für Zustandsübergänge.
Das Ganze muss immer eindeutig sein, das heißt,
es darf immer nur ein, es muss immer klar sein,
wenn ich in einem Zustand bin,
in welchem Zustand geht es denn da.
Das System ist ja dumm, kann nicht entscheiden.
Das heißt, es muss eigentlich ganz klar sein,
wo geht es hin. Und manchmal gibt es Sachverhalte,
wo es in mehrere Richtungen gehen kann.
So ein Beispiel haben wir hier, das möchte ich mal kurz,
ich markiere es mal mit Grün,
wir haben hier einen Pfeil,
der geht hierhin
Einen, der geht hierhin und einen geht hierhin.
Und das sind drei wegführende Pfeile. Und das System muss
nun entscheiden, unter welcher Bedingung gehe ich denn wohin.
Und das ist auch gleich das Stichwort. Hier haben wir
dran Bedingungen. Hier steht eine Bedingung und hier steht eine Bedingung,
das ist die Bedingung. Das hatten wir schon mal irgendwo
gesehen. Die eckigen Klammern, das steht für Bedingungen.
Man will schon schauen. Und drei wegführende drei wegführende Pfeile hier,
ein bisschen unterschiedliche Bedingungen haben, sonst wird es einen Konflikt geben.
In jedem Fall wird es ausgelöst durch ein Ereignis hier in dem Fall,
das ist eine Reservierungsauftrag gibt, Kfz reservieren,
Kfz reservieren und wenn es okay ist,
dann ist hinterher dieses Kfz vom Typ her reserviert,
wenn es geprüft ist, kurzfristig,
dann ist es hier nur das einzelne Kfz,
hier ist der Typ reserviert und manchmal kann es sein,
es gibt das nicht,
dann ist es fehlgeschlagen und dann ist es wieder ein ungeprüfter Wunsch geworden,
den man vielleicht in seiner Bestellliste nur hat oder so etwas
Wichtig ist, die Bedingungen sind unterschiedlich, die überlappen sich nicht.
Es ist eindeutig, was ist der Folgezustand, wenn eine bestimmte Bedingung erreicht ist.
Hier gibt es noch dann so einen Endknoten,
wo das endet, das ist der Stadtknoten.
Auf diese Weise haben wir einen Durchlauf von Ereignissen durch diesen Grafen,
durch diesen Zustandsautomaten und wir können immer sagen, wo wir sind.
Dieses Modell hilft uns sehr kompliziertes Sachverhalte übersichtlich darzustellen.
Manchmal braucht man, dass man manchmal das nicht immer machen,
sondern man wird das nur dann machen, wenn es komplizierte Sachverhalten sind.
Einfache Sachwalte mit zwei Zuständen. Ich habe eine Reservierung und
es ist wieder storniert. Das kann ich,
da brauche ich kein Diagramm dazu zu zeichnen.
Das kann ich mit ein paar Worten darstellen. Das wird
auch beim Quellcode verständlich sein. Das wird auch aus Bezeichnungen
verständlich sein. Wenn es ein bisschen komplizierter ist,
hier zum Beispiel, dass es zwischen Kurzzeit,
Reservierung und längere Reservierungen noch große Unterschiede gibt, wie das weitergeht.
Denn hier ist die Zuordnung gleich hier und hier gibt es
dann noch extra noch was.
Das ist, das kann man textuell mit natürlicher Sprache
relativ schlecht beschreiben
Schauen wir uns mal die Elemente im nächsten Bild an,
also wie schon gesagt, haben wir hier den Zustand,
also einen Kasten mit abgerundeten Ecken drin, steht der Name.
Wir haben den Zustandsübergang, um dieser Zustandsübergang, schreiben wir mal dran,
dass das vielleicht noch das Wort Transitionsbeschreibung Transition ist das Gleiche wie Zustandsübergang.
Ja, so, also diese Transitionsbeschreibung,
das Beschreiben des Zustandsübergangs enthält normalerweise diese Elemente,
die wir hier unten an der Seite nochmal haben,
es hält ein Ereignis,
eine Bedingung und das müssen Sie sich bitte merken nach dem schrägen Strich,
eine Operation.
Schauen wir uns das mal in Vergangenheit vorangegangenen Bild an. Ja,
also wir haben hier gelegentlich, wie zum Beispiel hier,
haben wir das Ereignis,
da gab es also auch nie eine Methode,
so einen Aufruf oder einen Trigger,
mit Dia KFC reservieren
Vielleicht kann das über Webservice rein,
vielleicht über einen Klick auf ein Menü oder was auch immer.
Und hier in eckig in Klammern diese Bedingung. Wir haben hier eigentlich nirgendwo,
wenn ich das so richtig sehe, nein,
so eine Aktion haben wir hier nirgendwo,
die hier noch so eine Operation, was danach ausgeführt werden soll.
Das haben wir nicht. Zusätzlich muss man,
möchte man noch sagen, es gibt auch die Möglichkeit,
den Zustand mit Aktionen zu versehen.
Und hier gibt es drei Sorten von Aktionen
Drei Aktionen besagen, wann passiert denn die,
durch ein Entry-Duo und Exit, wann passiert denn das?
So, diese Transition, dieser Zustandsübergang passiert unter bestimmten Bedingungen.
Das schreiben wir mal auf. Ich schreibe das
nur jetzt mal hier den freien Platz auf dieser Folie
und mache das mal hier so an die Seite
Ganz um diese Zustandsübergang,
ob sie diesen Begriff auf Deutsch nehmen oder auf Englisch oder Internationalismus,
Transition, das ist mir am Ende egal.
Aber wichtig ist, dass sie verstehen, wann kann so eine Transition denn erfolgen?
Ja, und diese Transition kann erfolgen. Wir haben ja
hier unten stehen, es gibt ein eigenes und eine Bedingung.
Ich lasse mal einen Strich frei, drei Sachen gibt es,
die müssen erfüllt sein, damit so eine Transition aktiviert wird,
ein Tungestandsübergang aktiviert wird. Und zwar ist das,
ich fange mal mit, dass man das erste Frei,
das zweite ist jetzt, das Ereignis ist eingetreten.
Und damit ist dieses Ereignis hier unten gemeint.
Das Ereignis könnte eben ein Mausklick sein. Das Ereignis könnte
eine Empfang einer Nachricht von außen sein oder auch einfach
nur das Anwachsen eines Wertes über einen bestimmten Schwellwert.
Ja, und dann können wir noch sagen,
die Bedingung muss erfüllt sein
So, damit haben wir zwei wichtige Punkte,
doch es gibt noch einen weiteren wichtigen Punkt,
ich muss gerade mich in dem Vorhergehenden Ereignis befinden,
also von hier nach hier geht es nur,
wenn das Ereignis eingetreten ist,
wenn die Bedingung erfüllt ist und wenn ich vorher hier bin,
sonst komme ich natürlich nicht hin.
Dieses dritte vergessen die Leute häufig,
wir sollten es aber nicht,
sollten aber
dran denken
Also der Vorzustand ist aktiv. Schauen wir uns das am Beispiel an,
was ist damit gemeint,
wenn ihm vielleicht wieder hier dieses mit dem geprüften Wunsch und ich will,
das ist da okay, also ich habe hier,
ich bin hier in diesem Zustand geprüfter Wunsch,
dann kommt dieses Ereignis Kfz reservieren, die Bedingungen ist,
alles ist okay, dann gehe ich hier diesen,
wenn diese zwei Sachen sind erfüllt und vorher bin ich auch hier,
dann werde ich diesen Zustandsübergang entlang gehen und werde danach in diesem Zustand sein.
Wenn ich eine Reservierungsnummer gekriegt habe, bleibe ich weiter in dem Zustand
Und wenn dann eine Reservierung bestätigt wird, gehe ich weiter.
Also hier sehen Sie, hier gibt es keine Bedingung dabei,
hier gibt es nur ein Ereignis,
wenn das Ereignis kommt, gehe ich hier weiter.
Wenn dieses Ereignis kommt, gehe ich hier hin.
Damit kann man immer nur einen Zustand einnehmen und dieses Diagramm zeigt,
diese Zustandsautomat zeigt das für eine Reservierung.
Wir haben nun vorher schon ein anderes Diagramm gesehen. Ach so,
vielleicht sollte ich noch kurz was zu den anderen Sachen sagen,
die wir hier auch noch sehen. Sie sehen hier,
es gibt hier auch so einen Splitting und sehen die Synchronisation,
das sieht doch sehr nach dem Aktivitätstiagramm aus,
diese Zusammenführung,
Auch das gibt es leider hier auch. Ich persönlich möchte sagen,
benutzen Sie das hier und möglichst nicht, benutzen Sie Zustand,
Zustandsübergang, um diese Bedingungen, Stadt- und Endeknoten und gut.
Ja, benutzen Sie das hier nicht unbedingt.
Das hat damit zu tun,
dass das Zustandsdiagramm und das Aktivitätsdiagramm als Verwandt betrachtet wird von
der Theorie her,
aber von der Anwendung her sind Sie schon
sehr unterschiedlich
Ich möchte Sie darauf hinweisen,
was wir hier drinstehen haben in diesem Zustand mit internen Aktionen.
Und zwar haben wir vor Entreedu Exit und das möchte ich
kurz mit Ihnen noch auf einem separaten Blatt darstellen.
Da brauchen wir eine neue Seite. Und zwar möchte ich
das anhand eines Zahlenstrahls machen, eines Zeitstrahls.
Das sei die Teilzeit
Hier ist das Ereignis eingetreten. Hier ist der Zeitpunkt T,
wo das Ereignis eingetreten ist für den Zustand zu Übergang.
So, und... Nein, wir nicht zum Wechsel,
ich werde das mal
ein bisschen anders
Schreiben das zu im Hin, und zwar meinen wir,
dass mit einem, wir haben also irgendwie so ein Zustandsdiagramm.
Mit einem Zustand M, und wir sind jetzt,
hier ist ein Ereignis eingetreten,
wo wir zu dem Zustand hinkommen,
das wäre hier
der Zeitpunkt
Und dann gibt es hier einen Zeitpunkt T2. Wieder der Pfeil
für das Ereignis. Für Zustand ist nicht Inzwischensänderung zuständig.
Übergang schreiben, nennen wir das Ding Zustandsübergang. Von im Weg
. Also das wäre jetzt hier dieser Zustand. So,
und da sieht es so aus,
dass wir in dem Zeit, wenn wir den Zeitstrahl haben,
dass wir während dieser Zeit Ihr... Die Du-Aktionen haben.
Solange wir wegen dem Zustand M sind, haben wir die Du-Aktion.
Wenn wir den Zustand verlassen, dann haben wir die Exit-Aktion. So,
und dann gab es ja hier in dem vorgangenen Bild,
das war das Falsche, wir wollen hierhin, ja, da gab es
Da gab es hier dieses Entry, du und Exit,
wir haben jetzt schon das Exit mit der Aktion 3 und dass du mit der Aktion 2,
ich habe in das Entry, haben wir noch nicht.
Dieses Entry, das soll passieren, nachdem wir hier,
wenn das Ereignis eintritt, beim Reingehen,
von der Theorie her, dass es der Zeitdauer null,
in der Praxis dauert das schon ein bisschen eine Zeit und das ist die Entry-Aktion.
Ja, also die Endreaktion findet immer statt,
wenn wir in den Zustand hineinkommen und dann sollten wir vielleicht realistischerweise sagen,
Das ist, wir kürzen das mal hier so ein bisschen ab,
dass wir das, dass die Du-Aktion danach passiert.
Ja, also wir haben hier die Entry-Aktion,
die schieben wir mal hier rein. So. So,
also zuerst passiert die Endreaktion,
dann wären wir in der Akte in dem Ding drin sind,
die Du-Aktion und dann am Ende
die Exit-Aktion
Vielleicht der Unterschied zwischen Theorie und Praxis,
in der Theorie, in der Theorie des endlichen Automaten,
ist die Dauer dieser Entry-Aktion hier.
Diese Dauer, die ist eigentlich null. Das heißt,
das passiert unmittelbar zu diesem Zeitpunkt. Und das passiert unmittelbar zu diesem Zeitpunkt.
Und die Du-Aktion ist entsprechend die ganze Dauer. Realistischerweise wissen wir auch,
die schnellste Operation, die dauert eine gewisse Zeit,
also vielleicht nicht so viel,
wie ich hier dargestellt habe,
aber sie dauert eine gewisse Zeit und dann ist das
diese Reihenfolge
Jetzt habe ich die Möglichkeit und da möchte sie jetzt als kleine Kniffelaufgabe,
nein, das war eine falsche Folie, falsche Lehrveranstaltung,
wir haben hier tatsächlich die Möglichkeit,
hier so eine Endreaktion zu machen,
zum Beispiel hier eine Endreaktion,
aber wir können auch hier für diesen Zustandsübergang dahin,
können wir auch eine Operation bringen.
Ja, also wenn wir hier eine Operation dran haben an
dem Pfeil und dann hier eine Endre-Akkooperation,
was ist denn da
der Unterschied
Und da muss ich Ihnen sagen, da gibt es keinen.
Sie können das, Sie können eine Opport-Aktion hier dran hängen,
das wäre jetzt mit dieser, mit diesem Zustandsübergang,
mit der Transition, oder Sie können es hier dran hängen,
indem Sie sagen, okay, hier gibt es eine Endreaktion.
In jedem Fall wird es passieren,
wenn wir den Zustandsübergang haben, dann wird diese Aktion ausgelöst.
Ob Sie das jetzt hier dran schreiben oder hier dran schreiben,
das hängt eher davon ab, was wollen Sie erreichen,
was wollen Sie ausdrücken?
Technisch würde Sie zum gleichen Zeitpunkt passieren
Soviel zu den Elementen des Zustandstiagramms. Damit hatten wir schon
einige, schon Ende der Frage beantwortet. Was ist ein
Zustandstiagramm? Welche Elemente werden im Zustandstiagramm der UML dargestellt?
Jetzt lassen wir uns noch zu der letzten Frage kommen,
hier mit diesen Unterzuständen. Die Unterzustände sind,
macht man dann, wenn man sehr viele Zustände hat?
Also wir hatten ja hier zwei Folien vorher,
hatten wir so ein Ding, das war schon relativ voll.
Wenn wir jetzt etwas ein System haben, desto größeren,
was noch mehr Zustände hat, Zum Beispiel,
es ist eine Flugzeugabfertigung oder die Prüfung oder ein Fertigungsprozess mit vielen Zwischenzuständen und noch Wattezuständen und Fehler,
Korrekturen, was auch immer.
Kann es sein, dass es sehr voll wird.
Und wenn die Windwir das dann ein bisschen vereinfachen wollen,
hilft es uns, das zu modularisieren, Sachen zusammenzufassen.
Und für dieses Zusammenfassen haben wir die Möglichkeit, Dinge zu einem Unterzustand zusammenzufassen.
Das Bild, was wir hier auf der Folie haben,
soll das ein bisschen verdeutlichen. Ja, also wir haben
hier einen Zustand und dieser Zustand hält weitere Zustände.
Oder hier haben wir einen Zustand und in diesem Durchstand
sind zwei vergleichbare Sachen, die irgendwie nebeneinander parallel alternativ
zueinander sind
So wie es hier dargestellt ist, ist es natürlich
irgendwo sinnlos. Das ist mehr zur Veranschaulichung gedacht,
dass wir, wenn wir das sowieso einzeln darstellen,
dann noch einen großen Rand drum machen,
da haben wir nicht wirklich was gespart.
Helfen würde uns das, wenn wir in so einem Bild wie
dem hier vielleicht diesen ganzen Bereich hier zusammenfassen könnten, durch einen Zustand.
Damit wird das Bild sehr viel einfacher. Und dieser eine Zustand,
dessen Unterzustände werden wir immer sehr bereiten, Diagrammwagen stellt.
Das ist auch der Sinn dieses Konzepts unter Zustand. Ja,
also man würde das, was hier drin ist,
dann ausblenden, beziehungsweise das,
was hier drin ist,
würde woanders nur durch einen Kasten dargestellt werden
Wichtig ist, dass die Eingänge und die Ausgänge, Stadt- und Endknoten zu dem passen,
was es außen gibt. Also wenn es hier einen Stadtknoten gibt,
dann gibt es hier auch innen,
wir sehen natürlich dann, was ist da,
was für ein Ereignis da kommt und wie das dann weitergeht,
aber ich gehe nicht, sie merken schon,
ich gehe auf diese Sache mit der Linie hier nicht ein,
das lassen wir hier weg, wenn sie weiter interessiert sind,
können sie sich das ja machen,
können sie sich das ja durchlesen und es gibt hier nur einen Ausgang,
der landet dann hier.
Wenn wir mehrere Ausgänge hätten, müsste es auch hier mehrere
Alternativen geben. Das heißt, das muss zueinander passen,
der Unterzustand zum Unterzustand. Der hierarchische, ihr zepteliziert ja
hierarchischen Gliederung, ist es wieder eine Zusammenfassung hinzukriegen
Zusammenfassung zur Vereinfachung. Da wisst ihr was,
ich packe das mal, meinen Text mal hier rum hin.
Das ist noch besser. So, also Zusammenfassung zur Vereinfachung
, das ist das Ziel dieser Unterzustände.
Und dass wir hier sequenziell und parallel haben,
das lassen wir jetzt weg,
das Institutmus nicht wichtig ist,
dass es vom Eingang und Ausgang
her zueinander passt
So, um das Ganze abzuschließen, habe ich noch eine weitere Folie hier.
Ich wollte sie einfach nur noch auch informieren, dass es noch
spezielle Zustandsautomaten gibt, Zustandsdiagramme gibt, hier einen Protokollzustandsautomat. Protokoll,
das hat etwas mit Kommunikationsprotokoll und dort wurdest du angewendet,
das Wort kommt nicht davon her,
wie sie bei Physikexperimenten ein Protokoll aufstellen, was hinterher beschreibt,
was da passiert ist, sondern das bedeutet zu Ablauf.
Sie kennen vielleicht das diplomatische Protokoll, was passiert,
wenn ein hoher Staatsgast ist,
da gehört das und das und die große Parade und einen Zapfenstreich und einen Motorradexkorde,
das gehört mit dazu
Also wie macht man so etwas? Das ist das,
was in einem Protokoll dargestellt wird. Und hier haben wir
ein spezielles Protokoll für solche Kommunikationsbeziehungen. Ein spezielles Zustandsdiagramm,
das bezeichnet hier Ereignisse, die eintreten können in einer bestimmten Folge,
in einem Kommunikationsverfahren zwischen zwei Partnern.
Und das Besondere hier, dass wir nicht wirklich ein Verhältnis haben.
Ja, ansonsten, es reicht im Prinzip nur,
dass ich das mal gehört habe. Für uns reicht es
das Zustandstiagramm zu kennen und dieses Aktivitätstier kam in,
was war ein weiteres Diagramm, was wir bis jetzt haben,
um Verhalten zu bescheiden.
Damit sind wir erstmal am Ende
von diesem Abschnitt