51
Ein Automatensimulator Ein Automatensimulator Klaus Becker 2004

Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

Embed Size (px)

Citation preview

Page 1: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

Ein AutomatensimulatorEin Automatensimulator

Klaus Becker2004

Page 2: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

2

KB

Au

tom

ate

nsi

mu

lato

rAutomatensimulatorAutomatensimulator

Tag

AusAusAn

Page 3: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

3

KB

Au

tom

ate

nsi

mu

lato

rTeil 1 Teil 1

Endliche Automaten

Page 4: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

4

KB

Au

tom

ate

nsi

mu

lato

rBeispiel: AmpelsteuerungBeispiel: Ampelsteuerung

Ziel ist es, eine steuerbare Ampel zu modellieren.Ziel ist es, eine steuerbare Ampel zu modellieren.

/1/ Die Ampel kann mit Hilfe eines Steuersignals auf Tag- und Nachtbetrieb eingestellt werden.

/2/ Im Tagbetrieb durchläuft die Ampel die üblichen Phasen. Alle Phasen sollen der Einfachheit halber gleich lang sein.

/3/ Im Nachtbetrieb soll nur die gelbe Lampe blinken.

Page 5: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

5

KB

Au

tom

ate

nsi

mu

lato

rZustandsbasierte ModellierungZustandsbasierte Modellierung

Erstellt mit Violet

Page 6: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

6

KB

Au

tom

ate

nsi

mu

lato

rZustandsbasierte ModellierungZustandsbasierte Modellierung

Page 7: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

7

KB

Au

tom

ate

nsi

mu

lato

rAutomat als DatenverarbeitungsmodellAutomat als Datenverarbeitungsmodell

Tag

AusAusAn

Eingabe

Verarbeitung

Ausgabe

Page 8: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

8

KB

Au

tom

ate

nsi

mu

lato

rPräzisierung des AutomatenbegriffsPräzisierung des Automatenbegriffs

Zustandsmenge: Z = {rot, rotgelb, gruen, gelb, aus}

Anfangszustand: za = gelb

Eingabemenge: E = {Tag, Nacht}

Ausgabemenge: A = {AnAusAus, AnAnAus, AusAusAn, ...}

Überführungsfunktion: : (rot, Tag) rotgelb, ...

Ausgabefunktion: : (rot, Tag) AnAnAus, ...

Ein endlicher Automat ist ein Tupel A = (Z, za, E, A, , ) bestehend aus - einer endlichen Menge Z von Zuständen,- einem Anfangszustand zaZ,- einer endlichen Menge E von Eingabezeichen,- einer endlichen Menge A von Ausgabezeichen,- einer Überführungsfunktion : Z x E Z und - einer Ausgabefunktion : Z x E A.

Ein endlicher Automat ist ein Tupel A = (Z, za, E, A, , ) bestehend aus - einer endlichen Menge Z von Zuständen,- einem Anfangszustand zaZ,- einer endlichen Menge E von Eingabezeichen,- einer endlichen Menge A von Ausgabezeichen,- einer Überführungsfunktion : Z x E Z und - einer Ausgabefunktion : Z x E A.

Page 9: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

9

KB

Au

tom

ate

nsi

mu

lato

rBeispiel: Steuerung einer KlimaanlageBeispiel: Steuerung einer Klimaanlage

Aus der Bedienungsanleitung:

Die Klimaanlage hat drei Schaltstufen:1. Aus: Es leuchtet keine Kontrollleuchte.2. Halbe Kühlleistung: Eine Kontrollleuchte ist an.3. Volle Kühlleistung: Beide Kontrollleuchten sind an.Drücken Sie jeweils auf den Schalter, um zwischen den Schaltstufen umzuschalten.

nach D. Jonietz: Lehrprobenentwurf

Page 10: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

10

KB

Au

tom

ate

nsi

mu

lato

rÜbungÜbung

Beschreiben Sie das Verhalten der Klimaanlage mit Hilfe eines endlichen Automaten. Geben Sie für Ihren Automaten auch die einzelnen Automatenbestandteile (Zustandsmenge etc.) an.

Page 11: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

11

KB

Au

tom

