Diese Übung baut direkt auf deiner Fahrzeug-Hierarchie aus der letzten Übung (Abstraktion & Vererbung) auf: Fahrzeug → Motorfahrzeug → Auto/Bus/Motorrad, sowie Fahrrad → E-Bike (Mehrfachvererbung). Versuche jede Aufgabe zuerst selbst, klicke dann auf „Musterlösung anzeigen“ und fahre mit der Maus über die Diagrammteile für Erklärungen.
Nimm dein Klassendiagramm aus der letzten Übung und ergänze die passenden Sichtbarkeitssymbole (+, -, #) für alle Attribute und Methoden. Nutze die Standardregel: Attribute privat, Methoden öffentlich. Überlege außerdem: Gibt es Attribute, die protected sein sollten, damit Unterklassen direkt darauf zugreifen dürfen?
Jedes Motorfahrzeug hat einen Kilometerstand. Warum sollte man diesen nicht einfach öffentlich zugänglich machen? Ergänze das Klassendiagramm um das Attribut und passende Methoden, die einen kontrollierten Zugriff erlauben.
Sowohl Fahrrad als auch Auto erben bremst() von Fahrzeug – aber technisch passiert dabei etwas ganz anderes. Überschreibe bremst() in beiden Unterklassen, sodass jede Klasse ihre eigene, passende Umsetzung besitzt.
Ein Auto soll akustisch signalisieren können – einmal ein kurzes, normales Hupen, einmal ein langes Hupen für Notfälle. Modelliere das mit Method Overloading (zwei Methoden, gleicher Name, unterschiedliche Parameter).
Verkehrsteilnehmerin besitzt die Methode nutzt_Verkehrsmittel(fahrzeug: Fahrzeug). Was passiert, wenn man ihr einmal ein Auto- und einmal ein Fahrrad-Objekt übergibt und darin bremst() aufgerufen wird?
Erinnerst du dich an deine Elektrogerät-Hierarchie aus der letzten Übung? Ergänze Sichtbarkeiten und überschreibe eine gemeinsame Methode reinigen() in jeder Unterklasse passend.
Ein Mitschüler hat das Klassendiagramm für Motorfahrzeug um den Kilometerstand ergänzt. Es enthält einen typischen Kapselungs-Fehler. Klicke auf das Element, das falsch dargestellt ist.