Übungen
Aufgabe 1: Objekte erzeugen und benutzen
Das Verhalten einer Ampel lässt sich mit dem folgenden Zustandsdiagramm abstrahierend beschreiben.
Die Ampel befindet sich immer in einem der Zustände "rot", "rotgelb", "gruen" oder "gelb". Die Markierung am Zustand "rot" soll bedeuten, dass sich eine Ampel zu Beginn in diesem Zustand befindet. Mit der Aktion "schalten" wird jeweils ein Zustandsübergang ausgelöst.
Gegeben ist eine hierzu passende alternative Implementierung der Klasse Ampel
:
class Ampel(object):
def __init__(self):
self.zustand = 'rot'
def setZustand(self, anfangszustand):
self.zustand = anfangszustand
def schalten(self):
if self.zustand == 'rot':
self.zustand = 'rotgelb'
# elif ...
def getLampen(self):
if self.zustand == 'rot':
lampen = (True, False, False)
# elif ...
return lampen
(a) Ergänze die Klassendeklaration. Teste sie anschließend, indem du ein Objekt der Klasse Ampel
erzeugst und geeignet aktivierst.
(b) Zeichne ein Klassendiagramm, das zu dieser Implementierung passt.
(c) Wir ändern den Konstruktor der Klasse Ampel
wie folgt ab:
class Ampel(object):
def __init__(self, anfangszustand):
self.zustand = anfangszustand
def setZustand(self, anfangszustand):
self.zustand = anfangszustand
def schalten(self):
if self.zustand == 'rot':
self.zustand = 'rotgelb'
# elif ...
def getLampen(self):
if self.zustand == 'rot':
lampen = (True, False, False)
# elif ...
return lampen
Stelle Vermutungen auf, was im folgenden Python-Dialog an Stelle der Fragezeichen steht. Überprüfe deine Vermutung.
>>> a1 = Ampel('rot')
>>> a2 = Ampel('gruen')
>>> a1.getLampen()
?
>>> a2.getLampen()
?
>>> a1.schalten()
>>> a2.schalten()
>>> a1.setZustand('rot')
>>> a1.getLampen()
?
>>> a2.getLampen()
?
Aufgabe 2: Eine Klasse konzipieren
Entwickle und teste eine Klasse zur Simulation von Fußgängerampeln.
Aufgabe 3: Eine Klasse konzipieren
Viele Ampeln verhalten sich nachts anders als tagsüber. Nachts wird nur die gelbe Lampe aus-
und eingeschaltet.
Dieses Verhalten soll mit einer weiterentwickelten Klasse Ampel
simuliert werden.
Das Klassendiagramm ist wie folgt gegeben:
(a) Mache dir zunächst klar, wie die Tag-Nacht-Ampel funktionieren soll.
(b) Entwickle eine passende Implementierung und teste sie.