ate

nsi

mu

lato

rTeil 2 Teil 2

Auftrag und Pflichtenheft

Page 12: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

12

KB

Au

tom

ate

nsi

mu

lato

rAuftragAuftrag

Es soll ein Programm zur Simulation von endlichen Automaten entwickelt werden. Mit Hilfe dieses Programms soll der Benutzer einen beliebigen Automaten festlegen und sein Verhalten simulieren können.

Es soll ein Programm zur Simulation von endlichen Automaten entwickelt werden. Mit Hilfe dieses Programms soll der Benutzer einen beliebigen Automaten festlegen und sein Verhalten simulieren können.

Page 13: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

13

KB

Au

tom

ate

nsi

mu

lato

rPrototypPrototyp

Page 14: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

14

KB

Au

tom

ate

nsi

mu

lato

rPflichtenheftPflichtenheft

/0/ Der Benutzer kann einen beliebigen Automaten (in einer vorgegebenen Sprache) festlegen.

/1/ Die Beschreibung des Automaten soll ein standardisiertes Format besitzen. Wir orientieren uns an der Automatendefinition und die benutzen die Sprache XML.

/2/ Die Automatenbeschreibung kann gespeichert und wieder geladen werden.

/3/ Zur Simulation des Automatenverhaltens kann der Benutzer beliebige Eingaben vorgeben und den Automaten diese Eingabe verarbeiten lassen. Das Programm zeigt dann die vom Automaten erzeugte Ausgabe an.

/4/ Der jeweilige aktuelle Zustand des Automaten soll dem Benutzer angezeigt werden.

Page 15: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

15

KB

Au

tom

ate

nsi

mu

lato

rExkurs: XMLExkurs: XML

XML (Abk. für extended markup language) ist eine Metasprache zur Beschreibung von Auszeichnungssprachen für allgemeine Dokumente. XML wurde 1996 entworfen und 1998 eingeführt. XML ist aus SGML und HTML entstanden. (Duden Informatik)XML erlaubt es, neue Sprachen zu entwerfen, z. B. um eine Dokumentenstruktur festzulegen.

<?xml version="1.0"?><automat name="Ampel"> <zustandsmenge> <zustand>rot</zustand> <zustand>rotgelb</zustand> ... </zustandsmenge> ...</automat>

Informationen zu XML: http://selfhtml.teamone.de/xml/

Page 16: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

16

KB

Au

tom

ate

nsi

mu

lato

rExkurs: XMLExkurs: XML

Die Informationen in einem XML-Dokument werden mit Hilfe von sog. Tags eingeschlossen. Z. B.:

<zustand>rot</zustand>

Ein Tag kann mit Attributen versehen werden. Z. B.:

<automat name="Ampel">

<?xml version="1.0"?><automat name="Ampel"> <zustandsmenge> <zustand>rot</zustand> <zustand>rotgelb</zustand> ... </zustandsmenge> ...</automat>

Das gesamte XML-Dokument ist hierarchisch aus Tags und Texten aufgebaut.

Page 17: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

17

KB

Au

tom

ate

nsi

mu

lato

rAutomatenbeschreibung mit XMLAutomatenbeschreibung mit XML

<?xml version="1.0"?><automat name="Ampel"> <zustandsmenge> <zustand>rot</zustand> <zustand>rotgelb</zustand> ... </zustandsmenge> <anfangszustand> <zustand>gelb</zustand> </anfangszustand> <eingabemenge> <eingabe>Tag</eingabe> <eingabe>Nacht</eingabe> </eingabemenge> <ausgabemenge> <ausgabe>AusAusAus</ausgabe> <ausgabe>AnAusAus</ausgabe> ... </ausgabemenge> ...

Page 18: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

18

KB

Au

tom

ate

nsi

mu

lato

rAutomatenbeschreibung mit XMLAutomatenbeschreibung mit XML

