Vererbung und Polymorphismus: Fahrzeugverwaltungssystem
Swift
Hard
classes
Aufgabe «Vererbung und Polymorphismus: Fahrzeugverwaltungssystem»
Entwickeln Sie eine Klassenhierarchie zur Verwaltung eines Fahrzeugparks. Die Basisklasse Vehicle enthält die Eigenschaften brand (String) und year (Int) sowie eine Methode description(), die einen String der Form "Vehicle: brand year" zurückgibt. Die Klasse Car erbt von Vehicle und fügt die Eigenschaft fuelType (String, möglich: "petrol", "diesel", "electric") hinzu und überschreibt description() so, dass sie "Car: brand year, fuel: fuelType" zurückgibt. Die Klasse Bicycle erbt von Vehicle und fügt die Eigenschaft type (String, möglich: "mountain", "road", "city") hinzu und überschreibt description() so, dass sie "Bicycle: brand year, type: type" zurückgibt. Die Klasse Fleet verwaltet ein Array von Vehicle und hat die Methode addVehicle(_: Vehicle) zum Hinzufügen eines Fahrzeugs, die Methode listDescriptions() zur Ausgabe (über print) der Beschreibungen aller Fahrzeuge in der Reihenfolge des Hinzufügens (jede in einer neuen Zeile) und die Methode countByYear(year: Int) -> Int, die die Anzahl der Fahrzeuge des angegebenen Jahres zurückgibt. Eingabedaten: zuerst eine ganze Zahl N (1 ≤ N ≤ 100) für die Anzahl der Fahrzeuge. Dann wird für jedes Fahrzeug eine Zeile mit dem Typ ("Car" oder "Bicycle") und den entsprechenden Eigenschaften eingegeben: brand (Zeichenkette ohne Leerzeichen), year (ganze Zahl von 1900 bis 2023), und für Car fuelType (Zeichenkette), für Bicycle type (Zeichenkette). Nach Eingabe aller Fahrzeuge geben Sie durch ein Leerzeichen getrennt das Jahr (ganze Zahl) für die Zählung ein. Es wird garantiert, dass alle Daten korrekt sind. Geben Sie zuerst die Ergebnisse von listDescriptions() aus, dann in einer neuen Zeile die Anzahl der Fahrzeuge des angegebenen Jahres.
Eingabeformat
Ganze Zahl N. Dann N Blöcke: Zeichenkette für den Typ, Zeichenkette für brand, ganze Zahl year, für Car Zeichenkette fuelType, für Bicycle Zeichenkette type. Dann eine ganze Zahl yearForCount.
Ausgabeformat
Zuerst N Zeilen mit Beschreibungen (jede Beschreibung in einer eigenen Zeile), dann in einer neuen Zeile eine ganze Zahl - die Anzahl der Fahrzeuge mit dem Jahr gleich yearForCount.
Beispiele
Beispiel 1
EINGABE
10
AUSGABE
30
Beispiel 2
EINGABE
6
4 4 1 1 2 3
AUSGABE
1 1 4 4 2 3
main.swift