Hans lernt für sein Abitur mit einer Lernkartei und verwendet dabei das folgende Verfahren:
Er schreibt die Inhalte auf Karteikarten, so dass jeweils auf der Vorderseite eine Frage und auf der Rückseite die zugehörige Antwort stehen.
Um regelmäßige Wiederholungen des Stofft sicherzustellen, verwendet er eine Box mit 5 hintereinander liegenden Fächern und stellt die Karten zunächst in das erste Fach.
In jeder Runde verteilt er die Karten eines Fachs neu: Er nimmt die vordere Karte heraus und liest die Frage. Kann er sie korrekt beantworten wird sie als letzte Karte in das nächste Fach gestellt.
Ist die Antwort nicht bekannt oder falsch, wird die Karte zurück in das erste Fach gestellt.
Richtig bzw. falsch beantwortete Karten stellt Hans in das entsprechende Fach immer hinter die bereits vorhandenen Karten. Das Verfahren wird so lange wiederholt, bis das erste Fach geleert und damit die erste Runde beendet ist.
Danach beginnt eine neue Runde mit den Karten aus dem zweiten Fach. Richtig beantwortete Karten werden wieder in das nächste Fach gelegt. Falsch beantwortete Karten kommen grundsätzlich zurück in das erste Fach und warten dort auf die nächste Runde.
Jede neue Runde beginnt im vordersten Fach, das Karten enthält, und endet mit der Beantwortung der letzten Frage dieses Fachs. Die Fragen in Fach 5 werden nicht mehr gestellt. Sobald alle Karten im 5. Fach angekommen sind, ist eine Lernsession beendet.
Das Vorgehen wird schematisch in der folgenden Abbildung dargestellt:
Es soll eine Smartphone-App entwickelt werden, die das Erstellen digitaler Karteikarten und die Umsetzung dieses Lernschemas unterstützen soll.
Hans Kartenkasten ist folgendermaßen gefüllt:
Er wendet das oben beschriebenen System an und hat gerade mit dem zweiten Fach begonnen.
Stelle den Verlauf der Fächerbelegung mit den Fragen 1 bis 3 dar, wenn Hans die nächsten Fragen
richtig
, richtig
, falsch
, falsch
, richtig
, falsch
beantwortet.
Für die Implementation soll der ADT "Schlange" verwendet werden. Als Grundlage dienst das folgende Implementationsdiagramm:
Schlange
.getAnzahl(): int
der Klasse Fach
soll die Anzahl der in diesem Fach enthaltenen Karten zurückliefern. Implementierediese Methode auf Basis der gegebenen Klasse LinkedList
. Du darfst davon ausgehen, dass alle Methoden der Klasse LinkedList
bereits korrekt implementiert sind.
Alternativ zur Auswahl der Schlange könnte man zur Modellierung eines Fachs auch den abstrakten Datentyp Stapel verwenden..
Stapels
.
In der Klasse Lernbox
gibt es ein Attribut faecher
, das die fünf Fächer der Lernbox
speichert. Der Konstruktor der Klasse initialisiert dieses Attribut.
Begründe, warum weder Schlange noch Stapel als Datentyp für das Attribut faecher
geeignet sind.
Deklariere das Attribut faecher
mit einem geeigneten Datentyp.
Implementiere den Konstruktor der Klasse Lernbox
.
Die Methode stelleFrage(k: Karteikarte): boolean
bewirkt, dass dem
Nutzer der App die Frage angezeigt und seine Antwort kontrolliert wird. Wurde die
Frage korrekt beantwortet, wird true
zurückgegeben, sonst false
.
Implementiere unter Verwendung der Methode stelleFrage(k: Karteikarte): boolean
die Methode
kartenAusDemFachAbarbeiten(nr: int)
, die alle Karten des angegebenen
Fachs durchgeht, bis das Fach geleert ist.
Richtig beantwortete Fragen werden ins nächste, falsch beantwortete Fragen ins erste Fach befördert.
Du musst keine Fehlerbehandlung für unzulässige Werte des Parameters nr
implementieren, es wird auf jeden Fall ein gültiges Fach angegeben.