... <ueberfuehrungsfunktion> <delta>rot,Tag,rotgelb</delta> <delta>rot,Nacht,aus</delta> <delta>rotgelb,Tag,gruen</delta> <delta>rotgelb,Nacht,aus</delta> <delta>gruen,Tag,gelb</delta> <delta>gruen,Nacht,aus</delta> ... </ueberfuehrungsfunktion> <ausgabefunktion> <lambda>rot,Tag,AnAnAus</lambda> <lambda>rot,Nacht,AusAusAus</lambda> <lambda>rotgelb,Tag,AusAusAn</lambda> <lambda>rotgelb,Nacht,AusAusAus</lambda> <lambda>gruen,Tag,AusAnAus</lambda> <lambda>gruen,Nacht,AusAusAus</lambda> <lambda>gelb,Tag,AnAusAus</lambda> ... </ausgabefunktion> </automat>

Page 19: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

19

KB

Au

tom

ate

nsi

mu

lato

rVereinfachte AutomatenbeschreibungVereinfachte Automatenbeschreibung

<?xml version="1.0"?><automat name="Ampel"> <zustandsmenge><zustand>rot</zustand><zustand>rotgelb</zustand>...</zustandsmenge><anfangszustand><zustand>gelb</zustand></anfangszustand><eingabemenge><eingabe>Tag</eingabe><eingabe>Nacht</eingabe></eingabemenge><ausgabemenge><ausgabe>AusAusAus</ausgabe><ausgabe>AnAusAus</ausgabe>...</ausgabemenge>...

linksbündig

Muss festgelegt

werden

Kann festgelegt

werden

Page 20: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

20

KB

Au

tom

ate

nsi

mu

lato

rVereinfachte AutomatenbeschreibungVereinfachte Automatenbeschreibung

...<ueberfuehrungsfunktion><delta>rot,Tag,rotgelb</delta><delta>rot,Nacht,aus</delta><delta>rotgelb,Tag,gruen</delta><delta>rotgelb,Nacht,aus</delta><delta>gruen,Tag,gelb</delta><delta>gruen,Nacht,aus</delta>...</ueberfuehrungsfunktion><ausgabefunktion><lambda>rot,Tag,AnAnAus</lambda><lambda>rot,Nacht,AusAusAus</lambda><lambda>rotgelb,Tag,AusAusAn</lambda><lambda>rotgelb,Nacht,AusAusAus</lambda><lambda>gruen,Tag,AusAnAus</lambda><lambda>gruen,Nacht,AusAusAus</lambda><lambda>gelb,Tag,AnAusAus</lambda>...</ausgabefunktion> </automat>

Trennung mit Komma, keine Leerzeichen,

alle Informationen in eine Zeile

Page 21: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

21

KB

Au

tom

ate

nsi

mu

lato

rÜbungÜbung

Beschreiben Sie den Klimaanlage-Automaten mit Hilfe der vereinfachten Automatensprache. Diese Automatenbeschreibung wird später zu Testzwecken benötigt.

Page 22: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

22

KB

Au

tom

ate

nsi

mu

lato

rÜbungÜbung

Die vorgestellte XML-Beschreibung eines Automaten kann auf verschiedene Weisen modifiziert und verbessert werden.

- Die Tag-Bezeichner sind recht lang (viel Schreibarbeit). Man könnte hier geeignete Abkürzungen einführen.

- Die Überführungs- und Ausgabefunktion können gemeinsam erfasst werden.

- Die durch das Komma dargestellte innere Struktur der <delta>- und <lambda>-Einheiten sollte durch XML selbst erfasst werden.

Entwickeln Sie einen geeigneten Vorschlag.

Page 23: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

23

KB

Au

tom

ate

nsi

mu

lato

rTeil 3 Teil 3

Objektorientierte Analyse

Page 24: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

24

KB

Au

tom

ate

nsi

mu

lato

rZielsetzung der OOAZielsetzung der OOA

- Unabhängig von der späteren Implementierung wird die Miniwelt mit Hilfe von Objekten, Klassen sowie deren Beziehungen beschrieben.

- Die Miniwelt wird dabei soweit abstrahiert, dass alle für den Auftraggeber relevanten Bestandteile des Problembereichs abgebildet sind.

- Das Ergebnis einer OOA ist also eine präzise, abstrahierende Beschreibung der Miniwelt.

