| .. | ||
| aufgabe.py | ||
| index.html | ||
| musterloesung.py | ||
| README.md | ||
| test_aufgabe.py | ||
Kapitel 10: Vererbung (Inheritance) & super() 🧬🚗
Willkommen zu Kapitel 10! In diesem Kapitel lernst du eines der mächtigsten Konzepte der Objektorientierten Programmierung kennen: Vererbung.
🎯 Was du lernst
- Was ist Vererbung?
- Basisklasse (Elternklasse / Superklasse) vs. abgeleitete Klasse (Kindklasse / Subklasse).
- "Ist-ein"-Beziehung: Ein
Autoist einFahrzeug. EinElektroAutoist einAuto.
- Das DRY-Prinzip (Don't Repeat Yourself):
- Gemeinsame Attribute (
marke,modell,baujahr,grundpreis,kilometerstand) und Methoden (fahren(),berechne_restwert()) müssen nur einmal in der BasisklasseFahrzeuggeschrieben werden.
- Gemeinsame Attribute (
- Syntax in Python:
class KindKlasse(ElternKlasse): pass - Der Konstruktor der Elternklasse:
super().__init__():- Mit
super().__init__(...)delegierst du die Initialisierung der geerbten Attribute an die Elternklasse.
- Mit
- Methoden erweitern & überschreiben (Method Overriding):
- Eine Kindklasse kann Methoden der Elternklasse neu definieren oder mit
super().methode()erweitern.
- Eine Kindklasse kann Methoden der Elternklasse neu definieren oder mit
- Typ-Prüfung:
isinstance(mein_auto, Fahrzeug)→Trueissubclass(ElektroAuto, Fahrzeug)→True
📊 UML-Klassendiagramm
┌───────────────────────────────────────────────┐
│ Fahrzeug │
├───────────────────────────────────────────────┤
│ - marke: str │
│ - modell: str │
│ - baujahr: int │
│ - grundpreis: float │
│ - kilometerstand: float │
├───────────────────────────────────────────────┤
│ + __init__(marke, modell, baujahr, grundpreis)│
│ + fahren(km: float) -> None │
│ + berechne_restwert(aktuelles_jahr) -> float │
│ + info() -> str │
└───────────────────────▲───────────────────────┘
│
┌───────────────┴───────────────┐
│ │
┌───────────┴───────────────┐ ┌───────────┴───────────────┐
│ Auto │ │ Lkw │
├───────────────────────────┤ ├───────────────────────────┤
│ - sitzplaetze: int │ │ - max_zuladung_kg: float │
│ - anzahl_tueren: int │ │ - aktuelle_ladung_kg: floa│
├───────────────────────────┤ ├───────────────────────────┤
│ + __init__(..., sitze, ...)│ │ + __init__(..., max_ladung)│
│ + hupen() -> str │ │ + beladen(kg) -> bool │
│ + info() -> str │ │ + entladen(kg) -> float │
└───────────▲───────────────┘ │ + info() -> str │
│ └───────────────────────────┘
┌───────────┴───────────────┐
│ ElektroAuto │
├───────────────────────────┤
│ - batterie_kapazitaet_kwh │
│ - batterie_ladestand_kwh │
│ - verbrauch_pro_100km │
├───────────────────────────┤
│ + reichweite() -> float │
│ + fahren(km) -> bool │
│ + aufladen(kwh) -> float │
│ + info() -> str │
└───────────────────────────┘
📁 Die Dateien in diesem Ordner
index.html: Die interaktive Lernseite mit visuellen Erklärungen, Analogien, Diagrammen und Lösungstipps.aufgabe.py: Dein Arbeitsblatt mit den KlassenFahrzeug,Auto,ElektroAutoundLkw.test_aufgabe.py: Automatische Tests (python3 test_aufgabe.py).musterloesung.py: Vollständig ausprogrammierte Beispiellösung.
🚀 Schnellstart
# 1. Bearbeite aufgabe.py
# 2. Teste deine Lösung:
python3 test_aufgabe.py