Aufgabe 1

Theorie Icon
Von Klassen zu Objekten - Python OOP

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
Aufgabe Icon
Erstellen einer einfachen Klasse.
Implementiere eine Klasse Zaehler, die
  • 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.
Aufgabe Icon
Erstellen von Objekten.
  1. Erzeuge drei Objekte der Klasse Zahler z1, z2 und z3.
  2. 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

Theorie Icon
Spezialisierung und Vererbung - Python OOP

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
Aufgabe Icon
Methode überschrieben.

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.

Aufgabe Icon
Mehrstufige Spezialisierung der Klasse Zaehler.

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.

Aufgabe Icon
Vorteile von Objekten.

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.
Aufgabe Icon
Vorteile der Vererbung erkennen.
Erstelle eine neue Liste.
  • 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

Nur für SE-GY!
Aufgabe Icon
Klassenzugehörigkeit

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.

Theorie Icon
Polymorphie - Python OOP

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.