Verwendung einer Klasse

Ampel-Klasse als Baustein

Wir werden uns hier mit folgender Frage beschäftigen: Welche Information benötigt man über eine Klasse, um sie als Baustein zur Erzeugung und Aktivierung von Software-Objekten benutzen zu können?

Wir betrachten hierzu wiederum die Simulation realer Ampeln.

Ampelzustände

Gegeben ist eine Datei ampel.py, in der sich eine Implementierung einer Klasse Ampel befindet.

Aufgabe 1

(a) Ein Nutzer der Klasse Ampel hat das folgende Simulationsprogramm geschrieben:

from ampel import Ampel
a1 = Ampel('rot')
a2 = Ampel('gruen')
print('Ampel 1:', a1.getLampen())
print('Ampel 2:', a2.getLampen())
print()
while a1.getZustand() != 'gelb':
    a1.schalten()
    a2.schalten()
    print('Ampel 1:', a1.getLampen())
    print('Ampel 2:', a2.getLampen())
    print()

Was muss der Nutzer alles über die Klasse Ampel wissen, um ein solches Testprogramm schreiben zu können?

(b) Der Entwickler der Klasse Ampel veröffentlicht das folgende Klassendiagramm:

Klassendiagramm Ampel

Welche Informationen über die Klasse Ampel findet man hier? Welche zur Nutzung der Klasse benötigten Informationen sind hier nicht dokumentiert.

(c) Der Entwickler der Klasse Ampel legt eine Schnittstellenbeschreibung zur Klasse vor.

Welche Informationen kann ein Nutzer hieraus entnehmen? Muss ein Nutzer auch die Details der Implementierung kennen, um die Klasse nutzen zu können?

#-----------------------------------------------------------
# Ampel
#-----------------------------------------------------------

class Ampel(object):

    def __init__(self, anfangszustand):
        """nachher:
           Ein Objekt der Klasse Ampel ist erzeugt.
           Der Wert des Attributs zustand wird auf den übergebenen
           Parameter gesetzt.
        """

    def setZustand(self,z):
        """vorher:
           Der Wert des Attributs zustand beschreibt eine Ampelphase.
           nachher:
           Dem Attribut zustand ist der Wert des übergebenen Parameters
           z zugewiesen.
        """
        
    def getZustand(self):
        """Die Funktion ändert den Objektzustand nicht.
           Die Funktion liefert als Ergebnis den Wert von zustand zurück.
        """
        
    def schalten(self):
        """vorher:
           Der Wert des Attributs zustand beschreibt eine Ampelphase.
           nachher:
           Der Wert des Attributs zustand beschreibt die nächste Phase gemäß 
           des üblichen Ampelzyklus "rot -> rotgelb > gruen -> gelb -> rot".
        """
        
    def getLampen(self):
        """Die Funktion ändert den Objektzustand nicht.
           Die Funktion liefert als Ergebnis ein Tripel aus Wahrheitswerten,
           die den zur Phase passenden Lampenzustand in der Reihenfolge
           (Lampe-rot, Lampe-gelb, Lampe-grün) beschreibt.
        """
X

Fehler melden

X

Suche