Aufgabe Vorschlag B - 1 - UML-Klassendiagramme und Objekt… · Abitur Hessen Technische Informatik LK 2022

Thema: UML-Klassendiagramme und Objektdiagramme · Aus der Prüfung LK (2022)

Aufgabenstellung

Rasenmähroboter

Roboter, die selbstständig den Rasen mähen können, sogenannte Rasenmähroboter, erfreuen sich in Deutschland immer größerer Beliebtheit. Sie werden nicht ferngesteuert, sondern mähen autonom die vorgegebene Fläche in geraden Bahnen. Die meisten Systeme nutzen zum Abgrenzen der zu mähenden Fläche ein Begrenzungskabel, durch das elektrische Signale geleitet werden, die der Rasenmähroboter beim Überfahren sensorisch erfassen kann (Material 1). Erkennt er die Begrenzung, dreht sich der Rasenmähroboter in einem zufälligen Winkel vom Kabel weg und fährt erneut in einer geraden Bahn weiter, bis er wieder an eine Begrenzung stößt. Nach diesem sogenannten Chaosprinzip erreicht und mäht der Rasenmähroboter, über eine gewisse Zeit betrachtet, alle Bereiche der Rasenfläche. Der Rasenmähroboter ist akkubetrieben und lädt sich selbstständig an einer in der Rasenfläche befindlichen Ladestation wieder auf. Die abgeschnittenen Grashalme werden nicht aufgefangen, sondern fallen einfach zu Boden.

1 Der Hersteller eines Rasenmähroboters plant ein Simulationsprogramm zu entwerfen, um den Fahralgorithmus des Rasenmähroboters zu testen und zu verbessern. Es haben zwei Personengruppen Zugriff auf dieses Simulationsprogramm: Die Entwickler oder Entwicklerinnen (im Folgenden Entwickler genannt) und die Simulatoren oder die Simulatorinnen (im Folgenden Simulatoren genannt). Die Entwickler erstellen neue Algorithmen oder optimieren bereits vorhandene Algorithmen. Die Simulatoren können Simulationen entwerfen, durchführen und löschen. Um eine Simulation durchzuführen muss sie zunächst entworfen werden, sofern sie noch nicht vorhanden ist. Zum Entwerfen einer Simulation ist es zwingend nötig, vorher einen Rasenmähroboter und eine Rasenfläche anzulegen. Außerdem können die Simulatoren vor dem Durchführen einer Simulation einen Algorithmus importieren.

Die zentrale Klasse Simulation ist vorgegeben (Material 2). Eine Simulation kann mehrere Algorithmen verwalten, während der einzelne Algorithmus in mehreren Simulationen verwendet werden kann. Die abstrakte Klasse Algorithmus beinhaltet die Informationen über den Namen des Algorithmus und den Namen des Erstellers sowie einen Wahrheitswert, ob sich der Algorithmus derzeit im Einsatz befindet. Des Weiteren ist ein statisches Attribut idAlgo vom Datentyp int enthalten, welches als Objektzähler fungiert. Zusätzlich liegt ein Attribut vom Typ String mit dem Bezeichner algorithmus vor, in dem die Fahrbefehle des Algorithmus verkettet als String gespeichert werden. Die Klasse Algorithmus beinhaltet Bewegungsmethoden, also je eine void-Methode für die Vorwärts- und Rückwärtsbewegung und je eine Methode für das Links- bzw. Rechtsdrehen. Die Methoden für die Vorwärts- und Rückwärtsbewegung erhalten als Parameter einen int-Parameter zeitS für die Angabe der Fahrzeit in Sekunden. Die Drehmethoden bekommen beim Aufruf einen int-Parameter mit einem Winkel übergeben. Zuletzt zählt noch die Methode pruefeHindernisVorne zu den Fahrbefehlen. Diese überprüft, ob sich vor dem Rasenmähroboter ein Hindernis befindet und gibt einen Wahrheitswert zurück. Eine weitere Methode zufallswinkel gibt nach Aufruf einen int-Wert zwischen 0 und 180 Grad zurück. Die zwei Klassen rekursiverAlgorithmus und iterativerAlgorithmus erben von der Klasse Algorithmus. Für rekursive Algorithmen wird in einem Attribut die Rekursionstiefe gespeichert. Für iterative Algorithmen wird in einem Attribut die Anzahl der Schritte gespeichert.

