Vererbung: Hierarchien bilden
Die Schülerinnen und Schüler wenden das Prinzip der Vererbung an, um Klassenhierarchien zu erstellen und Code-Duplizierung zu vermeiden.
Über dieses Thema
In diesem Thema lernen Schülerinnen und Schüler, wie Vererbung in der objektorientierten Programmierung Klassenhierarchien schafft und Code-Duplizierung vermeidet. Eine 'ist-ein'-Beziehung ist architektonisch sinnvoll, wenn eine Unterklasse alle Eigenschaften und Verhaltensweisen einer Oberklasse erbt, wie bei Fahrzeugen, wo ein Auto ein Fahrzeug ist. Gemeinsame Merkmale wie Farbe oder Geschwindigkeit werden in der Oberklasse gebündelt, was den Code wartbarer macht.
Zu tiefe Hierarchien bergen Risiken wie Komplexität und starre Strukturen, die Erweiterungen erschweren. Schüler analysieren, wann Vererbung passt und üben, Hierarchien zu modellieren und zu implementieren. Dies stärkt das Verständnis für saubere Softwarearchitektur gemäß KMK-Standards STD.01 und STD.03.
Aktives Lernen fördert hier das tiefe Begreifen, da Schüler selbst Hierarchien bauen und testen, was abstrakte Konzepte greifbar macht und langfristig bessere Programmierfähigkeiten schafft.
Leitfragen
- Wann ist eine 'ist-ein'-Beziehung zwischen Klassen architektonisch sinnvoll?
- Wie können wir gemeinsame Eigenschaften und Verhaltensweisen in einer Oberklasse zusammenfassen?
- Welche Risiken entstehen durch zu tiefe Vererbungshierarchien?
Lernziele
- Klassifizieren Sie verschiedene Objekte als Instanzen einer Oberklasse basierend auf gemeinsamen Merkmalen und Verhaltensweisen.
- Analysieren Sie bestehenden Code, um redundante Abschnitte zu identifizieren, die durch Vererbung refaktorisiert werden können.
- Entwerfen Sie eine einfache Klassenhierarchie für eine gegebene Problemstellung unter Anwendung des Vererbungsprinzips.
- Erklären Sie die 'ist-ein'-Beziehung und ihre Bedeutung für die Erstellung von Klassenhierarchien.
- Bewerten Sie die Angemessenheit der Vererbung für eine spezifische Modellierungssituation und begründen Sie Ihre Wahl.
Bevor es losgeht
Warum: Schüler müssen die Konzepte von Klassen, Objekten, Attributen und Methoden verstehen, bevor sie Vererbung anwenden können.
Warum: Das Verständnis, wie Methoden aufgerufen und verwendet werden, ist essenziell, um zu verstehen, wie Unterklassen Methoden der Oberklasse nutzen oder überschreiben.
Schlüsselvokabular
| Vererbung | Ein Mechanismus in der objektorientierten Programmierung, bei dem eine Klasse (Unterklasse) Eigenschaften und Methoden von einer anderen Klasse (Oberklasse) übernimmt. |
| Oberklasse (Superklasse) | Die Klasse, von der andere Klassen Eigenschaften erben. Sie enthält gemeinsame Merkmale und Verhaltensweisen. |
| Unterklasse (Subklasse) | Die Klasse, die Eigenschaften und Methoden von einer Oberklasse erbt. Sie kann eigene, spezifische Merkmale hinzufügen oder bestehende überschreiben. |
| 'ist-ein'-Beziehung | Eine konzeptionelle Beziehung, bei der eine Unterklasse eine spezialisierte Form der Oberklasse darstellt (z.B. ein 'Auto' ist ein 'Fahrzeug'). |
| Code-Duplizierung | Das mehrfache Vorkommen desselben oder sehr ähnlichen Codes an verschiedenen Stellen, was durch Vererbung vermieden werden kann. |
Vorsicht vor diesen Fehlvorstellungen
Häufige FehlvorstellungVererbung ist immer besser als Komposition.
Was Sie stattdessen lehren sollten
Vererbung eignet sich nur für 'ist-ein'-Beziehungen; Komposition für 'hat-ein' flexibler und vermeidet tiefe Hierarchien.
Häufige FehlvorstellungAlle Klassen brauchen eine Oberklasse.
Was Sie stattdessen lehren sollten
Nicht jede Klasse erbt; flache Strukturen sind oft wartbarer und erweiterbarer.
Häufige FehlvorstellungTiefe Hierarchien machen Code mächtiger.
Was Sie stattdessen lehren sollten
Tiefe Hierarchien erhöhen Komplexität und Kopplung, was Wartung erschwert.
Ideen für aktives Lernen
Alle Aktivitäten ansehenPaararbeit: Tierhierarchie modellieren
Schüler zeichnen ein UML-Diagramm für eine Tier-Oberklasse mit Unterklassen wie Hund und Vogel. Sie implementieren gemeinsame Methoden wie 'bewegen()'. Paare testen den Code mit Instanzen.
Kleingruppen: Auto-Familie erweitern
Gruppen erweitern eine Fahrzeugklasse um Elektroauto und Lkw. Sie extrahieren gemeinsame Attribute und diskutieren 'ist-ein'-Beziehungen. Code wird refaktoriert, um Duplikate zu entfernen.
Individuell: Hierarchie-Tiefe prüfen
Jeder Schüler erstellt eine tiefe Hierarchie und analysiert Risiken. Sie refactoren zu flacheren Strukturen und dokumentieren Verbesserungen.
Ganzer Unterricht: Code-Review
Klassen teilen Hierarchien und bewerten gegenseitig auf Sinnhaftigkeit und Duplizierung. Gemeinsam optimieren.
Bezüge zur Lebenswelt
- In der Spieleentwicklung nutzen Programmierer Vererbung, um verschiedene Charaktertypen (z.B. Krieger, Magier) von einer gemeinsamen 'Charakter'-Oberklasse abzuleiten. Dies erlaubt es, grundlegende Eigenschaften wie Lebenspunkte oder Bewegung für alle Charaktere zentral zu definieren.
- Automobilhersteller wie Volkswagen verwenden Klassenhierarchien in ihrer Software. Ein 'Golf' und ein 'Passat' könnten beide von einer 'Fahrzeug'-Klasse erben, die gemeinsame Attribute wie 'Motor' oder 'Getriebe' definiert, während spezifische Modelle eigene Besonderheiten hinzufügen.
Ideen zur Lernstandserhebung
Geben Sie den Schülerinnen und Schülern eine Liste von Begriffspaaren (z.B. 'Hund' und 'Tier', 'Rechteck' und 'Kreis'). Sie sollen für jedes Paar entscheiden, ob eine 'ist-ein'-Beziehung und damit Vererbung sinnvoll ist, und ihre Entscheidung kurz begründen.
Zeigen Sie ein einfaches Klassendiagramm mit einer Ober- und zwei Unterklassen (z.B. 'Mitarbeiter' als Oberklasse, 'Angestellter' und 'Azubi' als Unterklassen). Fragen Sie die Schüler: Welche Attribute und Methoden könnten in der Oberklasse 'Mitarbeiter' definiert sein? Welche spezifischen Merkmale könnten die Unterklassen haben?
Stellen Sie die Frage: 'Wann könnte es problematisch werden, wenn wir sehr viele Vererbungsebenen (eine tiefe Hierarchie) in unserem Programm haben?' Leiten Sie eine Diskussion über mögliche Nachteile wie Komplexität oder Abhängigkeiten.
Häufig gestellte Fragen
Wann ist eine 'ist-ein'-Beziehung sinnvoll?
Warum aktives Lernen bei Vererbung?
Wie fasst man gemeinsame Eigenschaften zusammen?
Welche Risiken hat tiefe Vererbung?
Planungsvorlagen für Informatik
Mehr in Objektorientierte Modellierung und Programmierung
Einführung in die Objektorientierung
Die Schülerinnen und Schüler lernen die Grundkonzepte der Objektorientierung kennen und identifizieren Objekte in realen Szenarien.
3 methodologies
Klassen und Objekte definieren
Die Schülerinnen und Schüler entwerfen Klassen als Baupläne und instanziieren Objekte mit spezifischen Eigenschaften.
3 methodologies
Methoden und Attribute
Die Schülerinnen und Schüler implementieren Methoden zur Interaktion mit Objekten und verwalten deren interne Zustände durch Attribute.
3 methodologies
Konstruktoren und Objektinitialisierung
Die Schülerinnen und Schüler nutzen Konstruktoren zur initialen Konfiguration von Objekten und verstehen deren Lebenszyklus.
3 methodologies
Polymorphie: Vielfalt nutzen
Die Schülerinnen und Schüler nutzen Polymorphie, um mit Objekten unterschiedlicher Typen über eine gemeinsame Schnittstelle zu interagieren.
3 methodologies
Assoziation und Aggregation
Die Schülerinnen und Schüler modellieren Beziehungen zwischen Objekten, um komplexe Systemstrukturen abzubilden.
3 methodologies