Nur auf Docsity: Lade Aufgaben mit Lösungshinweisen schriftl. Abiturprüfung Informatik Gymnasien und mehr Abiturprüfungen als PDF für Informatik herunter!
Schriftliche Abiturprüfung
an den allgemein bildenden Gymnasien
im Fach Informatik ab 2017
Aufgabenfundus
mit Lösungshinweisen
(Fassung vom Februar 2015)
Vorbemerkungen:
Die vorliegende Aufgabensammlung ergänzt den Musteraufgabensatz um weitere acht Aufgaben im Abiturstil. Die insgesamt 12 Aufgaben können jedoch nicht das ganze Spektrum erwartbarer Aufgaben abdecken. Maßgeblich sind der aktuelle Bildungsplan für das vierstündige Fach Informatik und der jeweilige Abiturerlass für das entsprechende Jahr.
http://www.bildung-staerkt-menschen.de/unterstuetzung/schularten/Gym/faecher/Inf/listing_bildungsstandards
Im Jahr 2017 sollen
- Rechner (von-Neumann-Rechner)
- Rechnernetze nicht Gegenstand der schriftlichen Prüfung sein.
Der Fachlehrerin, dem Fachlehrer werden die Aufgabenstellungen
A : eine Aufgabe mit dem Schwerpunkt Objektorientierte Modellierung und Programmierung
sowie drei Aufgaben B1 , B2 und B3 mit verschiedenen Schwerpunkten aus den folgenden Themengebieten vorgelegt:
B1 : eine Aufgabe mit dem Schwerpunkt Datenbanken inklusive Verschlüsselung und Datenschutz B2 : eine Aufgabe mit dem Schwerpunkt Automaten und formale Sprachen B3 : eine Aufgabe mit dem Schwerpunkt Abstrakte Datentypen inklusive erweiterter Algorithmen/Rekursion
Die Fachlehrerin, der Fachlehrer wählt aus Gruppe B von den drei vorgelegten Aufgaben zwei Aufgaben aus.
Die Schülerin, der Schüler
- bearbeitet die Aufgabe A und die beiden ausgewählten Aufgaben aus der Gruppe B;
- vermerkt auf der Reinschrift, welche Aufgaben sie/er bearbeitet hat;
- ist verpflichtet, die Vollständigkeit der vorgelegten Aufgaben vor Bearbeitungsbeginn zu überprüfen (Anzahl der Blätter, Anlagen usw.).
Die Lösungshinweise erheben nicht den Anspruch, die einzigen oder kürzesten Lösungswege aufzuzeigen. Sie sollen unter anderem eine Orientierungshilfe bei der Auswahl der Aufgaben durch die Fachlehrkraft sein. Maßgebend für die Korrektur ist allein der Aufgabentext und jede nach diesem Text mögliche Lösung. Für eine vereinheitlichende Sprechweise wird auf die einführenden Hinweise in den Lösungen des Musteraufgabensatzes hingewiesen.
Die vorliegenden Aufgaben können und sollen zur Vorbereitung auf die Abiturprüfung im Unterricht und in Kursklausuren eingesetzt werden. Sie sind jedoch auch für Schülerinnen und Schüler im Internet zugänglich.
Allen an der Erstellung der Aufgaben beteiligten Lehrkräften der Versuchsschulen sei an dieser Stelle für die zeitintensive und aufwändige Arbeit an dieser Stelle herzlich gedankt.
Stuttgart, im Februar 2015
A2 In der Klasse Bauwerk wird zusätzlich die Methode abstract istBewohnt() :
boolean definiert. Ein Wohnhaus speichert die Anzahl (>=0) seiner Bewohner.
Ein Stall hat keine Bewohner.
- Überschreiben Sie die Methode istBewohnt() für beide Unterklassen sinnvoll.
- Implementieren Sie für die Klasse Wohnhaus und Stall jeweils den Standardkon- struktor so, dass der Grundstückswert und die Baukosten zur Objektinitialisierung wie folgt festgelegt werden: Baukosten für einen Wohnhaus: 200 (Goldstücke), Grundstückswert für ein Wohnhaus: 100 (Goldstücke) Baukosten für einen Stall: 80 (Goldstücke) Grundstückswert für einen Stall: 50 (Goldstücke) Zu jedem Bauernhof gehört eine gewisse Anzahl an Ställen.
- Implementieren Sie eine geeignete Datenstruktur, zur Verwaltung der Ställe. Zum Wert eines Bauernhauses gehören auch die Werte seiner Ställe.
- Überschreiben Sie die Methode wertAusgeben():double in der Klasse
Bauernhaus so, dass der Wert seiner Ställe mitberücksichtigt wird.
(5 VP)
A3 Ιm Folgenden sind alle Bauwerke außer den Ställen handelbar. Ställe werden zusammen mit dem jeweils zugehörigen Bauernhaus gehandelt. In der Klasse Bauwerk existiert dafür
eine Funktion abstract istHandelbar():boolean, die von ihren Unterklassen
entsprechend überschrieben wird. Hier ein Ausschnitt aus dem Klassendiagramm
(die Liste der Bauwerke ist in Java als ArrayList bzw. in Delphi als TobjectList
realisiert):
Wir betrachten nun zwei Hausbesitzer, die miteinander Handel treiben - einen Kauf- interessenten und einen potentiellen Verkäufer. Ein Notar überwacht den Verkauf. Er achtet darauf, dass das Gebäude tatsächlich handelbar ist, dem Verkäufer gehört und der Käufer über genügend Geldmittel verfügt, um den Preis des Gebäudes auch bezahlen zu können.
- Implementieren Sie die Methoden kaufAbwickeln():boolean der Klasse Notar, die alle notwendigen Voraussetzungen bei der Rolle des Hausbesitzers als Verkäufer bzw. als Käufer prüft und anschließende den Kauf abwickelt, indem die Besitzer wechseln und der Kaufpreis abgebucht bzw. gut geschrieben wird. Den Erfolg des Handels soll die
Methode kaufAbwickeln() zurück geben.
(3 VP)
II A Objektorientierte Modellierung und Programmierung
Der Hausmeister des Von-Neumann-Gymnasiums betreibt den Schulkiosk. Er möchte die Verwaltung nun über den Computer abwickeln und steuern. Er kommt mit folgendem Pflichtenheft zu Ihnen und möchte die Kioskverwaltung von Ihnen umsetzen lassen.
Mit dem Kioskverwaltungsprogramm sollen verschieden Waren verwaltet, der Gesamtbestand festgehalten und der Gesamtgewinn berechnet werden. In dem Kiosk gibt es als Waren Getränke und Backwaren. Als Backwaren werden ausschließlich Brezeln und belegte Brötchen verkauft.
Die Waren haben eine Warenbezeichnung, einen Einkaufspreis und einen Verkaufspreis. Getränke haben unterschiedliche Inhaltsgrößen. Für die belegten Brötchen muss die Art des Belags (Kräuter-Aufstrich, Wurst, Käse, …) angegeben werden, bei den Brezeln, ob sie mit Butter bestrichen sind oder nicht.
Die Waren werden über ihre Warenbezeichnung eindeutig festgelegt. Bei der Neuaufnahme einer Ware sollen die Warenbezeichnung, der Einkaufspreis und der Verkaufspreis eingegeben werden. Bei den Getränken wird zusätzlich die Inhaltsgröße und bei den belegten Brötchen die Art des Belags eingegeben.
A1 Das folgende vereinfachte Klassendiagramm stellt die (abstrakt) Beziehung zwischen den einzelnen Waren-Klassen dar.
(abstrakt)
- Benennen Sie die Beziehungen zwischen den Klassen und erläutern Sie kurz die objektorientierten Prinzipien. Erläutern Sie, warum hier einige Klassen als abstrakt deklariert sind und geben Sie die Gründe für diese Deklaration an.
- Implementieren Sie für die Klassen Ware, Getraenk, Backware, Brezel und
Broetchen jeweils einen Konstruktor.
(5 VP)
(bitte wenden )
Schulkiosk
I B1 Datenbanken
B1.1 Gegeben ist die folgende Tabelle einer Datenbank, mit der ein Elektronik-Händler seine verkauften Smartphones verwaltet:
Hersteller Bezeichnung Preis in € Kaufdatum Kunde
Tony Expert3 539,50 10.10.2014 Harry Baumeister, Gmünd
Samson Merkur4 682,85 22.10.2014 Robert Fruchtig, Semmelrode
Samson Sun5 456,90 15.09.2014 Maria Lustig, Freiburg
Samson Sun5 456,90 15.09.2014 Maria Lustig, Freiburg
Pear xPhone3 889,00 11.10.2014 Harry Baumeister, Gmünd
Samson Sun5 406,90 14.10.2014 Rita Richter, Freiburg
... ... ... ... ...
- Erläutern Sie, welche Probleme sich bei der Verwaltung der Datenbank ergeben können. Gehen Sie dabei insbesondere auf die Begriffe „Redundanz“ und „Dateninkonsistenz“ ein.
- Entwerfen Sie für die Datenbank ein optimiertes, relationales Datenbankschema, das diese Probleme vermeidet. (6 VP)
B1.2 Gegeben ist folgendes Entity-Relationship-Diagramm:
- Geben Sie alle Beziehungskardinalitäten an und begründen Sie Ihre Wahl!
Geben Sie jeweils die passende SQL-Abfrage an:
- Welche Filme aus dem Jahr 2012 sind Action-Filme?
- Welche Filme haben eine Länge zwischen 90 und 120 Minuten?
- Wie viele Filme wurden im Jahr 2013 produziert?
- In welchen Filmen wirkt der Schauspieler „Bruce Wally“ mit? Lassen Sie nur die Filmtitel geordnet nach dem Produktionsjahr ausgeben. (7 VP)
B1.3 Für einen Baumarkt soll eine Datenbank entworfen werden, die sowohl den Artikelbestand als auch die Artikelverkäufe erfasst. Folgende Anforderungen werden an die Datenbank gestellt:
- Zu jedem Artikel werden der Name, der Preis pro Einheit und wie viele Einheiten im Regal sind gespeichert.
- Viele Kunden haben mindestens eine Kundenkarte des Baumarkts. Für jeden Kunden sind die jeweilige Kartennummer sowie der Name und die Adresse des Kunden gespeichert.
- Kommt ein Kunde nach dem Einkauf an die Kasse, werden alle Artikel eingescannt und über ihren Barcode erfasst.
- Der Kunde erhält einen Kassenbon, auf dem alle Artikel und die Anzahl der erworbenen Einheiten aufgelistet sind. Diese Daten werden mit der eindeutigen Kassenbon-Nummer des Einkaufs gespeichert.
- Zu jedem Einkauf werden auch Datum und Uhrzeit erfasst.
- Bezahlt der Kunde mit EC-Karte oder bar, werden keine weiteren Daten gespeichert, bezahlt er mit seiner Kundenkarte, wird die Nummer der entsprechenden Karte gespeichert.
- Entwickeln Sie ein Entity-Relationship-Diagramm für die Datenbank!
- Kennzeichnen Sie die Schlüsselattribute und geben Sie die Beziehungskardinalitäten an! (7 VP)
B1.2 Ein Wahlforschungsinstitut möchte die Ergebnisse, die politische Parteien bei Landtagswahlen erzielt haben, in einer relationalen Datenbank speichern.
- Für jedes Land ist der Name, die Einwohnerzahl, die Anzahl der Sitze im Landesparlament und der Regierungssitz zu speichern. Weiterhin nehmen wir an, dass die Länder durch ihre Namen eindeutig identifiziert sind..
- Jede Partei hat einen voll ausgeschriebenen und einen abgekürzten Namen.
- Folgende bei Landtagswahlen erzielten Ergebnisse werden gespeichert:
- das Jahr, in dem die Wahl stattfand,
- der Stimmenanteil je Partei,
- die Anzahl der Sitze, welche eine Partei erringen konnte.
- Entwerfen Sie ein geeignetes ER-Modell mit passenden Relationen, das die Attribute, die Schlüssel und die Kardinalitäten enthält.
- Welche Zugriffsrechte benötigt ein Mitarbeiter des Instituts, um die Daten nach der nächsten Wahl erfassen zu können?
Aus Sicherheitsgründen muss man sich an der Datenbank anmelden, um den Datensatz zu bearbeiten. Das Kennwort darf nur die Kleinbuchstaben a..z enthalten und wird nach Vigenère verschlüsselt auf dem Server abgelegt: Der Schlüssel lautet „abi“.
- Verschlüsseln Sie das Kennwort „wahlurne“ des Mitarbeiters.
- Erklären Sie, wie man einen mit der Vigenère-Chiffre verschlüsselten Text bei bekannter Schlüssellänge vollständig entschlüsseln kann. (11 VP)
I B2 Automaten und formale Sprachen
B2.1 Gegeben ist der endliche Automat M mit dem Eingabealphabet Σ = {0,1} durch das
folgende Zustandsübergangsdiagramm:
- Überprüfen Sie, ob M die Wörter
i. 1100
ii. 1011
akzeptiert und geben Sie jeweils die Folge der durchlaufenen Zustände an.
- Geben Sie ein Wort der Länge 5 an, das der Automat nicht akzeptiert.
- Beschreiben Sie die Menge der Wörter, die der Automat akzeptiert.
- Überführen Sie den Automaten in eine reguläre Grammatik, welche die von ihm erkannte Sprache erzeugt. (5 VP)
B2.2 Gegeben ist das folgende Syntaxdiagramm der Sprache L:
S X Y
- Geben Sie drei Wörter an, die in L liegen.
- Erläutern sie an Hand des Syntaxdiagramme die Begriffe Terminalsymbol und Nichtterminalsymbol.
- Geben Sie an, welche Sprache L dadurch erzeugt wird.
- Begründen Sie, dass Wort „aabbaa“ nicht in L liegt.
- Entwerfen Sie einen endlichen Automaten, der genau L akzeptiert.
- Geben Sie eine reguläre Grammatik an, die L erzeugt. (7 VP)
II B2 Automaten und formale Sprachen
B2.1 Ein einfacher Fahrscheinautomat kann wie folgt beschrieben werden:
- Eine Fahrkarte für Erwachsene (E) kostet 4.- €, eine Kinderfahrkarte (K) 2.- €.
- In den Automaten können 1.- € und 2.- € Münzen eingeworfen werden.
- Werden mehr Münzen eingeworfen, verbleiben diese zunächst im Automaten.
- Drückt man den Knopf für die Geldrückgabe (R), erhält man alle Münzen zurück.
- Wählt man eine der Fahrkartentasten (E, K), so wird die entsprechende Fahrkarte ausgedruckt und eventuelles Rückgeld ausgeworfen, sofern genügend eingezahlt wurde. Andernfalls passiert nichts. Dieser Fahrscheinautomat wird durch einen endlichen Automaten modelliert.
- Geben Sie jeweils eine geeignete passende Eingabemenge E und Ausgabemenge A an.
- Welche Informationen über zurückliegende Handlungen, muss der Automat speichern, um korrekt zu reagieren? In welcher Form geschieht dies im Modell? Am Anfang (z. B. nach dem Einschalten) ist der Automat in einem definierten Anfangszustand z 0. Dieser ist zugleich auch ein Endzustand. Wenn man darauf verzichtet, die Art der eingeworfenen Münzen zu speichern, kann die Zustandsmenge S = {z 0 , z 1 , z 2 , z 3 , z 4 , z 5 } mit den weiteren Zuständen z 1 bis z 5 wie folgt definiert werden: z 0 : kein Geld eingeworfen z 1 : 1.- € eingeworfen z 2 : 2.- € eingeworfen z 3 : 3.- € eingeworfen z 4 : 4.- € eingeworfen z 5 : um 1.- € überzahlt (weitere Überzahlungen sollen nicht möglich sein) Jedem Zustand s ∈ S und jeder Eingabe e ∈ E wird durch die Übergangsfunktion δ ein neuer Zustand s' ∈ S zugeordnet.
- Geben Sie die Übergangsfunktion δ in Form einer Tabelle an.
- Zeichnen Sie das vollständige Zustandsübergangsdiagramm für diesen Fahrscheinautomaten, das auch die Ausgaben enthält.
- Begründen Sie, warum es sich bei diesem Modell eines Fahrkartenautomaten um einen deterministischen endlichen Automaten handelt. (10 VP)
(bitte wenden )
B2.1 Der Vorstand einer Fußballvereins möchte jeglichen Diskussionen über eine mögliche Trainerentlassung nach verlorenen Spielen entgegenwirken. Er hat daher ein Regelwerk aufgestellt, aus dem eindeutig hervorgeht, unter welchen Bedingungen ein Trainer ent- lassen wird. Der folgende Übergangsgraph eines endlichen Automaten modelliert dieses Regelwerk. Das Eingabealphabet ist Σ = {g, u, v}. (g: gewonnen, u: unentschieden, v: verloren)
- Geben Sie eine Folge von Zeichen aus dem Eingabealphabet Σ der Länge 10 an, die von dem Automaten akzeptiert wird.
- Erläutern Sie anhand des Übergangsgraphen, unter welche Bedingungen der Trainer entlassen wird.
- Entwickeln Sie eine Grammatik, die genau diejenigen Wörter erzeugt, die von dem obigen Automaten akzeptiert werden. Bestimmen sie für das Wort vvguvv die Ableitung aus dieser Grammatik.
Der Vereinsvorstand musste zurücktreten. Der neue Vorstand möchte ein neues Regel- werk für eine Trainersuspendierung einführen. Man ist sich einig, dass jeder der beiden folgenden Umstände zu einer Trainerentlassung führt.
- Das Team hat dreimal hintereinander verloren.
- Das Team hat viermal hintereinander nicht gewonnen.
- Geben Sie zu jedem der beiden Fälle eine Spielergebnisfolge aus {g, u, v] an, die zu einer Trainerentlassung nach 6 Spielen führt.
- Entwerfen Sie den Übergangsgraphen eines deterministischen endlichen Automaten, der das Eingabealphabet Σ = {g, u, v] besitzt und genau die Folgen von Spielausgängen akzeptiert, die zu einer Trainerentlassung nach dem neuen Regelwerk führen?
- Geben Sie für die Abarbeitung der folgenden Eingaben die zugehörigen Zustandsfolgen an und geben Sie begründet an, ob der Automat jeweils die Eingabe akzeptiert oder nicht. i: gugvvv ii: uvugvvu (10 VP)
B3.1 Der Softwareentwickler für dieses Projekt schlägt vor, die Züge auf Grundlage des ADT Stapel (Stack) zu implementieren und für die Gleise die Datenstruktur Binärbaum zu verwenden. Das folgende UML-Diagramm stellt die dafür verwendeten Klassen dar:
- Beschreiben Sie die grundlegenden Eigenschaften eines Stapels und eines Binärbaums und erläutern Sie, warum der Vorschlag des Entwicklers sinnvoll ist. Erläutern Sie anschließend, wie Anhängen und Abkoppeln eines Waggons an einen Zug realisiert werden können.
- Die Methode getLaenge():int der Klasse Zug soll die Anzahl der Waggons zurück- liefern. Implementieren Sie diese Methode auf der Basis des dargestellten Klassendia- gramms. Sie können davon ausgehen, dass alle anderen Methoden schon korrekt implementiert sind. (6 VP)
B3.2 Die Gleise des Rangierbahnhofs werden als Binärbaum gespeichert. Jeder innere Knoten enthält eine Weiche als „content“. An den Blättern können Zug-Objekte (oder nichts) gespeichert sein.
Die Implementation der Klasse Rangierbahnhof beruht auf folgendem Pseudocode. Er beschreibt einen Ausschnitt des Konstruktors sowie den Algorithmus einer Methode, die die Weichen so stellt, dass sie zu einem freien Gleis führen:
t1 = neuer BinaryTree(leer)
t2 = neuer BinaryTree(leer)
t3 = neuer BinaryTree(leer)
t4 = neuer BinaryTree(leer)
t5 = neuer BinaryTree(leer)
t6 = neuer BinaryTree(neue Weiche(), t1, t2)
t7 = neuer BinaryTree(neue Weiche(), t3, t4)
t8 = neuer BinaryTree(neue Weiche(), t7, t5)
gleise = neuer BinaryTree(neue Weiche(), t8, t6)
Methode stelleWeichenAufFreiesGleis(b:BinaryTree):boolean
wenn (b.getLeft() == leer)
wenn (b.getContent() == leer)
gib wahr zurück
sonst
gib falsch zurück
ende wenn
sonst
w = (Weiche) b.getContent()
wenn (stelleWeichenAufFreiesGleis(b.getRight()) == wahr )
w.setGerade( wahr )
gib wahr zurück
sonst
wenn (stelleWeichenAufFreiesGleis(b.getLeft()) == wahr )
w.setGerade( falsch )
gib wahr zurück
sonst
gib falsch zurück
ende wenn
ende wenn
ende wenn
- Zeichnen Sie die Gleisanlage auf, die durch diesen Konstruktor modelliert wird.
- Erläutern Sie, wie die Methode stelleWeichenAufFreiesGleis(..) dafür sorgt, dass die Weichen so gestellt werden, dass sie zu einem freien Gleis führen (um eine neue Lok dort zu platzieren). Erläutern Sie, was passiert, wenn es kein freies Gleis mehr gibt.
- Implementieren Sie die Methode parkeZug(z:Zug), die dafür sorgt, dass der Zug auf dem Gleis (d.h. Blatt des Gleis-Baumes) als content gespeichert wird, das durch die aktuelle Weichenstellung vorgegeben ist.
- Untersuchen Sie, welches Laufzeitverhalten für die Methode parkeZug(..) im schlimmsten Fall bei n Gleisen zu erwarten ist. Untersuchen Sie, welchen Einfluss die Struktur der Gleisanlage auf Ihre Aussage hat.
(11 VP)
B3.3 Die Methode stelleWeichenZumZug(b:BinaryTree; ziel:String):
boolean stellt die Weichen so, dass ein Zug mit dem angegeben Ziel erreicht wird.
Gibt es keinen derartigen Zug, gibt die Methode false zurück.
Die Methode lasseWaggonRollen() hängt einen Waggon an den Zug an, der
durch die aktuelle Weichenstellung erreicht wird
- Implementieren Sie die Methode rangiereZug(z:Zug), die einen ganzen Zug abarbeitet und jeden Wagen des Zuges an den richtigen weiterführenden Zug anhängt. Sie können davon ausgehen, dass es für jedes Ziel eines Waggons einen
entsprechenden Zug im Rangierbahnhof gibt (d.h. stelleWeichenZumZug(..)
findet immer einen passende Weichenstellung). (3 VP)
- Erläutern Sie, welche Auswirkungen die Methoden push und pop auf einen Stapel haben. Begründen Sie, warum für diese Aufgabenstellung die Modellierung mit einem Stapel sinnvoll ist.
- Die Klasse Containerstapel besitzt die Methode getGesamtgewicht():double. Implementieren Sie diese Methode in der im Unterricht verwendeten Programmier- sprache. Beachten Sie dabei, dass hierfür keine zusätzlichen Attribute in die Klasse Containerstapel eingefügt werden dürfen.. (6 VP)
B3.2 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.
- Implementieren Sie die Methode aufladen(neu:Container) in der Klasse Schiff, die den übergebenen Container jeweils auf dem bisher leichteren der beiden Stapel ablegt, bzw. auf platzB, wenn beide Stapel gleich schwer sind. (4 VP)
B3.3 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. Algorithmus aufladen2(neu:Container)
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
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.
- Stellen Sie das Ergebnis des Ladevorgangs in einer Skizze dar.
- Analysieren Sie, welche Vorteile dieser Algorithmus gegenüber Ihrem Algorithmus aus Aufgabe B3.2 bietet.
- Beurteilen Sie, ob die experimentelle Lademethode in den Produktivbetrieb übernommen werden sollte. (6 VP)
B3.4 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.
- Beschreiben Sie, wie innerhalb der Methode die Verkettung der Objekte verändert werden muss, um ein neues Objekt innerhalb einer verketteten Liste einzufügen. Veranschau- lichen Sie die Beschreibung unter Verwendung einer aussagekräftigen Skizze. (4 VP)