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?
Leitfragen
- Wie können wir allgemeine Verhaltensweisen definieren, die für viele Spezialfälle gelten?
- Welche Risiken entstehen durch zu tiefe Vererbungshierarchien?
- Wie ermöglicht Polymorphie die Erweiterbarkeit von Software ohne Änderung des bestehenden Codes?
KMK Bildungsstandards
Ü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
Warum: Schüler müssen die Konzepte von Klassen, Objekten, Attributen und Methoden verstehen, um Vererbung und Polymorphie anwenden zu können.
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-Beziehung | Eine 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 ansehenPair Programming: Tierhierarchie aufbauen
Paare erstellen eine Superklasse 'Tier' mit Methoden wie 'bewegen()' und 'machenGeräusch()'. Sie erweitern sie um Subklassen 'Hund' und 'Katze', die Methoden überschreiben. Testen Sie polymorph mit einer Liste von Tieren.
Small Groups: Formen-Polymorphie simulieren
Gruppen definieren eine 'Form'-Superklasse mit 'flaecheBerechnen()'. Subklassen 'Kreis' und 'Rechteck' implementieren spezifische Berechnungen. Sammeln Sie Formen in einer Liste und rufen polymorph auf.
Whole Class: Hierarchie-Risiken debattieren
Präsentieren Sie eine tiefe Hierarchie. Die Klasse diskutiert in Plenum Vor- und Nachteile, identifiziert Fragilitäten und schlägt Alternativen wie Komposition vor.
Individual: Code refactoren
Schüler erhalten flachen Code und bauen eine Vererbungshierarchie um. Sie testen Polymorphie und dokumentieren Verbesserungen.
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
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.
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?
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.
Vorgeschlagene Methoden
Bereit, dieses Thema zu unterrichten?
Erstellen Sie in Sekundenschnelle eine vollständige, unterrichtsfertige Mission für aktives Lernen.
Eigene Mission generierenHäufig gestellte Fragen
Was ist Vererbung in der objektorientierten Programmierung?
Wie funktioniert Polymorphie genau?
Wie hilft aktives Lernen beim Verständnis von Vererbung und Polymorphie?
Welche Risiken birgt eine zu tiefe Vererbungshierarchie?
Planungsvorlagen für Informatik in der Oberstufe: Algorithmen, Daten und Gesellschaft
Mehr in Objektorientierte Modellierung
Klassen und Objekte
Unterscheidung zwischen dem Bauplan (Klasse) und der konkreten Ausprägung (Instanz).
2 methodologies
Attribute und Methoden
Die Schülerinnen und Schüler definieren Eigenschaften und Verhaltensweisen von Objekten.
2 methodologies
Konstruktoren und Destruktoren
Die Schülerinnen und Schüler lernen, wie Objekte initialisiert und Ressourcen freigegeben werden.
2 methodologies
Beziehungen zwischen Objekten: Assoziation
Modellierung von Interaktionen durch Assoziation und Komposition.
2 methodologies
Beziehungen zwischen Objekten: Aggregation und Komposition
Vertiefung der Modellierung von Teil-Ganzes-Beziehungen.
2 methodologies