Zum Inhalt springen
Informatik · Klasse 10 · Objektorientierte Modellierung und Programmierung · 1. Halbjahr

Polymorphie: Vielfalt nutzen

Die Schülerinnen und Schüler nutzen Polymorphie, um mit Objekten unterschiedlicher Typen über eine gemeinsame Schnittstelle zu interagieren.

KMK BildungsstandardsKMK: STD.01KMK: STD.03

Über dieses Thema

Polymorphie erlaubt es, Objekte unterschiedlicher Klassen über eine gemeinsame Schnittstelle oder Oberklasse zu behandeln. Schülerinnen und Schüler in Klasse 10 lernen, wie Überschreiben von Methoden in Unterklassen funktioniert und die dynamische Bindung zur Laufzeit den passenden Aufruf wählt. Dies schafft Code, der flexibel auf neue Typen reagiert, ohne bestehende Logik zu ändern.

In der Einheit 'Objektorientierte Modellierung und Programmierung' greift das Thema die KMK-Standards STD.01 (Algorithmen entwickeln und testen) und STD.03 (Datenmodelle nutzen) auf. Schüler beantworten Fragen wie: Wie gehen Programme mit verschiedenen Objekttypen um? Warum macht Polymorphie Software erweiterbar? Sie analysieren Beispiele mit Vererbung oder Interfaces und testen Laufzeitverhalten.

Aktives Lernen eignet sich hervorragend, weil Schüler durch Pair Programming und schrittweises Erweitern von Klassen-Hierarchien sofort sehen, wie Polymorphie Vielfalt nutzt. Experimente mit Tieren oder Formen, die unterschiedlich 'zeichnen' oder 'laufen', machen abstrakte Konzepte greifbar und fördern Debugging-Fähigkeiten.

Leitfragen

  1. Wie können wir Programme so schreiben, dass sie mit verschiedenen Objekttypen gleichzeitig umgehen können?
  2. Warum ist Polymorphie ein Schlüsselkonzept für flexible und erweiterbare Software?
  3. Analysieren Sie, wie dynamische Bindung die Laufzeitentscheidung über Methodenaufrufe ermöglicht.

Lernziele

  • Erklären Sie, wie Polymorphie die Behandlung verschiedener Objekttypen über eine gemeinsame Schnittstelle ermöglicht.
  • Analysieren Sie Codebeispiele, um zu identifizieren, wie dynamische Bindung die Auswahl der korrekten Methode zur Laufzeit bestimmt.
  • Entwerfen Sie eine einfache Klassenstruktur, die Polymorphie nutzt, um auf unterschiedliche Objekte (z.B. verschiedene Tierarten) mit einer gemeinsamen Aktion (z.B. 'laut geben') zu reagieren.
  • Vergleichen Sie die Vorteile von Polymorphie gegenüber einer starren, typgebundenen Programmierung hinsichtlich Erweiterbarkeit und Wartbarkeit.

Bevor es losgeht

Klassen und Objekte

Warum: Das Verständnis von Klassen als Baupläne und Objekten als Instanzen ist grundlegend für das Konzept der Polymorphie, bei der Objekte unterschiedlicher Klassen behandelt werden.

Methoden und ihre Aufrufe

Warum: Schüler müssen wissen, wie Methoden definiert und aufgerufen werden, um zu verstehen, wie polymorphe Aufrufe funktionieren und wie Überschreibung die Auswahl beeinflusst.

Vererbung

Warum: Polymorphie baut oft auf Vererbung auf, da abgeleitete Klassen die Methoden ihrer Basisklassen überschreiben können, was für polymorphes Verhalten entscheidend ist.

Schlüsselvokabular

PolymorphieDie Fähigkeit von Objekten unterschiedlicher Klassen, auf dieselbe Nachricht (Methodenaufruf) auf ihre eigene, spezifische Weise zu reagieren.
Schnittstelle (Interface)Ein Vertrag, der eine Sammlung von Methodensignaturen definiert, die eine Klasse implementieren muss. Sie legt fest, was ein Objekt tun kann, ohne zu spezifizieren, wie es dies tut.
Abstrakte KlasseEine Klasse, die nicht direkt instanziiert werden kann und oft Methoden enthält, die von abgeleiteten Klassen implementiert werden müssen.
Dynamische Bindung (Späte Bindung)Der Prozess, bei dem zur Laufzeit entschieden wird, welche konkrete Methode basierend auf dem tatsächlichen Objekttyp aufgerufen wird, nicht auf dem Typ der Variablen, die auf das Objekt verweist.
Methodenüberschreibung (Overriding)Wenn eine abgeleitete Klasse eine Methode mit derselben Signatur wie eine Methode in ihrer Oberklasse bereitstellt und implementiert.

Vorsicht vor diesen Fehlvorstellungen

Häufige FehlvorstellungPolymorphie macht alle Objekte identisch.

Was Sie stattdessen lehren sollten

