Karteikarten

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.

(A1)

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.

(A2)

Für die Implementation soll der ADT "Schlange" verwendet werden. Als Grundlage dienst das folgende Implementationsdiagramm:

Beschreibe die wesentlichen Eigenschaften des abstrakten Datentyps Schlange.

Erläutere, welche Methoden benutzt werden müssen, um in obigem Modell eine Karte aus einem Fach heraus zu nehmen und in ein anderes Fach zu legen.

Die Methoden 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.

(A3)

Alternativ zur Auswahl der Schlange könnte man zur Modellierung eines Fachs auch den abstrakten Datentyp Stapel verwenden..

Erläutere die Eigenschaften eines Stapels.

Entwerfe einen Algorithmus, mit dem auch bei einem Stapel (unter Verwendung eines Hilfsstapels) eine Karte hinter den schon in einem Fach vorhandenen Karteikarten eingefügt werden könnte. Notiere den Algorithmus in Pseudocode verständlich, eine Implementation in Java ist nicht gefordert.

(A4)

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.