Zum Inhalt springen
Informatik · Klasse 12 · Objektorientierte Modellierung und Software-Engineering · 1. Halbjahr

Polymorphie und Schnittstellen

Die Schülerinnen und Schüler implementieren Polymorphie und nutzen Schnittstellen für flexible und erweiterbare Softwarearchitekturen.

KMK BildungsstandardsKMK: Sekundarstufe II - Modellieren und ImplementierenKMK: Sekundarstufe II - Problemlösen und Handeln

Über dieses Thema

Polymorphie und Schnittstellen sind zentrale Konzepte der objektorientierten Programmierung. Schülerinnen und Schüler lernen, wie Polymorphie durch Überschreiben von Methoden in abgeleiteten Klassen ermöglicht wird, sodass Objekte unterschiedlicher Klassen über eine gemeinsame Referenz behandelt werden können. Schnittstellen definieren hingegen Verträge mit abstrakten Methoden, die Klassen implementieren müssen, um lose gekoppelte und erweiterbare Architekturen zu schaffen. In der Praxis implementieren die Schüler Beispiele wie eine Tier-Hierarchie, in der verschiedene Tiere die Methode 'bewege()' polymorph ausführen.

Dieses Thema knüpft direkt an die KMK-Standards für Sekundarstufe II an: Modellieren und Implementieren sowie Problemlösen und Handeln. Es fördert das Verständnis, wie Polymorphie die Flexibilität und Wartbarkeit von Code steigert, etwa durch Erweiterung ohne Änderung bestehender Klassen. Schüler differenzieren abstrakte Klassen, die teilweise implementiert sein können, von Schnittstellen, die rein deklarativ sind. Solche Prinzipien bereiten auf reale Softwareentwicklung vor und stärken systematisches Denken.

Aktives Lernen eignet sich hervorragend für dieses Thema, da abstrakte Konzepte durch Pair-Programming, Refactoring-Aufgaben und kollaborative Erweiterung von Codebeispielen konkret werden. Schüler entdecken selbst die Vorteile, wenn sie polymorphe Systeme bauen und testen, was Motivation und tiefes Verständnis steigert.

Leitfragen

  1. Erklären Sie, wie Polymorphie die Flexibilität und Erweiterbarkeit von Code erhöht.
  2. Differentiieren Sie zwischen abstrakten Klassen und Schnittstellen in der Objektorientierung.
  3. Konstruieren Sie ein Szenario, in dem Polymorphie die Wartbarkeit des Codes verbessert.

Lernziele

  • Analysieren Sie die Auswirkungen von Polymorphie auf die Erweiterbarkeit von Softwarearchitekturen, indem Sie Codebeispiele modifizieren.
  • Vergleichen Sie die Implementierungsstrategien von abstrakten Klassen und Schnittstellen anhand konkreter Anwendungsfälle.
  • Entwerfen Sie eine einfache Klassenstruktur, die Polymorphie nutzt, um verschiedene Benutzeroberflächenelemente zu verwalten.
  • Bewerten Sie die Vorteile der Verwendung von Schnittstellen zur Erzielung loser Kopplung in einem gegebenen Software-Szenario.

Bevor es losgeht

Grundlagen der Objektorientierten Programmierung (Klasse 11)

Warum: Ein grundlegendes Verständnis von Klassen, Objekten, Vererbung und Methoden ist notwendig, um Polymorphie und Schnittstellen zu verstehen.

Klassen und Objekte

Warum: Schüler müssen wissen, wie man Klassen definiert, Objekte erstellt und auf deren Eigenschaften und Methoden zugreift, um diese Konzepte anzuwenden.

Schlüsselvokabular

PolymorphieDie Fähigkeit von Objekten, auf dieselbe Nachricht unterschiedlich zu reagieren, je nach ihrer spezifischen Klasse. Dies ermöglicht die Behandlung verschiedener Objekttypen über eine gemeinsame Schnittstelle.
Schnittstelle (Interface)Ein Vertrag, der eine Sammlung von Methodensignaturen definiert, die eine Klasse implementieren muss. Schnittstellen legen fest, was eine Klasse tun kann, aber nicht, wie sie es tut.
Abstrakte KlasseEine Klasse, die nicht direkt instanziiert werden kann und als Basisklasse für andere Klassen dient. Sie kann sowohl abstrakte Methoden (ohne Implementierung) als auch konkrete Methoden enthalten.
Methodenüberschreibung (Overriding)Die Implementierung einer Methode in einer abgeleiteten Klasse, die bereits in ihrer Oberklasse definiert ist. Dies ist ein Kernmechanismus der Polymorphie.
Lose KopplungEin Designprinzip, bei dem Komponenten eines Systems voneinander unabhängig sind. Änderungen in einer Komponente haben minimale Auswirkungen auf andere.

Vorsicht vor diesen Fehlvorstellungen

Häufige FehlvorstellungPolymorphie bedeutet nur Methodenüberladung.