Nein, jedes Objekt behält seine spezifischen Implementierungen. Aktive Übungen wie Listen mit gemischten Typen zeigen, wie dynamische Bindung die richtige Methode wählt. Peer-Reviews helfen, Unterschiede zu entdecken.

Häufige FehlvorstellungBindung erfolgt immer zur Kompilierzeit.

Was Sie stattdessen lehren sollten

Dynamische Bindung entscheidet zur Laufzeit basierend auf dem Objekttyp. Hands-on-Tests mit Überschreibungen klären den Unterschied zu statischer Bindung. Debugging-Sessions machen den Mechanismus erlebbar.

Häufige FehlvorstellungPolymorphie braucht immer Vererbung.

Was Sie stattdessen lehren sollten

Interfaces reichen aus für polymorphen Code. Gruppenarbeit mit Interface-Implementierungen verdeutlicht diese Flexibilität und vermeidet Vererbungsfehler durch Experimente.

Ideen für aktives Lernen

Alle Aktivitäten ansehen

Bezüge zur Lebenswelt

  • In der Spieleentwicklung ermöglicht Polymorphie, dass verschiedene Gegnertypen (z.B. Monster, Roboter) auf einen allgemeinen 'Angriff'-Befehl reagieren, indem sie spezifische Angriffsanimationen und -effekte ausführen.
  • Softwareentwickler bei Automobilherstellern nutzen Polymorphie, um unterschiedliche Fahrzeugmodelle (z.B. Elektroauto, Benziner) über eine gemeinsame 'Fahren'-Schnittstelle anzusprechen, wobei jedes Modell seine spezifische Motorsteuerung verwendet.
  • Grafikbibliotheken wie Java 2D oder .NET's GDI+ verwenden Polymorphie, um verschiedene Formen (Kreise, Rechtecke, Linien) über eine gemeinsame 'Zeichnen'-Methode darzustellen, die dann die spezifische Implementierung für jede Form aufruft.

Ideen zur Lernstandserhebung

Lernstandskontrolle

Geben Sie den Schülern ein kleines Code-Snippet, das Polymorphie nutzt (z.B. eine Liste von 'Tier'-Objekten, die alle 'laut geben'). Fragen Sie: 'Welche Ausgabe erwarten Sie, wenn dieses Programm ausgeführt wird, und warum?' und 'Nennen Sie eine andere Klasse, die Sie hinzufügen könnten, ohne die Hauptlogik zu ändern.'

Kurze Überprüfung

Stellen Sie den Schülern die Frage: 'Erklären Sie in eigenen Worten, warum die dynamische Bindung wichtig ist, damit Polymorphie funktioniert. Geben Sie ein Beispiel, wo dies nützlich wäre.' Bewerten Sie die Antworten auf Klarheit und Korrektheit des Verständnisses der Laufzeitentscheidung.

Diskussionsfrage

Leiten Sie eine Diskussion mit der Frage: 'Stellen Sie sich vor, Sie entwickeln eine Software für ein Museum, die verschiedene Kunstwerke (Gemälde, Skulpturen) katalogisieren soll. Wie könnte Polymorphie Ihnen helfen, diese unterschiedlichen Objekte einheitlich zu verwalten, auch wenn neue Kunstformen hinzukommen?'

Häufig gestellte Fragen

Was ist Polymorphie in der Informatik?
Polymorphie bedeutet 'vielgestaltig' und erlaubt, Objekte verschiedener Klassen einheitlich zu behandeln. Über Oberklassen oder Interfaces rufen Programme Methoden auf, die zur Laufzeit dynamisch gebunden werden. Das macht Code wartbar und erweiterbar, wie in Tier- oder Form-Beispielen. Schüler testen dies praxisnah in Java oder Python.
Wie implementiert man Polymorphie in Programmen?
Definieren Sie eine Oberklasse oder ein Interface mit abstrakten Methoden. Unterklassen überschreiben diese. Speichern Sie Objekte in einer Liste der Oberklasse und rufen Sie Methoden polymorph auf. Testen Sie mit Schleifen: for (Tier t : tiere) t.bewegen(); Dynamische Bindung wählt die passende Version.
Wie hilft aktives Lernen bei Polymorphie?
Aktives Lernen macht Polymorphie greifbar durch Pair Programming und iterative Code-Tests. Schüler erweitern Hierarchien schrittweise, beobachten Laufzeitverhalten und debuggen direkt. Kollaborative Simulationen wie Fahrzeugflotten fördern Systemdenken und zeigen Erweiterbarkeit. Das reduziert abstrakte Missverständnisse und steigert Motivation.
Warum ist Polymorphie für flexible Software wichtig?
Polymorphie trennt Schnittstelle von Implementierung, sodass neue Klassen ohne Code-Änderungen hinzugefügt werden können. Das folgt dem Open-Closed-Prinzip: offen für Erweiterung, geschlossen für Modifikation. In Projekten testen Schüler, wie polymorpher Code reale Szenarien wie Spiele oder Apps skalierbar macht.

Planungsvorlagen für Informatik