FI-25So-FIA-1P

Hinweis: Ich verwende die TG-Formelsammlung im Unterricht.


Im Klassendiagramm war abstract nur durch Kursivschrift gekennzeichnet, daher schlecht erkennbar. Hier nun zusätzlich mit {abstract} markiert.

Klassendiagramm Vorgabe
Klassendiagramm Vorgabe

Aufgabe 1 Anpassung des Buchungssystems

1.1.1 Untersuchen Sie das vorliegende Klassendiagramm und erläutern Sie die Beziehung zwischen den Klassen Kunde und Vertrag sowie den Klassen Vertrag und Fahrzeug. Berücksichtigen Sie dabei sämtliche Informationen, die im Diagramm verzeichnet sind. Benennen Sie jeweils die Beziehung, die Kardinalitäten Multiplizitäten und die Rollennamen. (6P)

Lösung

Kunde-Vertrag ist eine bidirektionale Assoziation. Multiplizitäten sind 1 und * (unbestimmt viele). Rollennamen sind der Kunde und vertraege[] wobei [] auf die Implementierung mit einem Array hindeutet.

Vertrag-Fahrzeug ist eine Aggregation (Ist-Teil-Beziehung, Fahrzeuge sind Teile des Vertrags aber nicht von ihm existenzabhängig). Multiplizitaten sind 1 und *. Rollenname ist fahrzeuge[].

1.1.2 Erläutern Sie die Bedeutung abstrakter Klassen und Methoden bei der objektorientierten Programmierung am Beispiel der Klasse Fahrzeug und gehen Sie hierbei auf den Begriff „Polymorphie“ ein. (6P)

Lösung

Von einer abstrakten Klasse wie Fahrzeug können keine Objekt (Instanzen) abgeleitet werden. In Fahrzeug ist es eine abstrakte Methode getPreis():double deklariert, d.h. die Schnittstelle ist vorgegeben aber kein Programmcode dazu definiert. Um von Unterklassen Objekte erzeugen zu können, müssen dort alle geerbten abstrakten Methoden mit konkreten Methoden überschrieben werden.

1.2 Der neue Fuhrpark macht ein Überarbeitung der bisherigen Software notwendig. Zu berücksichtigen sind dabei folgende Zusammenhänge: (20P)

  • Als Fahrzeuge werden künftig E-Fahrzeuge und Verbrenner-Fahrzeuge unterschieden.
  • Die bereits vorhandenen Klassen für Verbrenner-Fahrzeuge sind PKW und Transporter.
  • Die neuen Klassen sind: E_Fahrzeug, E_Auto, E_Bike und E_Scooter

Erweitern Sie das Klassendiagramm (Vorgabe) um die genannten Klassen.

Lösung Klassendiagramm
Klassendiagramm Lösung
Klassendiagramm Lösung

1.3 Implementieren Sie die folgenden Klassen und Methoden mit der an Ihrer Schule verwendeten Programmiersprache.

1.3.1 Implementieren Sie die Klasse Vertrag. (5P)

Lösung
import java.util.ArrayList; 
public class Vertrag{
  private Kunde derKunde;
  private ArrayList<Fahrzeug> fahrzeuge = new ArrayList<>();
}

1.3.2 Implementieren Sie die Klasse Fahrzeug. (3P)

Lösung
public abstract class Fahrzeug{
  public abstract double getPreis();
}

1.3.3 Implementieren Sie die Unterklasse von Fahrzeug: E_Fahrzeug (2P)

Lösung
public abstract class E_Fahrzeug extends Fahrzeug{
}

1.3.4 Implementieren Sie die Unterklasse E_Scooter. (4P)
Die Methode getPreis():double gibt als Wert 10.5 zurück

Lösung
public class E_Scooter extends E_Fahrzeug{
  public double getPreis(){
    return 10.50;
  }
}