Was Sie stattdessen lehren sollten

Polymorphie basiert auf Überschreibung und dynamischer Bindung, nicht Überladung. Pair-Programming-Aktivitäten helfen, da Schüler selbst testen und sehen, wie gleicher Methodenname unterschiedliches Verhalten erzeugt.

Häufige FehlvorstellungSchnittstellen sind wie normale Klassen.

Was Sie stattdessen lehren sollten

Schnittstellen enthalten keine Implementierungen (bis Java 8 teilweise), sie definieren Verträge. Kollaborative Refactoring-Aufgaben klären das, indem Gruppen fehlschlagende Implementierungen korrigieren und Vorteile der Lose Kopplung erleben.

Häufige FehlvorstellungAbstrakte Klassen können instanziiert werden.

Was Sie stattdessen lehren sollten

Abstrakte Klassen sind nicht instanziierbar, sie dienen als Basen. Individuelles Coding mit Fehlern und Korrektur durch Tests fördert Verständnis, da Schüler den Compiler-Fehler direkt bearbeiten.

Ideen für aktives Lernen

Alle Aktivitäten ansehen

Bezüge zur Lebenswelt

  • In der Spieleentwicklung nutzen Spiele-Engines wie Unity oder Unreal Engine Polymorphie, um verschiedene Charaktertypen (z. B. Spieler, NPCs, Gegner) mit gemeinsamen Aktionen wie 'angreifen' oder 'bewegen' zu steuern, ohne jeden Typ einzeln behandeln zu müssen.
  • Bei der Entwicklung von Benutzeroberflächen (UI) in Frameworks wie Swing (Java) oder Qt (C++) definieren Schnittstellen wie 'ActionListener' oder 'QWidget' Verhaltensweisen, die von verschiedenen UI-Elementen implementiert werden können, was eine flexible Ereignisbehandlung ermöglicht.

Ideen zur Lernstandserhebung

Lernstandskontrolle

Die Schüler erhalten ein Code-Snippet mit einer abstrakten Klasse und mehreren abgeleiteten Klassen. Sie sollen eine Methode überschreiben und erklären, wie Polymorphie hier angewendet wird, um eine Liste von Objekten der abgeleiteten Klassen zu verarbeiten.

Diskussionsfrage

Stellen Sie die Frage: 'Wann würden Sie eine abstrakte Klasse und wann eine Schnittstelle verwenden?' Lassen Sie die Schüler in Kleingruppen diskutieren und ihre Argumente anhand von Beispielen wie einem 'Tier'-Modell oder einem 'Formen'-Zeichenprogramm begründen.

Kurze Überprüfung

Zeigen Sie eine einfache Klassenhierarchie (z. B. Fahrzeug -> Auto, Fahrrad) und eine Liste von Methoden. Die Schüler sollen identifizieren, welche Methoden polymorph aufgerufen werden können und welche Schnittstelle oder abstrakte Klasse dafür notwendig wäre.

Häufig gestellte Fragen

Was ist der Unterschied zwischen abstrakter Klasse und Schnittstelle?
Abstrakte Klassen können konkrete Methoden und Felder enthalten, erlauben aber keine Instanziierung. Schnittstellen definieren nur Signaturen (bis Java 8 default-Methoden möglich) und ermöglichen Multiple Inheritance. In der Oberstufe nutzen Schüler beides für flexible Designs: abstrakte Klassen für gemeinsame Implementierung, Schnittstellen für Verträge. Das reduziert Kopplung in großen Projekten.
Wie verbessert Polymorphie die Wartbarkeit von Code?
Polymorphie erlaubt Änderungen in Unterklassen ohne Anpassung des aufrufenden Codes, dank dynamischer Bindung. Ein Szenario: In einem Spiel erweitern neue Feinde die 'angreife()'-Methode polymorph. Schüler konstruieren solche Fälle und sehen, wie OCP (Open-Closed Principle) eingehalten wird, was Bugfixes erleichtert.
Wie kann aktives Lernen Polymorphie und Schnittstellen vermitteln?
Pair-Programming und Gruppen-Refactoring machen Konzepte greifbar: Schüler implementieren Interfaces selbst, testen polymorph und erweitern Code. Solche Methoden fördern Trial-and-Error, Diskussion und Peer-Feedback, was abstrakte Ideen in funktionalen Erfolgen verankert. Die KMK-Standards zu Problemlösen werden so praxisnah erfüllt.
Beispiele für Polymorphie in der realen Softwareentwicklung?
In GUI-Frameworks wie Swing implementieren Komponenten Interfaces wie ActionListener polymorph. Collections in Java nutzen Iterable für einheitliche Iteration. Schüler modellieren Ähnliches, z. B. ein Fahrzeug-System, wo Autos und Fahrräder 'fahre()' polymorph ausführen, was Erweiterbarkeit demonstriert.

Planungsvorlagen für Informatik