Skip to content
Objektorientierte Modellierung · 1. Halbjahr

Vererbung und Polymorphie

Effiziente Code-Wiederverwendung und flexible Schnittstellengestaltung durch Klassenhierarchien.

Brauchen Sie einen Unterrichtsplan für Informatik in der Oberstufe: Algorithmen, Daten und Gesellschaft?

Mission erstellen

Leitfragen

  1. Wie können wir allgemeine Verhaltensweisen definieren, die für viele Spezialfälle gelten?
  2. Welche Risiken entstehen durch zu tiefe Vererbungshierarchien?
  3. Wie ermöglicht Polymorphie die Erweiterbarkeit von Software ohne Änderung des bestehenden Codes?

KMK Bildungsstandards

KMK: Sekundarstufe II - ImplementierenKMK: Sekundarstufe II - Modellieren
Klasse: Klasse 11
Fach: Informatik in der Oberstufe: Algorithmen, Daten und Gesellschaft
Einheit: Objektorientierte Modellierung
Zeitraum: 1. Halbjahr

Über dieses Thema

Vererbung und Polymorphie sind zentrale Konzepte der objektorientierten Programmierung, die effiziente Code-Wiederverwendung und flexible Schnittstellengestaltung ermöglichen. Schüler der Klasse 11 modellieren Klassenhierarchien, in denen Superklassen gemeinsame Eigenschaften und Methoden definieren, die Subklassen erben und bei Bedarf überschreiben. Dies entspricht den KMK-Standards für Modellieren und Implementieren in der Sekundarstufe II und beantwortet Fragen wie: Wie definieren wir allgemeine Verhaltensweisen für Spezialfälle?

Polymorphie erlaubt die Behandlung von Subklassen-Objekten über Referenzen der Superklasse, was Erweiterbarkeit ohne Code-Änderungen gewährleistet. Schüler erkunden Risiken tiefer Hierarchien, etwa erhöhte Abhängigkeiten und Wartungsschwierigkeiten, und lernen, wann Vererbung sinnvoll ist. Diese Inhalte fördern systematisches Denken in der Softwareentwicklung und verbinden Theorie mit Praxis.

Aktives Lernen eignet sich hervorragend für dieses Thema, da Schüler durch iteratives Programmieren und kollaboratives Refactoring abstrakte Konzepte konkret erleben. Pair Programming macht Hierarchien greifbar, Fehlersuche fördert Verständnis von Polymorphie, und Gruppendiskussionen zu Risiken vertiefen kritisches Denken. Solche Ansätze machen Lektionen dynamisch und nachhaltig wirksam.

Lernziele

  • Klassifizieren Sie verschiedene Arten von Vererbung (einfach, mehrfach) und erklären Sie deren Anwendungsfälle in der Softwareentwicklung.
  • Analysieren Sie bestehende Klassenhierarchien auf potenzielle Probleme wie Kopplung und Wartbarkeit und schlagen Sie Verbesserungen vor.
  • Entwerfen Sie eine einfache Klassenhierarchie für ein gegebenes Problem, die Vererbung und Polymorphie effektiv nutzt.
  • Demonstrieren Sie die Funktionsweise von Polymorphie anhand eines konkreten Codebeispiels, das die Behandlung von Objekten unterschiedlicher Klassen über eine gemeinsame Schnittstelle zeigt.
  • Bewerten Sie die Vor- und Nachteile der Verwendung von Vererbung im Vergleich zu Komposition für die Code-Wiederverwendung.

Bevor es losgeht

Grundlagen der Objektorientierten Programmierung

Warum: Schüler müssen die Konzepte von Klassen, Objekten, Attributen und Methoden verstehen, um Vererbung und Polymorphie anwenden zu können.

Methoden und ihre Signaturen

Warum: Das Verständnis von Methoden und wie sie aufgerufen werden, ist essentiell, um das Konzept des Überschreibens und der polymorphen Aufrufe zu begreifen.

Schlüsselvokabular

Basisklasse (Superklasse)Eine Klasse, von der andere Klassen Eigenschaften und Methoden erben können. Sie definiert allgemeine Merkmale.
Abgeleitete Klasse (Subklasse)Eine Klasse, die Eigenschaften und Methoden von einer Basisklasse erbt. Sie kann diese erweitern oder überschreiben.
Überschreiben (Overriding)Wenn eine abgeleitete Klasse eine Methode der Basisklasse mit einer spezifischen Implementierung für sich selbst neu definiert.
Polymorphie (Vielgestaltigkeit)Die Fähigkeit, Objekte unterschiedlicher Klassen, die von einer gemeinsamen Basisklasse abgeleitet sind, über eine gemeinsame Schnittstelle anzusprechen.
Is-a-BeziehungEine Beziehung, die durch Vererbung modelliert wird, bei der eine Subklasse eine spezialisierte Form der Superklasse ist (z.B. 'Ein Hund ist ein Säugetier').

Ideen für aktives Lernen

Alle Aktivitäten ansehen

Bezüge zur Lebenswelt

Softwareentwickler bei Spielefirmen nutzen Vererbung, um Charaktertypen (z.B. Krieger, Magier) von einer allgemeinen 'Charakter'-Klasse abzuleiten, was die Wiederverwendung von Code für gemeinsame Aktionen wie Bewegung oder Lebenspunkte ermöglicht.