Modellierung des Problembereichs („Miniwelt“), der vom zu entwickelnden Informatiksystem erfasst werden soll.Modellierung des Problembereichs („Miniwelt“), der vom zu entwickelnden Informatiksystem erfasst werden soll.

Page 25: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

25

KB

Au

tom

ate

nsi

mu

lato

rBeschreibung der MiniweltBeschreibung der Miniwelt

Tag

AusAusAn

Page 26: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

26

KB

Au

tom

ate

nsi

mu

lato

rBeschreibung der MiniweltBeschreibung der Miniwelt

Tag

...

<?xml version="1.0"?><automat name="Ampel"> <zustandsmenge><zustand>rot</zustand><zustand>rotgelb</zustand>...</zustandsmenge><anfangszustand><zustand>gelb</zustand></anfangszustand><eingabemenge><eingabe>Tag</eingabe><eingabe>Nacht</eingabe></eingabemenge><ausgabemenge><ausgabe>AusAusAus</ausgabe><ausgabe>AnAusAus</ausgabe>...

rotgelb

Page 27: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

27

KB

Au

tom

ate

nsi

mu

lato

rÜbungÜbung

Überlegen Sie sich, wie ein Objekt zur Beschreibung eines Automaten strukturiert sein könnte. Beschreiben Sie die Zuständigkeiten dieses Objektes und modellieren Sie seine Attribute und Methoden. Stellen Sie die Ergebnisse mit Hilfe geeigneter Diagramme dar.

Page 28: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

28

KB

Au

tom

ate

nsi

mu

lato

rDer Automat als ObjektDer Automat als Objekt

Zuständigkeiten:- verwaltet die Automatenbeschreibung- verwaltet den aktuellen Zustand

Dienste:- in den Anfangszustand setzen- zu einer Eingabe eine Ausgabe bestimmen und zur Verfügung stellen- zu einer Eingabe den neuen Zustand setzen- den aktuellen Zustand zur Verfügung stellen

Page 29: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

29

KB

Au

tom

ate

nsi

mu

lato

rErste ObjektdiagrammeErste Objektdiagramme

Zuständigkeiten:- verwaltet die Automatenbeschreibung- verwaltet den aktuellen Zustand

Version 1:

Version 2:

Page 30: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

30

KB

Au

tom

ate

nsi

mu

lato

rEin erstes KlassendiagrammEin erstes Klassendiagramm

Dienste:- in den Anfangszustand setzen- zu einer Eingabe eine Ausgabe bestimmen und zur Verfügung stellen- zu einer Eingabe den neuen Zustand setzen- den aktuellen Zustand zur Verfügung stellen- die Beschreibung festlegen

Page 31: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

31

KB

Au

tom

ate

nsi

mu

lato

rTeil 4 Teil 4

Objektorientiertes Design

Page 32: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

32

KB

Au

tom

ate

nsi

mu

lato

rZielsetzung des OODZielsetzung des OOD

- Genaue Spezifikation der Attribute (Datentypen) und Methoden (Parameter und ihre Datentypen)

- Modellierung der Benutzungsoberfläche

Anpassung des OOA-Modells an die Rahmenbedingungen des zu erstellenden SystemsAnpassung des OOA-Modells an die Rahmenbedingungen des zu erstellenden Systems

Page 33: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

33

KB

Au

tom

ate

nsi

mu

lato

rSpezifikation der Attribute und Spezifikation der Attribute und

MethodenMethoden

Datentypen:- Eingaben, Ausgaben und Zustände werden als Zeichenketten dargestellt.- Die Automatenbeschreibung wird als Liste von Zeichenketten dargestellt.

Page 34: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

34

KB

Au

tom

ate

nsi

mu

lato

rBenutzungsoberflächeBenutzungsoberfläche

Page 35: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

35

KB

Au

tom

ate

nsi

mu

lato

rEreignisbehandlungEreignisbehandlung

Benutzeraktion Programmreaktionen

Mausklick auf den „Laden“-Button

Mausklick auf den „Speichern“-Button

Mausklick auf den „Löschen“-Button

Mausklick auf den „Übernehmen“-Button

Mausklick auf den „Initialisieren“-Button

Mausklick auf den „Verarbeiten“-Button

