Aufgabe Queue: Abstrakter Datentyp Warteschlange. Termin: Siehe

Werbung
Medieninformatik Ba.: Programmierung I (Java), Prof. Knabe, 2013-05-28
Aufgabe Queue: Abstrakter Datentyp Warteschlange.
Termin: Siehe LV-Seite
Themen: Klasse, Attribute, Konstruktor, Methode, Einfache Implementierung mittels Feld. Parametrierte
Ausnahmen auslösen. Testdialog, JUnit-Testtreiber
Benötigt: Dateien QueueDialog.java, QueueTest.java
1) Implementieren Sie die unten spezifizierte Klasse zur Verwaltung des Abstrakten Datentyps Queue
mit Elementetyp String. Die Warteschlangenelemente sollen in einem String-Feld _inhalt abgelegt
werden analog zum ADT Stack. Sie müssen eine Füllstandsangabe verwalten: _anzahl für die Anzahl
der aktuell enthaltenen Elemente. Beim Löschen können Sie das Verschieben der restlichen Elemente als
Schleife programmieren oder mittels des effizienten, aber typunsicheren System.arraycopy.
Ermöglichen Sie die „garbage collection“ für das freiwerdende Feldelement, indem Sie dieses
nachträglich auf null setzen.
Sichern Sie die Klasse Queue analog zur Methode bruttoBetrag aus der Klasse BruttoSicher
aus Kapitel 2.9 aus dem Skript durch die bedingte Auslösung der Ausnahmen Overflow bzw.
Underflow ab. Der Ausnahme Overflow soll die aktuelle Elementeanzahl als Argument übergeben
werden.
Versehen Sie alle versteckten Komponenten der Klasse mit dem Namenspräfix ‘_’ (Unterstrich).
Für die Ehre: Effiziente Implementierung als Ringpuffer.
2) Führen Sie mir den Junit4-Testtreiber QueueTest mit der Klasse Queue vor.
3) Führen Sie mir den Dialogtesttreiber QueueDialog mit der Klasse Queue vor.
/**Zweck: Verwaltet eine Warteschlange von Strings nach dem FIFO-Prinzip.*/
class Queue {
/**Erzeugt eine neue Queue mit Platz fuer maximal size Elemente*/
public Queue(final int size){ … }
/**Hängt element an die Warteschlange an (Mutator).
* @throws Overflow kein Platz mehr in der Schlange
*/
public void insert(final String element) throws Overflow { … }
/**Liefert das älteste, noch in der Warteschlange enthaltene Element (Informator).
* @throws Underflow Schlange leer
*/
public String read() throws Underflow { … }
/**Löscht das älteste Element aus der Warteschlange (Mutator).
* @throws Underflow Schlange leer
*/
public void delete() throws Underflow { … }
/** Die Queue ist schon leer. */
public static class Underflow extends Exception {}
/** Die Queue ist mit anzahl Elementen schon voll. */
public static class Overflow extends Exception {
public Overflow(final int anzahl) {
super(Integer.toString(anzahl));
}
}
}//Queue
Bsp.-Dialog (Eingaben kursiv):
Z:\>java QueueDialog
Geben Sie eine Reihe von Zeilen ein und beenden Sie durch Eingabe von
<Strg/Z><Eingabe> auf Windows bzw. <Strg/D><Eingabe> auf Unix-Derivaten.
Zeile ? alpha
Zeile ? beta
Zeile ? gamma
Zeile ? delta
Zeile ? epsilon
Zeile ? <Strg/Z>↵
Die Schlange liefert in folgender Reihenfolge:
alpha
beta
gamma
delta
epsilon
Z:\>
Herunterladen