Implementierung

Vom Klassendiagramm zur Implementierung

Wir gehen hier von der folgenden Modellierung der Klasse Automat aus.

Klassendiagramm

Aufgabe 1: Eine Implementierung selbst entwickeln

Entwickle eine Implementierung zur Klasse Automat. Kontrolliere die Implementierung mit einem Testdialog wie diem folgenden:

>>> a = Automat()
>>> a.setZustaende(['ausgeschaltet','eingeschaltet'])
>>> a.setEingaben(['ausschalten', 'einschalten'])
>>> a.setAusgaben(['aus', 'an'])
>>> a.setAutomatentafel([[('aus', 'ausgeschaltet'), ('an', 'eingeschaltet')], [('aus', 'ausgeschaltet'), ('an', 'eingeschaltet')]])
>>> a.setAnfangszustand('ausgeschaltet')
>>> a.initialisieren()
>>> a.getZustand()
'ausgeschaltet'
>>> a.verarbeiten('einschalten')
'an'
>>> a.getZustand()
'eingeschaltet'
>>> a.verarbeiten('einschalten')
'an'
>>> a.getZustand()
'eingeschaltet'

Aufgabe 2: Eine Implementierung testen

Gegeben ist die Implementierung in der Datei automat.py.

(a) Analysiere die Implementierung und erläutere die Bestandteile.

(b) Entwickle ein Testprogramm zum Getränkeautomaten (siehe ...).

from automat import Automat 

a = Automat()
a.setZustaende(['z0','z1','z2','z3'])
...
a.initialisieren()
...

Mit dem Testprogramm soll die folgende Testreihe erzeugt werden.

Zustand: z0
Eingabe: e1
Ausgabe: aNichts
Zustand: z1
Eingabe: e1
Ausgabe: aNichts
Zustand: z2
Eingabe: e2
Ausgabe: a2
Zustand: z2
...

Bemerkung

Die Implementierungen benutzen ein einheitliches Schema, mit dem jeder endliche Automat simuliert werden kann. Das Schema greift dabei die Präzisierung des Fachkonzepts endlicher Automat zurück. Präzisierung erweist sich hier also als Schlüssel, um eine ganze Problemklasse (Simulation zustandsbasierter Systeme) einheitlich bearbeiten zu können.

X

Fehler melden

X

Suche