formalesprachen:endlicheautomaten:implementierung
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Implementierung deterministischer endlicher Automaten in Java
1. 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. </WRAP> ==== Beispiel: ==== <HTML>
<script type="text/plain" title="Test1.java"> Katze k1 = new Katze("Snoopy"); Katze k2 = new Katze("Bella"); Katze k3 = new Katze("Peterl");
println(k1.getName()); println(k2.getName());
println(Katze.getCounter());
schlechter Stil: println(k1.getCounter()); println(k2.getCounter()); möglich bei public static-Attributen: println(Katze.counter);
class Katze {
String name;
static int counter = 0;
Katze(String name) { this.name = name; counter++; }String getName() { return name; }static int getCounter() { return counter; }}</script>
</HTML> ===== 2. Das Singleton-Pattern ===== Oft möchte man erzwingen, dass es von einer Klasse
genau ein Objekt gibt. Dazu gibt es das Singleton-Pattern**, das meistens wie folgt implementiert wird.
3. Implementierung eines DEA in Java - einfache Variante
4. Implementierung eines DEA mit dem State-Pattern
formalesprachen/endlicheautomaten/implementierung.1759238965.txt.gz · Zuletzt geändert: von Martin Pabst