Bei der Entwicklung von Benutzeroberflächen in Frameworks wie Qt oder GTK+ werden GUI-Elemente (Buttons, Textfelder) oft über Vererbung von einer Basisklasse 'Widget' modelliert. Polymorphie erlaubt es dann, eine Liste von Widgets zu durchlaufen und auf jedes Element auf eine einheitliche Weise zu reagieren, z.B. durch Aufruf einer 'draw()'-Methode.

Automobilhersteller wie Volkswagen verwenden Klassenhierarchien zur Modellierung von Fahrzeugen. Eine Basisklasse 'Fahrzeug' könnte gemeinsame Attribute wie 'Geschwindigkeit' oder Methoden wie 'starten()' definieren, während abgeleitete Klassen wie 'Auto', 'LKW' oder 'Motorrad' spezifische Eigenschaften und Verhaltensweisen hinzufügen.

Vorsicht vor diesen Fehlvorstellungen

Häufige FehlvorstellungVererbung ist immer besser als Komposition.

Was Sie stattdessen lehren sollten

Viele Schüler wählen Vererbung für lose Beziehungen, was zu starren Hierarchien führt. Aktive Übungen wie Refactoring in Pairs zeigen, dass Komposition flexibler ist. Gruppendiskussionen klären, wann 'ist-ein'-Beziehungen passen.

Häufige FehlvorstellungPolymorphie erfordert identische Methoden in allen Subklassen.

Was Sie stattdessen lehren sollten

Schüler denken oft, Überschreibungen müssen gleich wirken. Durch polymorphen Code-Aufruf in Small Groups erleben sie unterschiedliche Implementierungen. Peer-Review hilft, Vielfalt zu verstehen.

Häufige FehlvorstellungTiefe Hierarchien machen Code wiederverwendbarer.

Was Sie stattdessen lehren sollten

Tiefe führt zu Abhängigkeiten. Whole-Class-Debatten zu Beispielen enthüllen Risiken. Schüler modellieren Alternativen und testen Stabilität.

Ideen zur Lernstandserhebung

Lernstandskontrolle

Die Schüler erhalten die Aufgabe, ein einfaches Szenario (z.B. verschiedene Tierarten) zu beschreiben und eine Klassenhierarchie mit mindestens zwei Ebenen zu skizzieren. Sie sollen angeben, welche Klasse die Basisklasse ist und welche Methoden überschrieben werden könnten.

Kurze Überprüfung

Der Lehrer präsentiert ein kurzes Code-Snippet, das Polymorphie demonstriert (z.B. eine Liste von 'Tier'-Objekten, die 'lautgeben()' aufrufen). Die Schüler sollen erklären, was auf der Konsole ausgegeben wird und warum. Fragen: Welche Methoden werden tatsächlich aufgerufen? Warum ist das Polymorphie?

Diskussionsfrage

Diskutieren Sie in Kleingruppen: 'Welche Nachteile kann es haben, wenn eine Klassenhierarchie sehr tief ist (mehr als 3-4 Ebenen)?' Sammeln Sie die Ergebnisse und diskutieren Sie sie im Plenum, um Risiken wie hohe Kopplung und schwierige Wartung zu identifizieren.

Bereit, dieses Thema zu unterrichten?

Erstellen Sie in Sekundenschnelle eine vollständige, unterrichtsfertige Mission für aktives Lernen.

Eigene Mission generieren

Häufig gestellte Fragen

Was ist Vererbung in der objektorientierten Programmierung?
Vererbung ermöglicht es, Eigenschaften und Methoden einer Superklasse an Subklassen weiterzugeben. Subklassen erben Code und können ihn erweitern oder überschreiben. Dies reduziert Redundanz und fördert Wiederverwendung, wie in Hierarchien von Fahrzeugen: Auto als Superklasse, Sportwagen als Subklasse. Praktische Implementierung in Java oder Python vertieft das Verständnis.
Wie funktioniert Polymorphie genau?
Polymorphie erlaubt, Objekte verschiedener Subklassen über eine Superklassen-Referenz zu behandeln. Methodenaufrufe rufen die passende Subklassen-Implementierung auf. Beispiel: Eine Liste von Formen berechnet Flächen polymorph. Das macht Code erweiterbar, ohne bestehende Klassen zu ändern, und ist essenziell für flexible Designs.
Wie hilft aktives Lernen beim Verständnis von Vererbung und Polymorphie?
Aktives Lernen wie Pair Programming lässt Schüler Hierarchien iterativ bauen und testen, was abstrakte Konzepte konkret macht. Small-Group-Übungen zu Polymorphie-Demos zeigen Laufzeitverhalten live. Debatten zu Risiken fördern kritisches Denken. Solche Methoden erhöhen Retention, da Schüler eigene Fehler erleben und korrigieren, statt nur Theorie zu hören.
Welche Risiken birgt eine zu tiefe Vererbungshierarchie?
Tiefe Hierarchien erhöhen Abhängigkeiten: Änderungen in Superklassen brechen Subklassen. Wartung wird komplex, und 'fragile Base Class'-Probleme treten auf. Besser: Flache Hierarchien oder Komposition nutzen. Schüler lernen dies durch Modellierung und Testen, um robuste Designs zu schaffen.