Aufgabe 1 - Modellierung · Abitur NRW Informatik LK · Nachtermin 2022

Thema: Objektorientierte Modellierung mit Implementationsdiagrammen · Aus der Prüfung LK · Nachtermin (2022)

Aufgabenstellung

Aufgabenstellung:

Auf einem Biobauernhof werden die geernteten Kartoffeln in einer hofeigenen Verpackungsstation abgepackt. Ein Förderband transportiert die Kartoffeln zu einer Sortieranlage, die jede Kartoffel danach über eine Rutsche in eine passende Packung leitet. Sobald eine Packung gefüllt ist, wird sie verladen und durch eine neue, leere Packung ersetzt. Abbildung 1 stellt die Verpackungsstation schematisch dar.

Schwierig ist vor allem, für die jeweils nächste Kartoffel auf dem Förderband die passende Packung zu bestimmen. Weil Kartoffeln Naturprodukte sind, unterscheiden sie sich stark in ihrer Größe, sodass nicht alle Packungen exakt dasselbe Gewicht erreichen können.

Einerseits muss eine Packung ein festgelegtes Minimalgewicht erreichen, um als voll zu gelten. Andererseits soll dieses Minimalgewicht möglichst knapp überschritten werden, weil dem Bauernhof sonst unnötig Verluste entstehen.

Nachfolgend wird ein Programm betrachtet, das diese Verpackungsstation simuliert. Es setzt die in Abbildung 2 dargestellte Teilmodellierung um.

a)

Erläutern Sie, in welchen Beziehungen die Klassen der Modellierung in Abbildung 2 zueinander stehen. [4 Punkte]

Begründen Sie, weshalb es zweckmäßig ist, dass Objekte vom Typ Packung die Objekte vom Typ Kartoffel in einer Liste verwalten. [3 Punkte]

d)

Da die Verpackungsstation sich bewährt hat, sollen neben Verbesserungen der Algorithmen auch neue Funktionen hinzukommen. Dazu muss die Modellierung in Abbildung 2 angepasst werden.

Folgende Anforderungen sollen ergänzt werden:

i. Für jede Packung soll der Zeitpunkt gespeichert werden, wann sie fertig gepackt wurde. Dieser Zeitpunkt soll natürlich auch abrufbar sein.

ii. Neben normalen Packungen soll es nun auch noch sogenannte Premiumpackungen geben. Neben den normalen Funktionalitäten soll bei Premiumpackungen das Minimalgewicht individuell gesetzt werden können. Darüber hinaus soll das Durchschnittsgewicht der Kartoffeln abgefragt werden können.

iii. Bisher ist das Versandlager nur eine Liste von Packungen. Das soll sich ändern. In Zukunft soll das Versandlager nicht nur Packungen aufnehmen und zurückliefern, sondern auch Gesamtgewicht und Anzahl aller Packungen melden können. Außerdem soll abfragbar sein, ob es leer ist.

Modellieren Sie die oben aufgeführten Anforderungen als Erweiterung der Modellierung aus Abbildung 2. Stellen Sie dabei ausschließlich die Änderungen und Ergänzungen als Implementationsdiagramm dar. [6 Punkte]

Erläutern Sie, auf welche Weise jede der genannten Anforderungen in Ihrem Implementationsdiagramm umgesetzt wurde. [6 Punkte]

e)

Während der Erweiterung des Programms kommt einem Programmierer eine Idee. Die Anzahl der Kartoffeln auf dem Förderband ist zwar nicht konstant, aber auf Grund der Größe des realen Förderbandes zumindest nach oben begrenzt. Es gibt also eine maximale Anzahl an Kartoffeln, die auf dem Förderband liegen können. In so einem Fall, so meint er sich zu erinnern, wählt man eigentlich eine statische Datenstruktur, z. B. ein Feld (Array).

Beurteilen Sie den Vorschlag des Programmierers, das Förderband statt mit einer Schlange mit einem Feld (Array) umzusetzen, und erläutern Sie dabei gegebenenfalls Vor- und Nachteile beider Varianten. [6 Punkte]

Aufgabenstellung: Aufgabe 1 - Modellierung · Abitur NRW Informatik LK · Nachtermin 2022

Lösung

Nach den offiziellen Korrekturhinweisen

a) Erläutern Sie, in welchen Beziehungen die Klassen der Modellierung in Abbildung 2 zueinander stehen.

Lösung: Ein Objekt der Klasse Verpackungsstation verwaltet Objekte der Klasse Packung und Objekte der Klasse Kartoffel. Die Objekte der Klasse Kartoffel werden in einer über das Attribut foerderband referenzierten Schlange über dem Datentyp Kartoffel verwaltet. Die Objekte der Klasse Packung werden einerseits in der über das Attribut versandlager referenzierten Liste über dem Datentyp Packung verwaltet. Andererseits verwaltet ein Objekt der Klasse Verpackungsstation auch ein Feld (Array) über dem Datentyp Packung. Ein Objekt der Klasse Packung verwaltet Objekte der Klasse Kartoffel in der durch das Attribut kartoffeln referenzierten Liste über dem Datentyp Kartoffel.

a) Begründen Sie, weshalb es zweckmäßig ist, dass Objekte vom Typ Packung die Objekte vom Typ Kartoffel in einer Liste verwalten.