Material 1: Schaubild Funktion Rasenmähroboter

Material 2: UML-Klassendiagramm

1.2 Ergänzen Sie das UML-Klassendiagramm in Material 2 entsprechend der in Aufgabe 1 stehenden Beschreibung. Modellieren Sie dazu geeignete Attribute, Datentypen, Multiplizitäten, Methoden und Navigierbarkeiten im Design-Modell. [10 BE]

1.3 Im gegenwärtigen Zustand wurde im System noch kein Algorithmus erstellt. Der Rasenmähroboter mit dem Namen „EasyCutter42“, der Typennummer „1337“, mit vollem Akku, wobei die Integer-Werte 0-100 als Prozentwerte zu betrachten sind, und einer Messeranzahl von 3 wurde jedoch bereits angelegt. Zusätzlich existieren folgende zwei Rasenflächen:

– Rasenfläche1: Länge 10 m, Breite 55 m, eingefasst

– Rasenfläche2: Länge 4 m, Breite 9 m, offen

Die Simulation trägt den Namen „EpsilonP4“ und wurde von Edwin B. Budding am 05.02.2021 erstellt.

Überführen Sie den oben beschriebenen Sachverhalt in ein Objektdiagramm. [7 BE]

Aufgabenstellung: Aufgabe Vorschlag B - 1 - UML-Klassendiagramme und Objekt… · Abitur Hessen Technische Informatik LK 2022

Lösung

Nach den offiziellen Korrekturhinweisen

1.2 UML-Klassendiagramm ergänzen und 1.3 Objektdiagramm modellieren

Lösung: Teilaufgabe 1.2 (Klassendiagramm): - Abstrakte Klasse `<<abstract>> Algorithmus` mit Attributen: `- name: String`, `- ersteller: String`, `- derzeitImEinsatz: boolean`, `- idAlgo: int` (statisch/unterstrichen), `- algorithmus: String` - Methoden von `Algorithmus`: `+ algorithmusExportieren(): void`, `+ fahreVorwaerts(zeitS: int): void`, `+ fahreRueckwaerts(zeitS: int): void`, `+ dreheLinks(winkel: int): void`, `+ dreheRechts(winkel: int): void`, `+ pruefeHindernisVorne(): boolean`, `+ zufallswinkel(): int` - Spezialisierung: `RekursiverAlgorithmus` erbt von `Algorithmus`, Attribut `- rekursionstiefe: int` - Spezialisierung: `IterativerAlgorithmus` erbt von `Algorithmus`, Attribut `- anzahlSchritte: int` - Assoziation zwischen `Simulation` und `Algorithmus`: gerichtet (`verwaltet`), Multiplizitäten `*` (bei Simulation) zu `1..*` (bei Algorithmus). Teilaufgabe 1.3 (Objektdiagramm): - Instanz `epsilonP4 : Simulation` mit `name = "EpsilonP4"`, `ersteller = "Edwin B. Budding"`, `datum = 05.02.2021` - Verknüpft mit Instanz `easyCutter42 : Rasenmähroboter` mit `name = "EasyCutter42"`, `typennummer = 1337`, `akkustand = 100`, `messeranzahl = 3` - Verknüpft mit Instanz `rasenfläche1 : Rasenfläche` mit `name = "Rasenfläche1"`, `laenge = 10`, `breite = 55`, `eingefasst = true` - Verknüpft mit Instanz `rasenfläche2 : Rasenfläche` mit `name = "Rasenfläche2"`, `laenge = 4`, `breite = 9`, `eingefasst = false` - Alle Objektbezeichner sind syntaktisch korrekt unterstrichen; es existiert kein Algorithmus-Objekt.

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 Vorschlag A - 1 - UML-Klassendiagramme und Objekt… · LK 2022 · Aufgabe Vorschlag C - 1 - UML-Klassendiagramme und Objekt… · LK 2022 ›

Mehr Aufgaben zu UML-Klassendiagramme und Objektdiagramme