faecher:informatik:oberstufe:modellierung:2019a:start

Whalewatching Events

1) 2)

Eine Eventfirma, die Whalewatching betreibt, möchte ihre Touren mit einer neuen Software verwalten. Bei Touren können Touristen verschiedene Tiere beobachten: Grauwale, Buckelwale, Fleckendelfine und Große Tümmler (eine weitere Delfinart).

Grauwale und Buckelwale sind Bartenwale, sie treten meist als Einzeltiere auf, Delfine hingegen in Gruppen. Für jede Tierart wird festgehalten, ob sie unter Artenschutz steht. Für Einzeltiere werden auch ein Spitzname und das Alter aufgenommen.

Aus Marketinggründen sollen sich die Preise für eine Tour zukünftig nach den gesichteten Tieren richten. Dabei rechnet die Firma folgendermaßen: Jedes gesichtete Meerestier recht- fertigt einen bestimmten Preis. Für Tümmler wird 1EUR pro Tier der Gruppe veranschlagt, bei Fleckendelfinen 2EUR pro Tier der Gruppe, bei Grauwalen 100EUR und bei Buckelwalen 120EUR.

Der Preis für jede Tour beträgt aber mindestens 50EUR und höchstens 150EUR.

Derzeit stehen Buckelwale, Grauwale und Fleckendelfine unter Artenschutz. Für diese gelten besondere Beobachtungsbedingungen: Sollte eine Beobachtungstour auf einen jungen Buckel- oder Grauwal treffen, wird die Beobachtung dieses Tieres abgebrochen. Die Altersgrenzen richten sich hier nach der Art: Buckelwale bis zu einem Alter von 3 Jahren, Grauwale bis zu einem Alter von 2 Jahren. Bei Gruppen von geschützten Tieren wird abgebrochen, wenn die Gruppe fünf oder weniger Tiere umfasst.

Bei der Umsetzung der Software wird eine Klasse Tour eingeführt, die die beobachteten Sichtungen speichert. Darüber hinaus wird es unter anderem für jede beobachtbare Tierart eine eigene Klasse geben.

(T1A1)

Stellen Sie die Beziehungen zwischen den Klassen Bartenwal, Buckelwal, Delfin, Fleckendelfin, Grauwal, Tier, Tour und Tuemmler in einem Klassendiagramm dar. Die Klassen sollen nur den Klassennamen, keine Attribute und Methoden enthalten. Gib außerdem an, ob bzw. welche Klassen abstrakt sind und begründe deine Entscheidung.

  • Gib an, in welchen Klassen die Attribute alter, spitzname und gruppengroesse deklariert werden müssen. Begründe deine Entscheidung.
  • Implementiere einen Konstruktor für die Klasse Delfin und einen Konstruktor für

die Klasse Tuemmler. Dem Konstruktor der Klasse Tuemmler darf nur die Gruppengröße übergeben werden, weil Tümmler grundsätzlich nicht geschützt sind und immer 1EUR pro gesichtetes Tier kosten.

Wenn ein Boot sich einem oder mehreren Tieren nähert, wird die Methode beobachten der Klasse Tour aufgerufen. Diese prüft, ob das Boot sich weiter den Tieren nähern darf. Dazu ruft sie die Methode darfBeobachtetWerden() des gesichteten Tieres auf. Wenn die Annäherung erlaubt ist, trägt die Methode beobachten das Tier in das Array sichtungen ein; dieses Array bietet dabei immer genügend Platz. Die Methode gibt zurück, ob die Beobachtung erlaubt ist.


(T2A1)

  • Erläutere, warum der Methode beobachten(t: Tier): boolean der Klasse Tour sowohl Grauwal- als auch Tuemmler-Objekte übergeben werden können.
  • Implementiere die Methode beobachten(t: Tier): boolean der Klasse Tour.

Die Methode darfBeobachtetWerden(): boolean gibt in der Klasse Tier immer true zurück. Da Fleckendelfine aus Artenschutzgründen nicht immer beobachtet werden dürfen, muss die Methode entweder in der Klasse Delfin oder in der Klasse Fleckendelfin überschrieben werden.

  • Vergleiche die beiden Varianten in Bezug auf Erweiterbarkeit um weitere Delfinarten oder Änderungen der Artenschutzbestimmungen bei bestehenden Tierarten.

Nach Beendigung der Tour soll der Preis nach den oben beschriebenen Regeln berechnet werden.

  • Implementiere die Methode berechneTourPreis(): int in der Klasse Tour. Die Methode getPreis(): int in der Klasse Bartenwal liefert den Einzelpreis eines Tiers zurück, in der Klasse Delfin liefert sie den Preis der gesamten Gruppe

zurück.

Zum Abschluss sollen die Teilnehmer eine Urkunde erhalten. Dort wird unter anderem die Anzahl der beobachteten Delfine und die Spitznamen der gesichteten Bartenwale aufgeführt.

Beispiel:

Sie haben 17 Delfine gesichtet.
Sie haben die Bartenwale Wally Walter Walburga gesichtet.

Falls keine Delfine oder keine Bartenwale gesichtet werden, soll die entsprechende Zeile weggelassen werden. Du musst dich bei der Ausgabe nicht um Einzahl und Mehrzahl kümmern.


(T3A1)

Implementiere eine Methode druckeZertifikat(), die die gewünschte Ausgabe erzeugt.

Hinweis: Du kannst davon ausgehen, dass für alle Attribute die entsprechenden öffentlichen get-Methoden existieren. Verwende die Methode ausgeben(s: String), um eine Zeile Text ausdrucken zu lassen.


1)
Abituraufgabe 2019 in BW, Teil A
  • faecher/informatik/oberstufe/modellierung/2019a/start.txt
  • Zuletzt geändert: 16.12.2021 08:56
  • von sbel