Class Simulation

java.lang.Object
  |
  +--Simulation

public class Simulation
extends java.lang.Object

Diese Klasse kapselt die Simulation. Sie fuehrt die Simulation in einem Hintergrund-Thread aus und teilt entsprechende Aenderungen ueber das Interface KonfigurationsAenderung. Sie sorgt auch fuer die Ausgabe ueber Graph.

Version:
990618
Author:
Michael Stach <stach@bigfoot.de>

Inner Class Summary
(package private)  class Simulation.SimThread
          Diese Klasse implementiert das Thread
 
Field Summary
protected  KonfigurationsAenderung aenderung
          das Interface, um die Aenderungen in der Konfiguration mitzuteilen
protected  Automat automat
          der Automat der simuliert wird
protected  java.lang.String eingabewort
          Das Eingabewort, fuer das simuliert wird
protected  Graph graph
          der Graph zum Automaten
protected  java.util.Vector haltepunkte
          Die Liste der Haltepunkte der Simulation
protected  Konfiguration konfiguration
          Die aktuelle Konfiguration der Simualtion
private  boolean pauserequest
          true, wenn die Simulation pausieren soll
protected  java.lang.Thread simthread
          Das Hintergrundthread, welches simuliert
protected  int verzoegerung
          die Simulationsverzoegerung der Simulation in Millisekunden
protected  SimulationsZustand zustand
          der aktuelle Simulationszustand
 
Constructor Summary
Simulation(Automat a, Graph g, KonfigurationsAenderung k, java.lang.String s)
          Legt eine Simulation an.
 
Method Summary
 void addHaltepunkt(int zustand, char eingabe)
          Fuegt einen Haltepunkt hinzu.
 boolean containsHaltepunkt(int zustand, char eingabe)
          Prueft ob ein Haltepunkt angemeldet ist.
private  boolean containsHaltepunkt(Zustand z, char eingabe)
          Testet ob ein Zustand enthalten ist, bloss nach Objekt
private  void executeStepSimulation()
          fuehrt einen Schritt durch
 Automat getAutomat()
          liefert den Automaten zurueck
 java.lang.String getEingabeWort()
          liest das aktuelle Eingabewort aus
 Graph getGraph()
          liefert den Graphen zurueck
 Konfiguration getKonfiguration()
          leifert die Konfiguration zurueck
 int getVerzoegerung()
          liefert die aktuelle Verzoegerung
 SimulationsZustand getZustand()
          liefert den Zustand der Simulation
 void loescheHaltepunkt(int zustand, char eingabe)
          Loescht einen Haltepunkt.
private  void pause(boolean wait)
          pausiert und wartet ggf. auf das Hintergrundthread
 void pauseSimulation()
          toggelt zwischen Pause/Resume
private  void reset()
          setzt die Simulation zurueck, es kann erneut simuliert werden
private  void resume()
          setzt aus Pause-Modus fort
private  void rewind()
          resettet und geht in Pause-Modus
 void setEingabeWort(java.lang.String eingabewort)
          setzt das Eingabewort
 void setVerzoegerung(int time)
          setzt die Verzoegerung der Simulation neu
 void startSimulation()
          startet die Simulation
 void step()
          fuehrt einen Schritt durch
private  void stepSimulation()
          fuehrt einen Schritt aus und kuemmert sich um Ausgabe, Reaktion, Mitteilung an andere
 void stopSimulation()
          stoppt die Simulation
private  void stopSimulation(boolean wait)
          Stoppt die Simulation und wartet ggf. auf das Thread
 void toggleHaltepunkt(int zustand, char eingabe)
          Ist der Haltepunkt enhalten, so wird er geloescht, sonst wird er eingefuegt
 java.lang.String toString()
           
private  void waitThread()
          wartet auf das Hintergrundthread
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

automat

protected Automat automat
der Automat der simuliert wird

konfiguration

protected Konfiguration konfiguration
Die aktuelle Konfiguration der Simualtion

graph

protected Graph graph
der Graph zum Automaten

aenderung

protected KonfigurationsAenderung aenderung
das Interface, um die Aenderungen in der Konfiguration mitzuteilen

verzoegerung

protected int verzoegerung
die Simulationsverzoegerung der Simulation in Millisekunden

zustand

protected SimulationsZustand zustand
der aktuelle Simulationszustand

haltepunkte

protected java.util.Vector haltepunkte
Die Liste der Haltepunkte der Simulation

eingabewort

protected java.lang.String eingabewort
Das Eingabewort, fuer das simuliert wird

simthread

