Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2006 W
| Ausgabe: | 30.11.2006 |
| reguläre Abgabe: | 07.12.2006, 12:45 Uhr |
| nachträgliche Abgabe: | 14.12.2006, 12:45 Uhr |
GenGraphsollen gerichtete Graphen darstellen. Anders als in den vorangegangenen Aufgaben tragen sowohl Knoten als auch Kanten Objekte unterschiedlicher Typen als Namen. Die Namen aller Knoten sind vom selben Typ, und die Namen aller Kanten sind vom selben Typ, aber Namen von Knoten und Kanten können unterschiedlichen Typs sein. Zwei solche Namen werden als gleich angesehen, wenn die Methode
equals(die in jedem Objekt existiert) beim Vergleich der Namen
trueliefert. Alle Knoten in einem Graphen sollen unterschiedliche Namen haben. Außerdem soll es zwischen je zwei Knoten höchstens eine Kante in jede Richtung mit demselben Namen geben. Es kann zwischen zwei Knoten aber beliebig viele Kanten mit unterschiedlichen Namen geben. Außerhalb von
GenGraphsoll ein Knoten nur durch seinen Namen und eine Kante durch ihren Namen und 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 folgende Aufgaben werden benötigt:
Graphsoll wie in Aufgabe 4 definiert sein, aber sie soll
GenGrapherweitern. Alle Kanten sollen dieselbe Zeichenkette als Namen haben (womit Namen von Kanten irrelevant sind, sodass man in
Graphunbenannte Kanten annehmen kann). Die in Aufgabe 4 vorgegebenen Methoden werden benötigt.
Personstellt die wichtigsten Daten zu einer Person bereit. Es soll möglich sein, den Nachnamen und das Geburtsjahr der Person über Methoden abzufragen und zu verändern.
PersGraphsoll
GenGrapherweitern, wobei Namen von Knoten stets vom Typ
Personsind, während Typen der Namen von Kanten über Generizität wählbar sind. Zwei Personen werden als gleich angesehen, wenn sie durch dasselbe Objekt dargestellt werden; Nachname und Geburtsjahr (sowie alle sonstigen Personendaten) sind zur Unterscheidung von Personen nicht hinreichend. Zusätzlich zu den Methoden von
GenGraphsoll es eine Methode für folgende Aufgabe geben:
Testsoll zum nicht-interaktiven Testen aller oben genannten Klassen dienen. Die wichtigsten Normal- und Grenzfälle sollen überprüft werden, und die Testergebnisse sind in allgemein verständlicher Form in der Standardausgabe darzustellen.
Test) am schwächsten ist. Es soll stillschweigend (ohne Fehlermeldung oder Exception) möglich sein, dass eine aufgerufene Methode nichts tut, wenn deren Nachbedingungen bereits beim Aufruf erfüllt sind. Achten Sie auf die Sichtbarkeit, wobei angenommen wird, dass auf alle in der Aufgabenstellung angeführten Methoden von außen zugegriffen können werden soll. Nennen Sie Ihre Klassen so, wie sie in der Aufgabenstellung heißen. Überlegen Sie, wie Sie geschachtelte Klassen in dieser Aufgabe einsetzen können. Vermeiden Sie die Verwendung von Paketen.
raw typesbzw.
type erasures. Entsprechende Warnungen haben ihre Ursache hauptsächlich in vergessenen Typangaben bei Verwendung generischer Typen. Punkteabzüge gibt es auch für unnötigen (oder unnötig komplexen) Code, mangelhafte Zusicherungen, inkorrekte Untertypbeziehungen, schlechte Verwendung von Sichtbarkeit, starke Objektkopplung, sowie fehlende oder nicht der Aufgabenstellung entsprechende Funktionalität.
Aufgabe6in Ihrem Verzeichnis auf dem Übungsrechner b3. Das Programm soll von diesem Ordner aus durch
java Testaufrufbar sein. Schreiben Sie wenn möglich nicht mehr als eine Klasse in jede Datei. Der Ordner soll zum Zeitpunkt der Abgabe (7.12.2006, 12:45 Uhr) und der nachträglichen Abgabe (14.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
Aufgabe6.