Lektion 10: Klassen-Basics (OOP)

Jetzt kommt das Thema, das in der IHK-Prüfung am häufigsten drankommt: Objektorientierung. Die Idee: Statt Daten (Variablen) und Verhalten (Funktionen) getrennt zu halten, packst du beides zusammen in eine Klasse. Eine Klasse ist der Bauplan, ein Objekt ist ein konkretes Exemplar davon.

Python-Editor

Die Bausteine im Einzelnen: __init__ ist der Konstruktor, er läuft automatisch beim Erzeugen des Objekts und füllt die Attribute (self.name, self.jahr). self ist das Objekt selbst, darüber greifen Methoden (Funktionen in der Klasse) auf die eigenen Attribute zu.

Brücke zur IHK: Das hier ist exakt das, was im UML-Klassendiagramm steht. Oben der Klassenname (Azubi), in der Mitte die Attribute (name, jahr), unten die Methoden (vorstellen()). Wenn du eine Klasse in Python schreiben kannst, kannst du auch das Diagramm dazu zeichnen, und umgekehrt.

Das zweite große OOP-Konzept ist Vererbung: Eine Klasse übernimmt alles von einer anderen und ergänzt oder ändert nur, was anders ist. Die "ist-ein"-Beziehung aus dem UML-Diagramm:

Python-Editor

Übung 10.1: Schreib eine Klasse Rechteck mit den Attributen breite und hoehe und einer Methode flaeche(), die die Fläche zurückgibt. Erzeuge zwei Rechtecke und gib ihre Flächen aus.

Python-Editor
Musterlösung anzeigen
class Rechteck:
    def __init__(self, breite, hoehe):
        self.breite = breite
        self.hoehe = hoehe

    def flaeche(self):
        return self.breite * self.hoehe

r1 = Rechteck(4, 5)
r2 = Rechteck(10, 3)
print(r1.flaeche())   # 20
print(r2.flaeche())   # 30

Übung 10.2: Erweitere die Azubi-Klasse um eine Methode geburtstag(), die das Lehrjahr um 1 erhöht (okay, fachlich eher "neues Ausbildungsjahr", aber du verstehst das Prinzip). Rufe sie auf und lass das Objekt sich davor und danach vorstellen.

Python-Editor
Musterlösung anzeigen
    def geburtstag(self):
        self.jahr = self.jahr + 1

# Und unten:
a = Azubi("Alex", 1)
a.vorstellen()
a.geburtstag()
a.vorstellen()   # jetzt 2. Lehrjahr