formalesprachen:endlicheautomaten:implementierung
Inhaltsverzeichnis
Implementierung deterministischer endlicher Automaten in Java
1. Implementierung eines DEA in Java - einfache Variante
Der rechts gezeichnete Automat unten mit dem Eingabealphabet A = { "a", "b" } erkennt alle Wörter über A, die nichtleer sind und eine gerade Anzahl von a's haben.
Im Folgenden erstellen wir einen Algorithmus, der ermitteln kann, ob der Automat ein Wort akzeptiert oder nicht.
2. Statische Methoden und statische Attribute
- Hat eine Klasse ein (normales) Attribut, so kann dies für jedes Objekt dieser Klasse einen unterschiedlichen Wert haben. In technischer Hinsicht wird je Objekt der Klasse ein eigener Speicherplatz für dieses Attribut reserviert.
- Hat eine Klasse eine (normale) Methode, so kann diese Methode nur mit Bezug zu einem Objekt aufgerufen werden (Punktschreibweise
objekt.methode()). Innerhalb der Methode kann man auf die Attribute dieses Objekts zugreifen. - Hat eine Klasse ein statisches Attribut, so ist dies unabhängig von den Objekten der Klasse und besitzt genau einen Wert. In technischer Hinsicht wird nur ein einziger Speicherplatz dafür reserviert.
- Eine statische Methode einer Klasse wird ohne Bezug zu einem Objekt der Klasse aufgerufen. Innerhalb der Methode kann man daher logischerweise nicht auf (normale) Attribute der Klasse zugreifen, wohl aber auf statische Attribute.
Beispiel:
3. Das Singleton-Pattern
Oft möchte man erzwingen, dass es von einer Klasse genau ein Objekt gibt. Dazu gibt es das Singleton-Pattern, das oft wie folgt implementiert wird:
4. Implementierung eines DEA mit dem State-Pattern
Wir implementieren jeden Zustand als Singleton mit einer Methode getNextZustand(char c), die abhängig von c das Folgezustand-Objekt zurückgibt. Zudem gibt jeder Zustand mittels der Methode isEndZustand() Auskunft darüber, ob er ein Endzustand ist.
Aufgabe 1
Bearbeiten Sie im Buch "Informatik 7, gA" Aufgabe 6 auf Seite 37.
formalesprachen/endlicheautomaten/implementierung.txt · Zuletzt geändert: von Martin Pabst

