Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:modellierung:vererbung:subtyping:start [19.03.2024 08:27] – Frank Schiebel | faecher:informatik:oberstufe:modellierung:vererbung:subtyping:start [19.03.2024 14:31] (aktuell) – [Subtyping] Frank Schiebel | ||
---|---|---|---|
Zeile 12: | Zeile 12: | ||
* Ein '' | * Ein '' | ||
* Ein '' | * Ein '' | ||
- | * Ein '' | + | * Ein '' |
+ | <callout type=" | ||
+ | Unter dem Begriff **Polymorphie** versteht man bei Variablen, dass eine Variable vom Typ einer Oberklasse auch Werte von Typ ihrer Subklassen halten kann. Man spricht von Variablenpolymorphie. | ||
+ | |||
+ | Polymorphie bedeutet " | ||
+ | </ | ||
+ | |||
+ | === Beispiel: === | ||
+ | {{ : | ||
+ | Für die Klassenhierarchie wie sie im Bild dargestellt ist, funktioniert der folgende Code: | ||
+ | |||
+ | <code java> | ||
+ | public Fuhrpark() | ||
+ | { | ||
+ | Fahrzeug f1 = new Fahrzeug(" | ||
+ | Zweirad t1 = new Tretroller(" | ||
+ | Zweirad t2 = new Fahrrad(" | ||
+ | |||
+ | f1 = new Auto(" | ||
+ | |||
+ | System.out.println(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Man erkennt, man kann in einer Variablen vom Typ '' | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A1) === | ||
+ | |||
+ | Welche Typen können Werte haben, die in den folgenden Variablen gespeichert werden? | ||
+ | < | ||
+ | Fahrzeug f; | ||
+ | Tretroller r; | ||
+ | Zweirad v; | ||
+ | Auto a; | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | Eine Vorlage für die Fahrzeugverwaltung findest du hier: https:// | ||
+ | |||
+ | **(A)** Vervollständige die Implementation der Vorlage - ein Fahrzeug soll die folgenden allgemeinen Merkmale besitzen: | ||
+ | |||
+ | * Seine aktuelle Entfernung (in km, Luftlinie von der Basis) | ||
+ | * Seine aktuelle Geschwindigkeit (in km/h) | ||
+ | * Die Anzahl der Räder | ||
+ | * Es kann bewegt werden (Methode bewege). Die Methode wird mit einem double-Parameter aufgerufen, der die Anzahl der Minuten angibt, die sich das Fahrzeug mit der aktuellen Geschwindigkeit vorwärts bewegt. Der Methodenaufruf ändert natürlich die Position des Fahrzeugs, wenn es mit einer von 0 verschiedenen Geschwindigkeit bewegt wird. | ||
+ | * Man kann seine Geschwindigkeit setzen (Methode setzeGeschwindigkeit). Die Geschwindigkeit darf die Maximalgeschwindigkeit nicht überschreiten, | ||
+ | * Es kann seine Maximalgeschwindigkeit angeben (Methode getMaxGeschwindigkeit). Für ein Objekt der Klasse Fahrzeug soll die Maximalgeschwindigkeit 0 sein. | ||
+ | * Es kann seine aktuelle Geschwindigkeit angeben (Methode getGeschwindigkeit). In der Klasse Fahrzeug soll die Geschwindigkeit zunächst 0 sein. | ||
+ | * Es kann die Anzahl seiner Räder angeben. In der Klasse Fahrzeug soll diese ebenfalls 0 sein. | ||
+ | |||
+ | **(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: '' | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | **(A)** In welchen Attributen könnten sich die Subklassen von der Klasse Fahrzeug unterscheiden? | ||
+ | |||
+ | **(B)** Implementiere einige der Erweiterungen, | ||
+ | |||
+ | **(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? | ||
+ | |||
+ | ++++ Lösungsvorschlag | https:// | ||
+ | ==== Dateien ==== | ||
{{simplefilelist> | {{simplefilelist> | ||