Aufgabe 1
Falls die Übung innerhalb des Video-Inputs OOP nocht nicht implementiert worden ist, wird dies hier wiederholt. Sonst kann direkt zur Aufgabe 2 gwechselt werden.
Trainiert wird hier die Pythonsyntax von:- Klassen
- Objekten
- Methden
- Attributen
- ein Attribut aktueller_stand enthält
- eine Methode increment() besitzt, die den aktuellen Stand um 1 erhöht
- eine Methode decrement() besitzt, die den aktuellen Stand um 1 verringert und
- eine Methode ausgabe() besitzt, die den aktuellen Stand ausgibt.
- Erzeuge drei Objekte der Klasse Zahler z1, z2 und z3.
- Zum Testen: Rufen Sie die Funktionen der Objekte in unterschiedlicher Reihenfolge und Häufigkeit auf und lassen Sie sich die Zwischenstände der Zähler ausgeben.
Aufgabe 2
Ausgehend von dem Beispiel aus dem Video-Input spezialisieren wir jetzt die Zaehler, so dass die Unterklassen neue spezifische Eigenschaften und Verhaltensweisen bekommen.
Trainiert wird hier die Pythonsyntax von:- Vererbung
- Überlagern/Überschreiben
Spezialisiere nun aus der Klasse Zaehler die Unterklasse SchnellerZaehler. Wenn bei Objekten der Klassen SchnellerZahler die Funktion increment() aufgerufen wird, soll das Attribut aktueller_stand des Objekts um 5 erhöht werden.
Man braucht nun einen Zaehler der den aktueller_stand des Objektes wieder auf 0 setzen kann. Die anderen Klassen sollen diese Fähigkeit jedoch nicht besitzen. Die Klasse soll den Namen ResetZaehler erhalten und als Superklasse die Klasse SchnellerZaehler besitzen.
Kommentiere alle Testzeilen aus. Implementiere dann die folgende Aufgabenstellungen.
- Erstelle eine Liste
- Fülle die Liste mit 5 Objekten vom Typ Zaehler
- Implementiere eine Schleife, die bei allen Objekten in der Liste die Methode increment() aufruft.
- Implementiere eine Schleife, die die Summe des Attributs aktueller_stand aller Objekte in der Liste berechnet.
- Gebe die errechnete Summe auf dem Bildschirm aus.
- Fülle die Liste mit
- 1 Objekt vom Typ Zaehler,
- 1 Objekt vom Typ SchnellerZaehler und
- 1 Objekt vom Typ ResetZaehler.
- Implementiere eine Schleife, die zweimal durch die Liste geht und bei jedem Durchlauf die Methode increment() des aktuellen Objektes aufruft.
- Errechne die Summe der Liste und geben Sie diese aus.
Aufgabe 3
Mit der Funktion isinstance()
können Sie den Datentyp eines Objekts in Python abfragen. Zum Beispiel ergibt isinstance(z1, Zaehler)
aus dem Beispiel die Ausgabe true. Genauso können auch die Unterklassenzugehörigkeit abgefragt werden.
Nimm das Programm aus Aufgabe 2 und implementiere folgende Funktionalität:
- Eine Funktion generate_list(), die eine Liste von Zaehlern jedes Typs der Länge m erstellt
- Bei der Erstellung der Objekte soll die Funktion zufällig entscheiden, ob ein Objekt der Klasse Zaehler, ResetZaehler oder SchnellerZaehler erzeigt wird.
- Eine Funktion count_type(), die eine Liste bekommt und dann ausgibt, wie viele Elemente der verschiedenen Typen in der Liste enthalten sind.
- Rufe beide Funktionen mit passenden Attributen auf, um die Funktionsweise Ihrer Funktionen zu testen.
- Implementiere eine Schleife über die erstellte Liste, die die Methode zum zurücksetzen des Attributs aktueller_stand auf dem Attribut auslöst, wenn dieses vom Typ ResetZaehler ist und teste diese.