hades.models.fsm
Class FSM

java.lang.Object
  extended byhades.models.fsm.FSM

public class FSM
extends java.lang.Object

Finite State Machine - Endlicher Automat


Field Summary
 java.util.Vector aktivierteTransitionen
          Vektor, der die bei der aktuellen Belegung aktivierten Transitionen enthält
wird in calculateTransitionen berechnet, nachdem Input-Werte verändert wurden
(package private)  boolean blocked
          Gibt an, ob die FSM blockiert ist
 Zustand currentState
          aktueller Zustand des Automaten
 java.util.Vector inputs
          Vektor, der die Inputs enthält
 java.util.Vector kommentare
          Vektor, der die Kommentare enthält
static int MEALY
          Konstante für Machine-Type = Mealy
 int mealy_moore
          gibt den Machine-Type an (kann die Werte MEALY oder MOORE annehmen)
static int MOORE
          Konstante für Machine-Type = Moore
 java.util.Vector outputs
          Vektor, der die Outputs enthält
protected  Statuszeile status
          Statuszeile im MainFrame
 java.util.Vector transitionen
          Vektor, der die Transitionen enthält
 java.util.Vector zustaende
          Vektor, der die Zustände enthält
 
Constructor Summary
FSM()
          Konstruktor
 
Method Summary
 void calculateTransition()
          berechnet die bei der aktuellen Belegung aktivierten Transitionen (enthalten im Vektor aktivierteTransitionen)
 void calculateZustand()
          berechnet den Folgezustand (wird zum Vektor zustandsfolge addiert)
 void deleteInput(Signal in)
          löscht einen Input
 void deleteKommentar(Kommentar k)
          löscht einen Kommentar
 void deleteOutput(Signal out)
          löscht einen Output
 void deleteTransition(Transition t)
          löscht eine Transition
 void deleteZustand(Zustand z)
          löscht einen Zustand und alle anliegenden Transitionen
 void drawFSM(int xPos, int yPos, int width, int height, java.awt.Graphics g, java.lang.Object active)
          zeichnet einen skalierten Automaten ohne Beschriftung (max.
 void drawFSM(int xPos, int yPos, int width, int height, java.awt.Graphics g, java.lang.Object active, java.util.Vector active_trans)
          zeichnet einen skalierten Automaten ohne Beschriftung (mit mehreren aktivierten Transitionen)
 void edit()
           
 void edit(FsmWrapper wrapper)
           
 boolean existsStartzustand()
          ermittelt, ob bereits ein Startzustand definiert wurde
 int findTransition(Zustand z1, Zustand z2)
          sucht eine bestimmte Transition
 java.util.Vector getAktivierteTransitionen()
           
static FSM getDefaultFSM()
          gibt eine deafult FSM fuer HADES zurueck
 EditFrame getEditFrame()
           
 FsmWrapper getFsmWrapper()
           
 int getInputSize()
          gibt die Anzahl der Eingänge zurück
 int getMachineType()
          ermittelt den Automaten-Typ
 java.lang.String getName()
          gibt den Automaten-Namen zurück
 int getOutputSize()
          gibt die Anzahl der Ausgänge zurück
 java.lang.String getResourceName()
          gibt den File Namen zurück
 Zustand getStartzustand()
          liefert den derzeit definierten Startzustand
 int getZustaendeSize()
          gibt die Anzahl der Zustände zurück
 java.lang.String loadFSM(java.io.Reader reader)
          Lädt einen Automaten aus einem Reader
 void message(java.lang.String msg)
           
 Signal newInput()
          fügt einen neuen Input hinzu
 Kommentar newKommentar(java.lang.String txt, int x, int y)
          fügt einen neuen Kommentar hinzu
 void newMachine()
          Löscht den bisherigen Automaten
 Signal newOutput()
          fügt einen neuen Output hinzu
 Transition newTransition(Zustand z1, Zustand z2)
          fügt eine neue Transition hinzu
 Zustand newZustand(java.lang.String name, int x, int y)
          fügt einen neuen Zustand hinzu
protected  void rebuild()
           
 void reset()
          führt einen Reset aus setzt Eingänge auf ihre Initialwerte zurück und den Startzustand als aktuellen Zustand
 java.lang.String saveFSM()
          Liefert die Automatenbeschreibung als String zurueck
 void setMealy()
          setzt den Automaten-Typ auf Mealy
 void setMoore()
          setzt den Automaten-Typ auf Moore
 void setName(java.lang.String name)
          setzt den Automaten Namen
 void setResourceName(java.lang.String name)
          setzt den File Namen
 void setStart(Zustand z)
          definiert einen Zustand als Startzustand
 void setStatuszeile(Statuszeile sz)
           
 void takt()
          generiert einen Takt, berechnet den Folgezustand und setzt daraufhin die Outputwerte
 void zwischentakt()
          generiert beim Mealy Automaten einen Zwischen-Takt, wenn die Eingangswerte verändert werden, und setzt daraufhin die Outputwerte
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

blocked

boolean blocked
Gibt an, ob die FSM blockiert ist


inputs

public java.util.Vector inputs
Vektor, der die Inputs enthält


outputs

public java.util.Vector outputs
Vektor, der die Outputs enthält


zustaende

public java.util.Vector zustaende
Vektor, der die Zustände enthält


transitionen

public java.util.Vector transitionen
Vektor, der die Transitionen enthält


kommentare

public java.util.Vector kommentare
Vektor, der die Kommentare enthält


currentState

public Zustand currentState
aktueller Zustand des Automaten


aktivierteTransitionen

public java.util.Vector aktivierteTransitionen
Vektor, der die bei der aktuellen Belegung aktivierten Transitionen enthält
wird in calculateTransitionen berechnet, nachdem Input-Werte verändert wurden


mealy_moore

public int mealy_moore
gibt den Machine-Type an (kann die Werte MEALY oder MOORE annehmen)


MOORE

public static final int MOORE
Konstante für Machine-Type = Moore

See Also:
Constant Field Values

MEALY

public static final int MEALY
Konstante für Machine-Type = Mealy

See Also:
Constant Field Values

status

protected Statuszeile status
Statuszeile im MainFrame

Constructor Detail

FSM

public FSM()
Konstruktor

Method Detail

edit

public void edit()

getFsmWrapper

public FsmWrapper getFsmWrapper()

edit

public void edit(FsmWrapper wrapper)

getEditFrame

public EditFrame getEditFrame()

rebuild

protected void rebuild()

newMachine

public void newMachine()
Löscht den bisherigen Automaten


getDefaultFSM

public static FSM getDefaultFSM()
gibt eine deafult FSM fuer HADES zurueck


setStatuszeile

public void setStatuszeile(Statuszeile sz)

newInput

public Signal newInput()
fügt einen neuen Input hinzu

Returns:
Signal Instanz des neuen Inputs

newOutput

public Signal newOutput()
fügt einen neuen Output hinzu

Returns:
Signal Instanz des neuen Outputs

newZustand

public Zustand newZustand(java.lang.String name,
                          int x,
                          int y)
fügt einen neuen Zustand hinzu

Parameters:
name - Name des neuen Zustandes (String)
x - horizontale Position des Zustandes
y - vertikale Position des Zustandes
Returns:
Zustand Instanz des neuen Zustandes

newTransition

public Transition newTransition(Zustand z1,
                                Zustand z2)
fügt eine neue Transition hinzu

Parameters:
z1 - Ausgangszustand der Transition (Zustand)
z2 - Zielzustand der Transition (Zustand)
Returns:
Transition Instanz der neuen Transitionen

newKommentar

public Kommentar newKommentar(java.lang.String txt,
                              int x,
                              int y)
fügt einen neuen Kommentar hinzu

Parameters:
txt - Kommentar-Text (String)
x - horiz. Position des Kommentares (int)
y - vert. Position des Kommentares (int)
Returns:
Kommentar Instanz des neuen Kommentares

findTransition

public int findTransition(Zustand z1,
                          Zustand z2)
sucht eine bestimmte Transition

Parameters:
z1 - Ausgangszustand der Transition (Zustand)
z2 - Zielzustand der Transition (Zustand)
Returns:
int Nummer der Transitionen im Vector oder -1, wenn nicht vorhanden

deleteInput

public void deleteInput(Signal in)
löscht einen Input

Parameters:
in - Input, der gelöscht werden soll

deleteOutput

public void deleteOutput(Signal out)
löscht einen Output

Parameters:
out - Output, der gelöscht werden soll

deleteZustand

public void deleteZustand(Zustand z)
löscht einen Zustand und alle anliegenden Transitionen

Parameters:
z - Zustand, der gelöscht werden soll

deleteTransition

public void deleteTransition(Transition t)
löscht eine Transition

Parameters:
t - Transition, die gelöscht werden soll

deleteKommentar

public void deleteKommentar(Kommentar k)
löscht einen Kommentar

Parameters:
k - Kommentar, der gelöscht werden soll

getName

public java.lang.String getName()
gibt den Automaten-Namen zurück

Returns:
Automaten-Name (String)

setName

public void setName(java.lang.String name)
setzt den Automaten Namen


getResourceName

public java.lang.String getResourceName()
gibt den File Namen zurück

Returns:
resourceName (String)

setResourceName

public void setResourceName(java.lang.String name)
setzt den File Namen


getInputSize

public int getInputSize()
gibt die Anzahl der Eingänge zurück

Returns:
int

getOutputSize

public int getOutputSize()
gibt die Anzahl der Ausgänge zurück

Returns:
int

getZustaendeSize

public int getZustaendeSize()
gibt die Anzahl der Zustände zurück

Returns:
int

getAktivierteTransitionen

public java.util.Vector getAktivierteTransitionen()

takt

public void takt()
generiert einen Takt, berechnet den Folgezustand und setzt daraufhin die Outputwerte


zwischentakt

public void zwischentakt()
generiert beim Mealy Automaten einen Zwischen-Takt, wenn die Eingangswerte verändert werden, und setzt daraufhin die Outputwerte


reset

public void reset()
führt einen Reset aus setzt Eingänge auf ihre Initialwerte zurück und den Startzustand als aktuellen Zustand


setMealy

public void setMealy()
setzt den Automaten-Typ auf Mealy


setMoore

public void setMoore()
setzt den Automaten-Typ auf Moore


getMachineType

public int getMachineType()
ermittelt den Automaten-Typ

Returns:
boolean true=Mealy / false=Moore

setStart

public void setStart(Zustand z)
definiert einen Zustand als Startzustand

Parameters:
z - Zustand, der als Startzustand definiert werden soll (Zustand)

existsStartzustand

public boolean existsStartzustand()
ermittelt, ob bereits ein Startzustand definiert wurde

Returns:
boolean false, wenn noch kein Startzustand definiert wurde

getStartzustand

public Zustand getStartzustand()
liefert den derzeit definierten Startzustand

Returns:
Zustand Startzustand

calculateZustand

public void calculateZustand()
berechnet den Folgezustand (wird zum Vektor zustandsfolge addiert)


calculateTransition

public void calculateTransition()
berechnet die bei der aktuellen Belegung aktivierten Transitionen (enthalten im Vektor aktivierteTransitionen)


saveFSM

public java.lang.String saveFSM()
Liefert die Automatenbeschreibung als String zurueck

Returns:
String Automatenbeschreibung

loadFSM

public java.lang.String loadFSM(java.io.Reader reader)
Lädt einen Automaten aus einem Reader

Parameters:
reader - Reader, aus dem die Automatenbeschreibung gelesen wird (Reader)
Returns:
String Fehlermeldung oder null, wenn keine Fehler aufgetreten sind

drawFSM

public void drawFSM(int xPos,
                    int yPos,
                    int width,
                    int height,
                    java.awt.Graphics g,
                    java.lang.Object active)
zeichnet einen skalierten Automaten ohne Beschriftung (max. ein aktives Element)

Parameters:
xPos - horizontale Position, ab der gezeichnet wird (int)
yPos - vertikale Position, ab der gezeichnet wird (int)
width - Breite, die zur Verfügung steht (int)
height - Höhe, die zur Verfügung steht (int)
g - graphischer Kontext, in den gezeichnet werden soll (Graphics)
active - Objekt (Zustand, Transition oder null), das rot (aktiviert) gezeichnet wird (Object)

drawFSM

public void drawFSM(int xPos,
                    int yPos,
                    int width,
                    int height,
                    java.awt.Graphics g,
                    java.lang.Object active,
                    java.util.Vector active_trans)
zeichnet einen skalierten Automaten ohne Beschriftung (mit mehreren aktivierten Transitionen)

Parameters:
xPos - horizontale Position, ab der gezeichnet wird (int)
yPos - vertikale Position, ab der gezeichnet wird (int)
width - Breite, die zur Verfügung steht (int)
height - Höhe, die zur Verfügung steht (int)
g - graphischer Kontext, in den gezeichnet werden soll (Graphics)
active - Objekt (Zustand, Transition oder null), das rot (aktiviert) gezeichnet wird (Object)
active_trans - Vector, der die aktivierten Transitionen enthält (Vector)

message

public void message(java.lang.String msg)