Die Automatenbeschreibung wird in das Memo-Feld geladen.

Die Automatenbeschreibung im Memo-Feld wird gespeichert.

Das Memo-Feld wird gelöscht. Der Automat hat keine Beschreibung mehr.

Der Automat übernimmt die Automaten-beschreibung.

Der Automat wird in den Anfangszustand gesetzt.

Der Automat übernimmt die Eingabe, berechnet die Ausgabe und geht in den neuen Zustand über. Die Ausgabe und der neue Zustand werden angezeigt.

Page 36: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

36

KB

Au

tom

ate

nsi

mu

lato

rKlasse TGUIKlasse TGUI

Page 37: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

37

KB

Au

tom

ate

nsi

mu

lato

rÜbungÜbung

Erstellen Sie mit Hilfe von UMLEd ein Klassendiagramm zur Klasse TAutomat mit integrierter Dokumentation.

Page 38: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

38

KB

Au

tom

ate

nsi

mu

lato

r

Page 39: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

39

KB

Au

tom

ate

nsi

mu

lato

rTeil 5 Teil 5

Implementierung und Testen

Page 40: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

40

KB

Au

tom

ate

nsi

mu

lato

rBeispiel: TAutomat.anfangszustand Beispiel: TAutomat.anfangszustand

<?xml version="1.0"?><automat name="Ampel"><anfangszustand><zustand>gelb</zustand></anfangszustand>...

ALGORITHMUS anfangszustand

Suche die Zeile <anfangszustand>

Gehe zur nächsten Zeile

Bestimme die Zeichenkette zwischen den Tags

Weise „zustand“ den entsprechenden Wert zu

Page 41: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

41

KB

Au

tom

ate

nsi

mu

lato

rExkurs: Stringverarbeitung mit Delphi Exkurs: Stringverarbeitung mit Delphi

function Length(S: string): integer;

Beschreibung:Length gibt die Anzahl der im angegebenen String vorhandenen Zeichen zurück.

Beispiel:L := Length('<zustand>') // L 9

function Pos(Substr: string; S: string): integer;

Beschreibung:Pos sucht in dem String S nach dem Teilstring Substr. Wird der Teilstring gefunden, gibt Pos den Integer-Index des ersten Zeichens von Substr in S zurück. Die Groß/Kleinschreibung wird von Pos nicht berücksichtigt. Ist Substr nicht vorhanden, wird der Wert 0 zurückgegeben.

Beispiele:Position := Pos('</z>', '<z>test</z>') // Position 8Position := Pos('Hi', 'Delphibuch') // Position 5Position := Pos('ihi', 'Delphibuch') // Position 0

Page 42: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

42

KB

Au

tom

ate

nsi

mu

lato

rExkurs: Stringverarbeitung mit Delphi Exkurs: Stringverarbeitung mit Delphi

function Copy(S; Index, Count: Integer): string;

Beschreibung:S ist ein Ausdruck des Typs String. Index und Count sind Integer-Ausdrücke. Copy gibt einen Substring zurück, das Count Zeichen ab S[Index] enthält.

Ist Index größer als die Länge von S, gibt Copy einen leeren String zurück.

Gibt Count mehr Zeichen an, als verfügbar sind, werden nur die Zeichen von S[Index] bis zum Ende von S zurückgegeben.

Beispiele:Hilf := Copy('<z>test</z>',8,4) // Hilf '</z>' Hilf := Copy('<z>test</z>',4,4) // Hilf 'test' Hilf := Copy('<z>test</z>',8,6) // Hilf '</z>'

Page 43: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

43

KB

Au

tom

ate

nsi

mu

lato

rExkurs: Die Delphi-Klasse TStringListExkurs: Die Delphi-Klasse TStringList

TStringList verwaltet eine Liste, die Strings enthält.

Beschreibung:

TStringList-Objekte dienen zum Speichern und Verwalten von String-Listen. TStringList implementiert die von TStrings eingeführten abstrakten Eigenschaften und Methoden und führt selbst neue Eigenschaften, Ereignisse und Methoden ein, die

- die in der Liste enthaltenen Strings sortieren.

