Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2006 W
| Ausgabe: | 23.11.2006 |
| reguläre Abgabe: | 30.11.2006, 12:45 Uhr |
| nachträgliche Abgabe: | 07.12.2006, 12:45 Uhr |
graphsammlung, welches Klassen und Interfaces für folgende Zwecke enthält:
LeseSammlungdient als Schnittstelle zu verschiedenen Sammlungen von Zeichenketten (Strings) und unterstützt eine Methode zur Abfrage, ob eine bestimmte Zeichenkette in der Sammlung enthalten ist.
SchreibeSammlungdient als Schnittstelle zu verschiedenen Sammlungen von Zeichenketten und unterstützt Methoden zum Einfügen und Löschen von Zeichenketten. Diese Methoden dürfen Exceptions werfen, wenn die eigentlichen Aufgaben nicht durchführbar sind.
LeseGraphdient als Schnittstelle zu
Graph(wie in Aufgabe 4) und unterstützt Methoden zum
SchreibeGraphdient als Schnittstelle zu
Graphund unterstützt Methoden zum Einfügen und Löschen von Knoten und Kanten wie in Aufgabe 4. Diese Methoden dürfen Exceptions werfen, wenn die eigentlichen Aufgaben nicht durchführbar sind.
LeseVerwandtschaftdient als Schnittstelle zu Graphen und unterstützt Methoden zum Auflisten
Stammbaum(aus Aufgabe 4).
SchreibeVerwandschaftdient als Schnittstelle zu Graphen und unterstützt Methoden zum
Graph(wie in Aufgabe 4 beschrieben) soll zum Paket
graphsammlunggehören und ein Untertyp von
SchreibeGraph,
LeseGraph,
SchreibeSammlungund
LeseSammlungsein. Die in
SchreibeSammlungund
LeseSammlungdefinierten Methoden fügen Knoten ein, löschen Knoten und fragen ab, ob Knoten existieren.
DAG(eine übliche Abkürzung für
directed acyclic graph) steht für eine eingeschränkte Variante von
Graph, in der die durch die Kanten bebildeten Pfade keine Zyklen bilden dürfen. Neben den Methoden von
Graphunterstützt
DAGdie Methoden von
LeseVerwandtschaft.
VerbundenerDAGsteht für eine Variante von
DAG, in der alle Knoten durch Pfade miteinander verbunden sind (das heißt, für jeden Knoten X im Graphen gilt: die Menge, die X sowie alle Vorgänger und Nachfolger von X enthält, ist auch die Menge aller Knoten
VerbundenerDAGgenau einen Knoten und keine Kanten. Der Graph kann nur durch die Methoden von
SchreibeVerwandtschaftverändert werden. Alle Methoden von
LeseSammlung,
LeseGraphund
LeseVerwandtschaftsollen verwendbar sein.
Baumsteht für eine eingeschränkte Variante von
VerbundenerDAG, die genau einen Wurzelknoten enthält, so dass es für jeden Knoten X (außer dem Wurzelknoten) genau eine Kante zu diesem Knoten X gibt. Alle Methoden von
LeseSammlung,
LeseGraph,
LeseVerwandtschaftund
SchreibeVerwandtschaftsollen unterstützt werden.
Entwickeln Sie auch ein Paket anwendung
, welches die Klasse Stammbaum
(wie in Aufgabe 4 beschrieben) enthält. Stammbaum
soll zumindest die
Methoden von EditGraph
und Verwandtschaft
LeseGraph
, SchreibeGraph
, LeseVerwandtschaft
und
SchreibeVerwandschaft
unterstützen.
Entwickeln Sie weiters ein Paket test
, das zum nicht interaktiven Testen
der Klassen und Interfaces dieser Aufgabe dient. Die wichtigsten Normal-
und Grenzfälle sollen überprüft werden, und die Testergebnisse sind in
allgemein verständlicher Form in der Standardausgabe darzustellen.
Schreiben Sie eine Klasse Test
im existierenden Ordner Aufgabe5
. Ein
Aufruf von java Test
in Aufgabe5
soll die Tests im Paket test
ausführen.
private,
protectedund
public. Daneben spielen (wie in der vorhergehenden Aufgabe) die Themen Vererbung, Subtyping und Zusicherungen auch bei der Beurteilung der Lösung dieser Aufgabe eine wichtige Rolle.
Aufgabe5in Ihrem Verzeichnis auf dem Übungsrechner b3. Das Programm soll von diesem Ordner aus durch
java Testaufrufbar sein. Schreiben Sie nicht mehr als eine Klasse in jede Datei. Der Ordner soll zum Zeitpunkt der Abgabe (30.11.2006, 12:45 Uhr) und der nachträglichen Abgabe (7.12.2006, 12:45 Uhr) alle
.java-Dateien enthalten, die Sie für Ihre Lösung benötigen. Bitte entfernen Sie alle
.java-Dateien, die nicht zur Abgabe gehören. Dateien mit anderen Endungen werden bei der Beurteilung nicht berücksichtigt. Vermeiden Sie die Verwendung von Ordnern innerhalb des Abgabeordners
Aufgabe5; ausgenommen davon sind nur Ordner (bitte keine Links) mit den Namen
graphsammlung,
anwendungund
test.