Dies ist eine alte Version des Dokuments!
Containerschiffe
Ein Containerschiff ist ein speziell für den Transport von Containern gebautes Frachtschiff. Die Container sind genormte Behälter, die auf vorgesehenen Plätzen aufeinander gestapelt werden. Ein besonderer Schiffstyp, das sogenannte Feederschiff, hat nur eine geringe Anzahl von Plätzen zur Aufnahme von Containern und kann somit auch kleine Häfen anlaufen.
Eine Reederei besitzt mehrere Feederschiffe mit jeweils genau zwei Stapelplätzen. Die Plätze werden auf jedem Schiff mit platzA und platzB bezeichnet. Jeder Platz kann genau einen Containerstapel aufnehmen. Ein Container auf einem solchen Stapel darf nicht mehr als 28 t wiegen.
(A1)
Das Schiff soll möglichst ausgeglichen beladen werden. Aus diesem Grund werden neue Container immer auf dem leichteren Stapel abgelegt, bei gleich schweren Stapeln auf platzA.
Die Reederei möchte die Frachten der Feederschiffe mit einem objektorientierten Computerprogramm verwalten. Das folgende Diagramm zeigt die beteiligten Klassen. Die Klasse Containerstapel stellt dabei eine Erweiterung des ADT Stapel dar:
- Erläutere, welche Auswirkungen die Methoden
push
undpop
auf einen Stapel haben. Begründe, warum für diese Aufgabenstellung die Modellierung mit einem Stapel sinnvoll ist. - Die Klasse Containerstapel besitzt die Methode
getGesamtgewicht(): double
. Implementiere diese Methode in Java. Beachte dabei, dass hierfür keine zusätzlichen Attribute in die Klasse Containerstapel eingefügt werden dürfen.
(A2)
Das Schiff soll möglichst ausgeglichen beladen werden. Aus diesem Grund werden neue Container immer auf dem leichteren Stapel abgelegt, bei gleich schweren Stapeln auf platzA.
Implementiere die Methode aufladen(neu:Container)
in der Klasse Schiff,
die den übergebenen Container jeweils auf dem bisher leichteren der beiden Stapel
ablegt, bzw. auf platzA, wenn beide Stapel gleich schwer sind.
(A3)
Eine experimentelle Lademethode aufladen2(neu:Container)
beruht auf dem
folgenden Algorithmus, hier notiert in Pseudocode. Er soll nur dann angewendet werden,
wenn auf beiden Plätzen mindestens ein Container liegt. Die Prüfung, ob beide Stapel
Container enthalten, ist hier nicht vorgesehen.