Wie wir gelernt haben, definiert jede Klasse in Java auch einen Variablentyp - in diesem Sinne definiert jede Subklasse einen Subtyp.
Um Beispielsweise einen Fuhrpark zu modellieren, kann die folgende Klassenhierarchie zum Einsatz kommen:
Wir definieren zunächst eine Basisklasse Fahrzeug
, die als Oberklasse für die anderen Klassen dienen soll
Zweirad
ist ein Fahrzeug mit 2 Rädern.Tretroller
ist ein Zweirad mit Höchstgeschwindigkeit 12km/hFahrrad
ist ein Zweirad, mit Maximalgeschwindigkeit 30 km/h.Auto
ist ein Fahrzeug mit 4 Rädern und Maximalgeschwindigkeit 140 km/h.Rennwagen
ist ein Auto mit Maximalgeschwindigkeit 220 km/h.Lastwagen
ist ein Auto mit Maximalgeschwindigkeit 80 km/h.Polymorphie bedeutet "Vielgestaltigkeit" und tritt in der OOP noch in anderen Zusammenhängen auf, wie wir sehen werden.
Für die Klassenhierarchie wie sie im Bild dargestellt ist, funktioniert der folgende Code:
public Fuhrpark() { Fahrzeug f1 = new Fahrzeug("FID001"); Zweirad t1 = new Tretroller("Roller1"); Zweirad t2 = new Fahrrad("Radl001"); f1 = new Auto("EinAuto"); System.out.println("Fuhrpark wurde erzeugt!"); }
Man erkennt, man kann in einer Variablen vom Typ Fahrzeug
eben auch beliebige Objekte vom Typ einer Unterklasse speichern.
Welche Typen können Werte haben, die in den folgenden Variablen gespeichert werden?
Fahrzeug f; Tretroller r; Zweirad v; Auto a;
Eine Vorlage für die Fahrzeugverwaltung findest du hier: https://codeberg.org/qg-info-unterricht/bluej-fahrzeuge
(A) Vervollständige die Implementation der Vorlage - ein Fahrzeug soll die folgenden allgemeinen Merkmale besitzen:
(B) Erweitere die Klasse Fahrzeugverwaltung so, dass die Fahrzeuge in einer ArrayList gespeichert werden - welchen Typ sollte diese Array List haben?
(C) Fülle die ArrayList im Konstruktor der Fahrzeugverwaltung mit 10 Fahrzeugen
(D) Implementiere eine Methode: printFuhrpark
, der alle Fahrzeuge mit ihrer aktuellen Position ausgibt.
(A) In welchen Attributen könnten sich die Subklassen von der Klasse Fahrzeug unterscheiden? Wo könnten die Subklassen zum Beispiel durch Weitere Attribute erweitert werden?
(B) Implementiere einige der Erweiterungen, die du dir ausgedacht hast. Welche Auswirkungen hat das auf die Konstruktoren der Subklassen?
(C) Die Liste aller Fahrzeuge soll nun nicht nur die Entfernung zur Basis ausgeben, sondern alle Attribute, die ein bestimmtes Fahrzeug hat. Welches Problem ergibt sich jetzt?
Filename | Filesize | Last modified |
---|---|---|
fuhrpark.png | 24.6 KiB | 19.03.2024 08:51 |
kap10_04subtyping.odp | 1.4 MiB | 22.11.2021 20:25 |
kap10_04subtyping.pdf | 224.5 KiB | 22.11.2021 20:25 |