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:\>