Aufgabe Vorschlag AJ - 3.2-3.4 - Methoden implementieren… · Abitur Hessen Informatik GK 2022
Thema: Methoden mit Feldern implementieren und analysieren · Aus der Prüfung GK (2022)
Aufgabenstellung
Ausleihsystem StadtRad
Eine Großstadt hat ein Ausleihsystem namens StadtRad für Fahrräder eingeführt. Nach dem Motto „Aufsteigen und losfahren“ soll für die Bürgerinnen und Bürger an zahlreichen Leihstationen im gesamten Stadtgebiet die Möglichkeit bestehen, ein Rad auszuleihen und dieses wieder an derselben oder einer anderen Station zurückzugeben. Jede Station verfügt dabei über Stellplätze, an denen die Räder angeschlossen werden. Die Anzahl der Stellplätze ist an jeder Station gleich.
Zur Verwaltung des StadtRad-Ausleihsystems
erhalten die Stationen eine eindeutige Stationsnummer,
muss jeder Kunde im System registriert sein; er ist dann über seine Kundennummer zu identifizieren,
verfügt jedes Rad über eine eindeutige Radnummer, die bei der Ausleihe beim Kunden eingetragen wird. Ist ein Rad gerade nicht verliehen, ist die Radnummer beim Stellplatz eingetragen, an dem das Rad angeschlossen ist.
Den Kunden wird eine App zur Verfügung gestellt, mit der sie sich im System registrieren, die Verfügbarkeit von Rädern an einer Station überprüfen sowie deren Ausleihe und Rückgabe durchführen können.
Material 1
GUI der StadtRad-App
Material 2
Klassendiagramm der Klasse Station
Material 3
Methode zurückgeben(...) der Klasse Verwaltung
01 public boolean zurückgeben(int KundenNr, int StationsNr) {
02 Kunde einKunde = gibKunde(KundenNr);
03 Station eineStation = gibStation(StationsNr);
04 if (einKunde != null && eineStation != null) {
05 int RadNr = einKunde.getAusgeliehenesRad();
06 if (eineStation.abstellen(RadNr) == true) {
07 einKunde.setAusgeliehenesRad(0);
08 einKunde.setEndzeit();
09 einKunde.berechneGebühren();
10 return true;
11 }
12 }
13 return false;
14 }
Material 4
Methoden suche(...) und suche2(...)
01 public int suche(String Nachname, String Vorname) {
02 return suche2(0, AnzahlKunden - 1, Nachname, Vorname);
03 }
04
05 private int suche2(int a, int b, String Nachname, String Vorname) {
06 if (b < a)
07 return 0;
08 int m = (a + b) / 2;
09 if (Kunden[m].getNachname().equals(Nachname) &&
10 Kunden[m].getVorname().equals(Vorname))
11 return Kunden[m].getKundenNr();
12 if (Kunden[m].getNachname().compareTo(Nachname) > 0 ||
13 Kunden[m].getNachname().equals(Nachname) &&
14 Kunden[m].getVorname().compareTo(Vorname) > 0)
15 return suche2(a, m - 1, Nachname, Vorname);
16 else
17 return suche2(m + 1, b, Nachname, Vorname);
18 }
3.2
Implementieren Sie den Konstruktor der Klasse Station. Er soll unter anderem alle Stellplätze mit 0 initialisieren. (4 BE)
public Station(int StationsNr) {
}
3.3
Analysieren Sie die Methode zurückgeben(...) der Klasse Verwaltung in Material 3. Dabei ordnet die Methode abstellen(...) einem Stellplatz einer Station ein Rad zu, falls dort noch ein Stellplatz frei ist. (7 BE)
3.4
Implementieren Sie die Methode abstellen(...) der Klasse Station, die folgende Aufgaben erledigen soll:
Es wird überprüft, ob sich an der Station noch ein freier Stellplatz zum Abstellen befindet.
Wird ein freier Stellplatz ermittelt, wird bei diesem die Radnummer eingetragen und der Wert true zurückgegeben.
Ansonsten wird der Wert false zurückgegeben.
[7 BE]
public boolean abstellen(int RadNr) {
}

Lösung
Nach den offiziellen Korrekturhinweisen
3.2 Implementieren Sie den Konstruktor der Klasse Station. Er soll unter anderem alle Stellplätze mit 0 initialisieren.
Lösung: ```java for (int i = 0; i < Stellplatz.length; i++) { Stellplatz[i] = 0; } this.StationsNr = StationsNr; ```
3.3 Analysieren Sie die Methode zurückgeben(...) der Klasse Verwaltung in Material 3.
Lösung: Die öffentliche Methode zurückgeben(...) hat die Parameter KundenNr und StationsNr vom Datentyp int. Sie gibt einen Wert des Datentyps boolean zurück. In Zeile 2 wird mit dem Aufruf gibKunde(KundenNr) der Kunde zur KundenNr ermittelt und in der lokalen Variablen einKunde gespeichert. In Zeile 3 wird mit dem Aufruf gibStation(StationsNr) die Station zur StationsNr ermittelt und in der lokalen Variablen eineStation gespeichert. Mit der Bedingung in der if-Anweisung in Zeile 4 wird geprüft, ob zu den Parameterwerten KundenNr und StationsNr jeweils ein Kunde und eine Station gefunden wurden. Ist dies der Fall, wird die Radnummer des vom Kunden ausgeliehenen Rades ermittelt und in der lokalen Variablen RadNr gespeichert. In Zeile 6 wird mit der Bedingung in der if-Anweisung überprüft, ob der Aufruf der Methode abstellen(...) durch das Objekt eineStation bei Übergabe von RadNr den Wert true zurückgibt. In diesem Fall konnte das Rad an einem freien Stellplatz der Station abgestellt werden. Beim Kunden wird dann die RadNr auf den Wert 0 gesetzt, die Endzeit gesetzt, eine Methode zur Gebührenberechnung aufgerufen und true zurückgegeben. Anderenfalls liefert die Methode zurückgeben(...) dann den Rückgabewert false.
3.4 Implementieren Sie die Methode abstellen(...) der Klasse Station.
Lösung: ```java int i = 0; while (i < Stellplatz.length && Stellplatz[i] != 0) { i++; } if (i < Stellplatz.length) { Stellplatz[i] = RadNr; return true; } else { return false; } ```
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 AJ - Aufgabe 2 · GK 2021 ›