faecher:informatik:oberstufe:adt:containerschiffe:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
faecher:informatik:oberstufe:adt:containerschiffe:start [27.10.2021 19:09] sbelfaecher:informatik:oberstufe:adt:containerschiffe:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== 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. 
- 
-{{:aufgabe.png?nolink  |}} 
-=== (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: 
- 
-{{ :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. 
  • faecher/informatik/oberstufe/adt/containerschiffe/start.1635354575.txt.gz
  • Zuletzt geändert: 27.10.2021 19:09
  • von sbel