faecher:informatik:oberstufe:adt:containerschiffe:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:adt:containerschiffe:start [27.10.2021 17:02] – angelegt sbelfaecher:informatik:oberstufe:adt:containerschiffe:start [28.10.2021 07:33] (aktuell) sbel
Zeile 1: Zeile 1:
 ====== Containerschiffe ====== ====== Containerschiffe ======
 +
 +{{ :faecher:informatik:oberstufe:adt:containerschiffe:cship.jpg?400|}}
  
 Ein Containerschiff ist ein speziell für den Transport von Containern gebautes Frachtschiff. Die Ein Containerschiff ist ein speziell für den Transport von Containern gebautes Frachtschiff. Die
Zeile 7: Zeile 9:
  
 Eine Reederei besitzt mehrere Feederschiffe mit jeweils genau zwei Stapelplätzen. Die Plätze 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+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 Containerstapel aufnehmen. Ein Container auf einem solchen Stapel darf nicht mehr als 28 t
 wiegen. wiegen.
Zeile 13: Zeile 15:
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
 === (A1) === === (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 Die Reederei möchte die Frachten der Feederschiffe mit einem objektorientierten
Zeile 19: Zeile 24:
  
 {{ :faecher:informatik:oberstufe:adt:containerschiffe:auswahl_078.png |}} {{ :faecher:informatik:oberstufe:adt:containerschiffe:auswahl_078.png |}}
 +
 +  * Erläutere, welche Auswirkungen die Methoden ''push'' und ''pop'' 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.
 +
 +
 +---- 
 +{{:aufgabe.png?nolink  |}}
 +=== (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.
 +
 +---- 
 +{{:aufgabe.png?nolink  |}}
 +=== (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.
 +
 +<code>
 +a = platzA.getGesamtgewicht();
 +b = platzB.getGesamtgewicht();
 +c = neu.getGewicht();
 +wenn (a < b)
 +  wenn (a + c > b + 20)
 +    platzA.push(platzB.pop());
 +    platzB.push(neu);
 +  sonst
 +    platzA.push(neu);
 +  ende wenn
 +sonst
 +  wenn (b + c > a + 20)
 +    platzB.push(platzA.pop());
 +    platzA.push(neu);
 +  sonst
 +    platzB.push(neu);
 +  ende wenn
 +ende wenn
 +</code>
 +Bei einem Ladevorgang befinden sich zu Beginn auf **platzA** und **platzB** je ein Container
 +mit 10 t. Es sollen nun drei Container mit den Gewichten in der Reihenfolge 21 t, 27 t und
 +20 t geladen werden.
 +
 +  * Stelle das Ergebnis des Ladevorgangs in einer Skizze dar.
 +  * Vergleiche die beiden Ladealgorithmen für die gegebene Containerreihenfolge schrittweise hinsichtlich der Ungleichheit der Stapelgewichte. Welche Schlussfolgerungen kannst du ziehen? 
 +  * Diskutiere Vor- und Nachteile der experimentellen Lademethode.
 +
 +---- 
 +{{:aufgabe.png?nolink  |}}
 +=== (A4) ===
 +
 +Zur Vorbereitung des Ladevorgangs wird eine Ladeliste erstellt, in der die Container –
 +bezogen auf die Zielhäfen – in umgekehrter Reihenfolge notiert werden, damit die
 +Container, die zuerst ausgeladen werden müssen, ganz oben stehen.
 +Neu hinzu kommende Container werden an der richtigen Stelle in die Liste eingefügt.
 +Dafür bietet eine verbesserte Containerstapel-Klasse eine Methode
 +''einfuegenAnKorrekterPosition(c:Container)'' an.
 +
 +Beschreibe, wie innerhalb der Methode die Verkettung der Objekte verändert werden
 +muss, um ein neues Objekt innerhalb einer verketteten Liste einzufügen. 
 +
 +Veranschauliche deine Beschreibung unter Verwendung einer aussagekräftigen Skizze.
  • faecher/informatik/oberstufe/adt/containerschiffe/start.1635354170.txt.gz
  • Zuletzt geändert: 27.10.2021 17:02
  • von sbel