protected java.lang.Thread simthread
Das Hintergrundthread, welches simuliert

pauserequest

private boolean pauserequest
true, wenn die Simulation pausieren soll
Constructor Detail

Simulation

public Simulation(Automat a,
                  Graph g,
                  KonfigurationsAenderung k,
                  java.lang.String s)
Legt eine Simulation an. Diese ist dann schon im Zustand Stop und kann sofort mit startSimulation() gestartet werden.
Parameters:
a - Automat der simuliert werden soll
g - Graph zum Automaten, um Ablauf darzustellen
k - Interface KonfigurationsAenderung
s - Eingabewort fuer den Automaten
Method Detail

setEingabeWort

public void setEingabeWort(java.lang.String eingabewort)
setzt das Eingabewort
Parameters:
eingabewort - das neue Eingabewort

getEingabeWort

public java.lang.String getEingabeWort()
liest das aktuelle Eingabewort aus
Returns:
das aktuelle Eingabewort

getAutomat

public Automat getAutomat()
liefert den Automaten zurueck
Returns:
der Automat der Simulation

getGraph

public Graph getGraph()
liefert den Graphen zurueck
Returns:
der Graph der Simulation

getKonfiguration

public final Konfiguration getKonfiguration()
leifert die Konfiguration zurueck
Returns:
die aktuelle Konfiguration der Simulation

startSimulation

public void startSimulation()
startet die Simulation

stopSimulation

public void stopSimulation()
stoppt die Simulation

step

public void step()
fuehrt einen Schritt durch

pauseSimulation

public void pauseSimulation()
toggelt zwischen Pause/Resume

getZustand

public final SimulationsZustand getZustand()
liefert den Zustand der Simulation
Returns:
den aktuellen Zustand

setVerzoegerung

public void setVerzoegerung(int time)
setzt die Verzoegerung der Simulation neu
Parameters:
time - Verzoegerung in ms

getVerzoegerung

public int getVerzoegerung()
liefert die aktuelle Verzoegerung
Returns:
Verzoegerung in ms

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

reset

private void reset()
setzt die Simulation zurueck, es kann erneut simuliert werden

rewind

private void rewind()
resettet und geht in Pause-Modus

stopSimulation

private void stopSimulation(boolean wait)
Stoppt die Simulation und wartet ggf. auf das Thread
Parameters:
wait - true, wenn gewartet werden soll

waitThread

private void waitThread()
wartet auf das Hintergrundthread

pause

private void pause(boolean wait)
pausiert und wartet ggf. auf das Hintergrundthread
Parameters:
wait - true, wenn gewartet werden soll

resume

private void resume()
setzt aus Pause-Modus fort

stepSimulation

private void stepSimulation()
fuehrt einen Schritt aus und kuemmert sich um Ausgabe, Reaktion, Mitteilung an andere

executeStepSimulation

private void executeStepSimulation()
fuehrt einen Schritt durch

addHaltepunkt

public void addHaltepunkt(int zustand,
                          char eingabe)
Fuegt einen Haltepunkt hinzu. Ist er bereits vorhanden, wird die Aktion ignoriert
Parameters:
zustand - externe Zustandsnummer des Zustands, in dem gehalten werden soll
eingabe - Zeichen, bei dem gestoppt werden soll

loescheHaltepunkt

public void loescheHaltepunkt(int zustand,
                              char eingabe)
Loescht einen Haltepunkt. Ist er nicht vorhanden, wird die Aktion ignoriert
Parameters:
zustand - externe Zustandsnummer des Zustands, in dem gehalten werden soll
eingabe - Zeichen, bei dem gestoppt werden soll

containsHaltepunkt

public boolean containsHaltepunkt(int zustand,
                                  char eingabe)
Prueft ob ein Haltepunkt angemeldet ist.
Parameters:
zustand - externe Zustandsnummer des Zustands, in dem gehalten werden soll
eingabe - Zeichen, bei dem gestoppt werden soll
Returns:
true falls enthalten, sonst false

toggleHaltepunkt

public void toggleHaltepunkt(int zustand,
                             char eingabe)
Ist der Haltepunkt enhalten, so wird er geloescht, sonst wird er eingefuegt
Parameters:
zustand - externe Zustandsnummer des Zustands, in dem gehalten werden soll
eingabe - Zeichen, bei dem gestoppt werden soll

containsHaltepunkt

private boolean containsHaltepunkt(Zustand z,
                                   char eingabe)
Testet ob ein Zustand enthalten ist, bloss nach Objekt
Parameters:
z - Zustand des Haltepunkts, der geprueft werden soll