- doppelte Strings aus sortierten Listen entfernen.

- auf Änderungen des Listeninhalts reagieren.

(Quelle: Delphi-Hilfe)

Page 44: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

44

KB

Au

tom

ate

nsi

mu

lato

rExkurs: Die Delphi-Klasse TStringListExkurs: Die Delphi-Klasse TStringList

<?xml version="1.0"?><automat name="Ampel"> <zustandsmenge><zustand>rot</zustand><zustand>rotgelb</zustand><zustand>gruen</zustand><zustand>gelb</zustand><zustand>aus</zustand></zustandsmenge><anfangszustand><zustand>gelb</zustand></anfangszustand>...

beschreibung[0]: '<?xml version="1.0"?>'

beschreibung[1]: '<automat name="Ampel">'

beschreibung[2]: '<zustandsmenge>'

...

Zugriff auf die

Listenelemente

Page 45: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

45

KB

Au

tom

ate

nsi

mu

lato

rExkurs: Die Delphi-Klasse TStringListExkurs: Die Delphi-Klasse TStringList

'<?xml version="1.0"?>'

'<automat name="Ampel">'

0

1

'<zustandsmenge>'

...

2

...

procedure Add(S: string);

- fügt die Zeichenkette S am Ende der Liste an

procedure Clear;

- löscht die gesamte Liste

procedure Delete(Index: Integer);

- löscht nur den Eintrag mit dem übegebenen Index

procedure Insert(Index: Integer; S: string);

- fügt die Zeichenkette S an die durch Index beschriebenen Zeile in der Liste ein

procedure LoadFromFile(FileName: string);

procedure SaveToFile(FileName: string);

- lädt eine Liste aus einer Datei / speichert eine Liste in eine Datei

beschreibung.Count-1 '</automat>'

Methoden

Attribut

Page 46: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

46

KB

Au

tom

ate

nsi

mu

lato

rÜbungÜbung

Implementieren Sie zunächst die Klasse TAutomat gemäß der modellierten Klassenbeschreibung.

Testen Sie das entwickelte System. Zum Testen soll zum einen der vorgefertigte Ampelautomat, zum anderen ein selbst erstellter Klimaanlagenautomat benutzt werden.

Page 47: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

47

KB

Au

tom

ate

nsi

mu

lato

rTeil 6 Teil 6

Erweiterung und Überarbeitung

Page 48: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

48

KB

Au

tom

ate

nsi

mu

lato

rVerarbeitung von Eingabefolgen Verarbeitung von Eingabefolgen

Tag Nacht ...TagTag

AusAusAn AusAusAus ...AnAnAusAnAusAus

Page 49: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

49

KB

Au

tom

ate

nsi

mu

lato

rVerarbeitung von Eingabefolgen Verarbeitung von Eingabefolgen

<?xml version="1.0"?><automat name="Ampel"> <zustandsmenge><zustand>rot</zustand><zustand>rotgelb</zustand>...</zustandsmenge><anfangszustand><zustand>gelb</zustand></anfangszustand><eingabemenge><eingabe>Tag</eingabe><eingabe>Nacht</eingabe></eingabemenge><ausgabemenge><ausgabe>AusAusAus</ausgabe><ausgabe>AnAusAus</ausgabe>...

gelb

TStringList

TagTagTagNacht...

AnAusAusAnAnAusAusAusAnAusAusAus...

TStringList

TStringList

Page 50: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

50

KB

Au

tom

ate

nsi

mu

lato

rAufgabe Aufgabe

Erweitern Sie den Automatensimulator um die Möglichkeit, ganze Eingabefolgen zu verarbeiten.

Page 51: Ein Automatensimulator Klaus Becker 2004. KB Automatensimulator 2 Automatensimulator Tag AusAusAn

51

KB

Au

tom

ate

nsi

mu

lato

rAufgabe Aufgabe

Der entwickelte Automatensimulator arbeitet recht ineffizient. Woran liegt das? Wie könnte man diesen Mangel beheben? Lösungsvorschlag von K. Merkert: http://hsg.region-kaiserslautern.de/faecher/inf/material/xml/delphi/xmlautomat.zip