Aufgabe 1

Für die Simulation eines Wettrennens sollen verschiedene Fahrzeugarten objektorientiert modelliert werden. Da alle Fahrzeugtypen gemeinsame Eigenschaften haben, definieren wir uns zunächst eine Basisklasse Fahrzeug, die als Oberklasse für die anderen Klassen dienen soll. Ein Fahrzeug hat folgende allgemeinen Merkmale:

  • Seine aktuelle Position (in km und der Einfachheit halber in nur einer Dimension)
  • Seine aktuelle Geschwindigkeit (in km/h)
  • 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, eine korrekte Ausführung sollte protokolliert werden.
  • Es kann seine Maximalgeschwindigkeit angeben (Methode getMaxGeschwindigkeit). Für ein Objekt der Klasse Fahrzeug soll die Maximalgeschwindigkeit 0 sein.
  • Es kann die Anzahl seiner Räder angeben. In der Klasse Fahrzeug soll diese ebenfalls 0 sein.

Nun sollen einige konkrete Fahrzeuge definiert werden, indem entsprechende Klassen von Fahrzeug abgeleitet werden:

  • Ein Fahrrad ist ein Fahrzeug mit 2 Rädern und Maximalgeschwindigkeit 30 km/h.
  • Ein Auto ist ein Fahrzeug mit 4 Rädern und Maximalgeschwindigkeit 140 km/h.
  • Ein Rennwagen ist ein Auto mit Maximalgeschwindigkeit 220 km/h.
  • Ein Krankenwagen ist ein Auto mit einem zusätzlichen Blaulicht, das ein- oder ausgeschaltet sein kann (neues Attribut!). Außerdem muss der Krankenwagen Methoden zum Ein- bzw. Ausschalten des Blaulichts anbieten.

Definieren Sie diese Klassen und nutzen Sie dabei so weit wie möglich die Vererbung von Eigenschaften aus!

Aufgabe 2 (… das eigentliche Wettrennen zu Aufgabe 1)

Nun soll die eigentliche Simulation des Wettrennens in einer Klasse Wettrennen geschrieben werden. Erzeugen sie je ein Fahrzeug und setzen Sie dann die Geschwindigkeiten auf:

  • Fahrrad 20 km/h
  • Auto 150 km/h
  • Rennwagen 200 km/h
  • Krankenwagen 80 km/h

Dann sollen sich die Fahrzeuge bewegen. Der Gerechtigkeit halber geben wir dem Fahrrad einen Vorsprung von 4 Stunden. Danach lassen Sie alle Fahrzeuge eine Stunde lang mit unveränderter Geschwindigkeit vorwärts fahren. Was fällt Ihnen beim Auto auf?

Aufgabe 3

Eine Firma besitzt Geschäftskunden, von denen sie die Telefonnummer, eine E-Mail-Adresse und eine Adresse verwaltet. Ein Geschäftskunde kann ein Lieferant oder ein Kunde sein. Von den Lieferanten sollte der Firmenname und ein Ansprechpartner gespeichert werden. Die Kunden werden durch eine Kundennummer, einen Namen und die Anzahl ihrer Bestellungen erfasst.

Modellieren Sie geeignete Klassen Geschäftskunde, Lieferant und Kunde im UML-Klassendiagramm.

Aufgabe 4

Eine Spielzeugfirma möchte am derzeitigen Star-Wars-Boom teilhaben und erweitert ihre Angebotspalette.

Sie möchte vorerst verschiedene Raumfahrzeuge und Spielfiguren als Spielzeuge anbieten. Alle Spielzeuge bestehen aus „weichem Material“ und sind wie beispielsweise der Todesstern als Anti-Stress-Ball zu verwenden. Anträge der Projektgruppe, Joda einen rosa Mantel zu geben oder zumindest die Gruppe der Jediritter mit einem Einhorn zu verstärken, wurden von der Walt Disney Company abgelehnt. Als Raumfahrzeuge werden Todessterne, X-Wings und Imperiale Zerstörer angeboten. Zu den Todessternen und Imperialen Zerstörern gehören Raumfähren, welche selbst ebenfalls Raumfahrzeuge sind. Als Spielfiguren werden Jedi-Ritter und Stormtrooper angeboten. Jedi-Ritter erhalten ein angepasstes Laserschwert, die Stormtrooper austauschbare Helme und Karabiner (Gewehre).

  1. Entwerfen Sie für das beschriebene System ein UML-Beziehungsdiagramm (ohne Attribute und Methoden).
  2. Erläutern Sie mit Hilfe des gegebenen Systems folgende Begriffe und Zusammenhänge:     
    Vererbung, Generalisierung und  Spezialisierung, abstrakte Klasse
  3. Erläutern Sie, welche Auswirkungen eine Beziehung der Art Assoziation, Aggregation und Komposition auf einen Jedi-Ritter und sein Laserschwert hat. Begründen Sie hier Ihre Wahl für Teilaufgabe a).

Aufgabe 5

Quadratische Pyramide, Tetraeder und Kegel besitzen eine Grundfläche, die durch die Angabe einer einzigen Länge bestimmt ist, und eine Höhe; aus diesen Größen lassen sich Volumen und Oberfläche berechnen.

Implementieren Sie eine geeignete Klasse Pyramide und leiten Sie Klassen Tetraeder und Kegel ab. Implementieren Sie ein geeignetes Rahmenprogramm zum Testen der Klassen.

Aufgabe 5

Die bekannte Bank .comumweg bietet verschiedene Konten an. Für alle Konten sollte natürlich ein Kunde (Name, Adresse, Telefon) erfasst werden, jeder Kunde kann 10 Konten haben. Jedes Konto hat eine Kontonummer, einen Kontostand, Einzahlungen und Auszahlungen. Es werden (u. a.) verschiedene Arten an Konten angeboten:

  • Girokonto (Kreditrahmen, Karte, Bonuszahlungen)
  • Anlagekonten
    • Tagesgeldkonto (Zinsen)
    • Festgeldkonto (Zinsen, Laufzeit)

Implementieren Sie ein Modell für diesen Sachverhalt als UML-Diagramm und testen Sie dieses im Java-Editor an geeigneten Daten.

Hinweis: Ein Objekt Kreditkarte soll hier nicht modelliert werden, es genügt eine Nummer.