Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2006 W
| Ausgabe: | 16.11.2006 |
| reguläre Abgabe: | 23.11.2006, 12:45 Uhr |
| nachträgliche Abgabe: | 30.11.2006, 12:45 Uhr |
Stammbaumsollen bekannte Eltern-Kind-Beziehungen darstellen. Personen in einem Stammbaum werden nach außen nur durch deren eindeutige Namen (als Zeichenketten) dargestellt. Pro Person können höchstens zwei andere Personen als Eltern, aber beliebig viele Personen als Kinder bekannt sein. In Eltern-Kind-Beziehungen darf es keine Zyklen geben (das heißt, ein Vorfahre kann nie gleichzeitig zu den Nachkommen einer Person zählen). Methoden für (zumindest) diese Aufgaben sollen unterstützt werden:
Graphsollen gerichtete Graphen darstellen. Knoten der Graphen tragen jeweils eine Zeichenkette (String) als Namen. Alle Knoten in einem Graphen sollen unterschiedliche Namen haben. Außerdem soll es zwischen je zwei Knoten höchstens eine Kante in jede Richtung geben. Außerhalb von
Graphsoll ein Knoten nur durch seinen Namen und eine Kante durch die Namen der beiden Knoten, zwischen denen die Kante steht, ansprechbar sein (das heißt, Klassen für Kanten und Knoten sollen, falls sie existieren, von Clients nicht gesehen werden können). Methoden für (zumindest) folgende Aufgaben werden benötigt:
Testsoll zum nicht interaktiven Testen der Klassen
Graphund
Stammbaumdienen (bitte keine Benutzereingaben verlangen). Die wichtigsten Normal- und Grenzfälle sollen überprüft werden, und die Testergebnisse sind in allgemein verständlicher Form in der Standardausgabe darzustellen.
Stammbaumund
Graphso, dass möglichst viel Programmcode direkt geerbt wird und nicht überschrieben werden braucht. Sie können zusätzliche (abstrakte) Klassen und Interfaces einführen, vermeiden Sie jedoch unnötigen Code. Verwenden Sie Vererbungsbeziehungen nur dort, wo auch Untertypbeziehungen bestehen. Achten Sie darauf, dass Sie alle nötigen Zusicherungen in Form von Kommentaren (in Deutsch oder Englisch) in den Programmcode schreiben. Vermeiden Sie Kommentare, die keine Zusicherungen darstellen, sowie mehrdeutig formulierte Zusicherungen. Wählen Sie für alle Bedingungen jene Arten von Zusicherungen (Vorbedingungen, Nachbedingungen, Invarianten), durch welche die Abhängigkeiten mit
Testam schwächsten sind. Bedenken Sie, dass Sie in Nachbedingungen neben dem Verhalten in Normalfällen auch das Verhalten in Sonderfällen (beispielsweise das Zurückmelden von Fehlern, wenn dies nötig ist) beschreiben sollen. Geben Sie klar formulierte Fehlermeldungen aus. Es soll jedoch stillschweigend (ohne Fehlermeldung) möglich sein, dass eine aufgerufene Methode nichts tut, wenn die Nachbedingungen der Methode bereits beim Aufruf erfüllt sind. Überlegen Sie, wie Sie geschachtelte Klassen in dieser Aufgabe sinnvoll einsetzen können.
Aufgabe4in 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 (23.11.2006, 12:45 Uhr) und der nachträglichen Abgabe (30.11.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
Aufgabe4.