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

Übungen

Aufgabe 1: Objekte erzeugen und benutzen

Das Verhalten einer Ampel lässt sich mit dem folgenden Zustandsdiagramm abstrahierend beschreiben.

zustandsdiagramm

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:

Klassendiagramm

(a) Mache dir zunächst klar, wie die Tag-Nacht-Ampel funktionieren soll.

(b) Entwickle eine passende Implementierung und teste sie.

X

Fehler melden

X

Suche