Version 2
Steuerung vieler Ampeln
Wir betrachten weiterhin eine Straßenkreuzung mit vier Ampeln.
Wenn ein Ampelsystem aus vielen Ampeln besteht, dann ist es meist günstiger, wenn das
Objekt ampelmanager
die Gesamtheit aller Ampeln mit Hilfe einer Liste verwaltet.
Die folgende Deklaration zeigt, wie man eine solche Objektkonstallation implementiert.
#------------------------------------------------------------------------------
# Ampel
#------------------------------------------------------------------------------
class Ampel(object):
# ... wie bisher
#------------------------------------------------------------------------------
# Ampelmanager
#------------------------------------------------------------------------------
class AmpelManager(object):
def __init__(self):
self.listeAmpeln = list()
def addAmpel(self, neueAmpel):
self.listeAmpeln.append(neueAmpel)
def getListeAmpeln(self):
return self.listeAmpeln
def schalteAmpeln(self):
# ...
#------------------------------------------------------------------------------
# Test
#------------------------------------------------------------------------------
ampelmanager = AmpelManager()
ampelNS = Ampel('rot')
ampelmanager.addAmpel(ampelNS)
ampelOW = Ampel('gruen')
ampelmanager.addAmpel(ampelOW)
ampelSN = Ampel('rot')
ampelmanager.addAmpel(ampelSN)
ampelWO = Ampel('gruen')
ampelmanager.addAmpel(ampelWO)
for ampel in ampelmanager.getListeAmpeln():
print(ampel.getLampen())
print()
for i in range(8):
ampelmanager.schalteAmpeln()
for ampel in ampelmanager.getListeAmpeln():
print(ampel.getLampen())
print()
Aufgabe 1
(a) Die Implementierung der Methode schalteAmpeln
der Klasse Ampelmanager
ist noch nicht ganz fertig. Ergänze die fehlenden Anweisungen und teste das gesamte Programm.
(b) Warum ist es bei dieser Modellierung besonders einfach, weitere Ampeln hinzuzufügen?