Lektion 10 von 12

Klassen-Basics (OOP)

Objektorientierung verständlich: Klassen, Objekte, Attribute, Methoden und Vererbung in Python, mit Bezug zum UML-Klassendiagramm der IHK-Prüfung.

  • Etwa 25 Minuten
  • 2 Übungen mit Lösung
  • Läuft im Browser

Klassen und Objekte

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.

azubi.py

Tab rückt ein. Esc, dann Tab verlässt den Editor. Strg + Enter führt aus.

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.

Vererbung

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:

vererbung.py

Tab rückt ein. Esc, dann Tab verlässt den Editor. Strg + Enter führt aus.

Übungen

Erst selbst versuchen, dann die Lösung aufklappen.

Ü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.

uebung_10_1.py

Tab rückt ein. Esc, dann Tab verlässt den Editor. Strg + Enter führt aus.

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.

uebung_10_2.py

Tab rückt ein. Esc, dann Tab verlässt den Editor. Strg + Enter führt aus.

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