Aufgaben-Python/lehrpfad_3_fortgeschrittenes_oop/10_vererbung_und_super
Alex Mueller 2571cb8847 feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide
- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel)
- Kurswechsler Dropdown mit Direktnavigation
- Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage
- Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets
- Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor
- Saubere Bereinigung redundanter statischer Legacy-Sidebars
2026-09-12 13:49:46 +02:00
..
aufgabe.py Vollständige Implementierung aller 5 Phasen: Subgoal Labeling, Parsons Puzzles, In-Browser Runner, Notional Machine & Zertifikate 2026-08-29 15:41:30 +02:00
index.html feat(ux): responsive kurs-sidebar und kapitel-drawer für alle 13 kurse & web-ide 2026-09-12 13:49:46 +02:00
musterloesung.py Restrukturiere Verzeichnisstruktur in 3 saubere Lehrpfad-Ordner (lehrpfad_1_grundlagen, lehrpfad_2_oop_einstieg, lehrpfad_3_fortgeschrittenes_oop) 2026-08-29 15:07:16 +02:00
README.md Restrukturiere Verzeichnisstruktur in 3 saubere Lehrpfad-Ordner (lehrpfad_1_grundlagen, lehrpfad_2_oop_einstieg, lehrpfad_3_fortgeschrittenes_oop) 2026-08-29 15:07:16 +02:00
test_aufgabe.py Restrukturiere Verzeichnisstruktur in 3 saubere Lehrpfad-Ordner (lehrpfad_1_grundlagen, lehrpfad_2_oop_einstieg, lehrpfad_3_fortgeschrittenes_oop) 2026-08-29 15:07:16 +02:00

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

  1. Was ist Vererbung?
    • Basisklasse (Elternklasse / Superklasse) vs. abgeleitete Klasse (Kindklasse / Subklasse).
    • "Ist-ein"-Beziehung: Ein Auto ist ein Fahrzeug. Ein ElektroAuto ist ein Auto.
  2. 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 Basisklasse Fahrzeug geschrieben werden.
  3. Syntax in Python:
    class KindKlasse(ElternKlasse):
        pass
    
  4. Der Konstruktor der Elternklasse: super().__init__():
    • Mit super().__init__(...) delegierst du die Initialisierung der geerbten Attribute an die Elternklasse.
  5. Methoden erweitern & überschreiben (Method Overriding):
    • Eine Kindklasse kann Methoden der Elternklasse neu definieren oder mit super().methode() erweitern.
  6. Typ-Prüfung:
    • isinstance(mein_auto, Fahrzeug) → True
    • issubclass(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 Klassen Fahrzeug, Auto, ElektroAuto und Lkw.
  • 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