Lösung: Im Einleitungstext ist erläutert, dass die Kartoffeln ein unterschiedliches Gewicht besitzen. Somit ist die Anzahl der Kartoffeln, welche in einer Packung verpackt werden, zum Zeitpunkt der Erzeugung des Objekts der Klasse Packung unbestimmt. Gleiches gilt auch für die maximale Anzahl an Kartoffeln, die in einer Packung Platz haben. Somit bietet sich die Verwaltung der Kartoffeln in einer Liste an.

d) Modellieren Sie die oben aufgeführten Anforderungen als Erweiterung der Modellierung aus Abbildung 2. Stellen Sie dabei ausschließlich die Änderungen und Ergänzungen als Implementationsdiagramm dar.

Lösung: Erweitertes Implementationsdiagramm: - Klasse `Packung` erhält das Attribut `-zeitpunkt: String` sowie die Methoden `+setzeZeitpunkt(pZeitpunkt: String)` und `+gibZeitpunkt(): String`. - Klasse `Premiumpackung` erbt von `Packung`, besitzt das Attribut `-minimalgewicht: int`, den Konstruktor `+Premiumpackung(pMinimalgewicht: int)` sowie Methoden `+ermittleDurchschnittsgewicht(): double` und `+gibMinimalgewicht()`. - Klasse `Versandlager` besitzt `+Versandlager()`, `+lagereEin(pPackung: Packung)`, `+gibPackungen(): List<Packung>`, `+ermittleGesamtgewicht(): int`, `+ermittlePackungsanzahl(): int`, `+istLeer(): boolean` und verwaltet eine `List<Packung>` über `-packungen`. - Klasse `Verpackungsstation` referenziert das Objekt über `-versandlager` auf `Versandlager`.

d) Erläutern Sie, auf welche Weise jede der genannten Anforderungen in Ihrem Implementationsdiagramm umgesetzt wurde.

Lösung: i. Der Zeitpunkt der endgültigen Verpackung wird in Form eines Strings gespeichert. Die Methoden setzeZeitpunkt und gibZeitpunkt ermöglichen das Lesen und Setzen des Zeitpunkts. ii. Die Klasse Premiumpackung erbt alle Attribute und Methoden der Klasse Packung und hat damit die gleiche Funktionalität wie eine normale Packung. Über das Attribut minimalgewicht, welches über den Aufruf des Konstruktors gesetzt wird, kann nun das individuelle Minimalgewicht gespeichert werden. Die alte Methode gibMinimalgewicht wird nun überschrieben und liefert so das individuelle Minimalgewicht zurück. Der Forderung, dass das Durchschnittsgewicht der Kartoffeln einer Packung abgefragt werden kann, wird durch eine weitere Methode ermittleDurchschnittsgewicht Rechnung getragen. iii. Da das Versandlager nun eine eigene Funktionalität besitzen soll, die über die Funktion einer Liste hinausgeht, wurde eine neue Klasse Versandlager erstellt, welche über Methoden verfügt, um neue Objekte der Klasse Packung aufzunehmen (lagereEin) sowie zurückzuliefern (gibPackungen). Die Methoden ermittleGesamtgewicht und ermittlePackungsanzahl ermöglichen es, Gesamtgewicht und Anzahl aller Packungen melden zu können. Die Methode istLeer ermöglicht die Abfrage, ob das Versandlager leer ist.

e) Beurteilen Sie den Vorschlag des Programmierers, das Förderband statt mit einer Schlange mit einem Feld (Array) umzusetzen, und erläutern Sie dabei gegebenenfalls Vor- und Nachteile beider Varianten.

Lösung: Eine Verwaltung der Kartoffel-Objekte des Förderbandes in Form eines Feldes (Array) ist nicht sinnvoll. Zwar ist das Argument des Programmierers richtig, da es tatsächlich immer nur eine Maximalanzahl an zu verwaltenden Kartoffel-Objekten gibt, aber die Verwendung der Datensammlung foerderband folgt der Idee einer Schlange, d. h., es werden stets auf der einen Seite der Datenstruktur Objekte entnommen und auf der anderen Seite der Datenstruktur Objekte hinzugefügt. Würde man die Datensammlung foerderband als Feld gestalten, so müsste man sich ständig die Information darüber merken, an welcher Stelle im Feld das momentan „vorderste“ Objekt liegt und an welcher Stelle im Feld das momentan „letzte“ Objekt liegt. Alternativ könnte man sich auch nur das „letzte“ Objekt merken und die Objekte innerhalb des Feldes bei jeder Entnahmeaktion so verschieben, dass nur an einer Seite des Feldes null-Referenzen entstehen und das „vorderste“ Objekt stets bei Index 0 ist. Da jedoch häufig Objekte aus der Datensammlung foerderband entnommen werden, ist dies mit einigem Aufwand verbunden. Eine Lösung mit einem Feld ist also möglich, der zusätzliche Aufwand ist aber nicht gerechtfertigt.

Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium

Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.

‹ Aufgabe 2 - Objektorientierte Modellierung · LK · Haupttermin 2022 · Aufgabe 2 - Modellierung · LK · Nachtermin 2022 ›

Mehr Aufgaben zu Objektorientierte Modellierung mit Implementationsdiagrammen