Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Version 2

Steuerung vieler Ampeln

Wir betrachten weiterhin eine Straßenkreuzung mit vier Ampeln.

Ampelsystem

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.

Objektdiagramm

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?

X

Fehler melden

X

Suche