Übung09

Werbung
Übung Grundlagen der Programmierung
WS 2004/05
Übung 9: OOP und Dynamische Datenstrukturen
Abgabetermin: 11. 1. 2005
Name:
Matrikelnummer:
Gruppe:
❏ G1 (Löberbauer)
❏ G2 (Prähofer)
Aufgabe
Punkte
gelöst
Aufgabe 09.1
12
Aufgabe 09.2
12
❏ G3 (Prähofer)
abzugeben schriftlich
abzugeben
elektronisch
korr.
❏
Prosabeschreibung,
Java-Programm,
Testfälle und
Testausgabe
Java-Programm
❏
❏
Prosabeschreibung,
Java-Programm,
Testfälle und
Testausgabe
Java-Programm
❏
Pkte
Aufgabe 9_1: Operationen auf linearen Listen
Gegeben seien die Klassen List und Node für Listen von Integers aus der Vorlesung.
class List {
Node head, tail;
public List() { … }
…
} // List
class Node {
int val; // value in node
Node next; // next node
public Node(int v) { … }
…
} // Node
Implementieren Sie folgende Methoden in der Klasse List:
public static List readList(String fileName): ist eine static Methode, welche
eine Reihe von Integers aus der Datei mit Namen fileName einliest und eine Liste aufbaut.
public void print(): gibt die Elemente der Liste auf der Konsole aus
public void print(String fileName): schreibt die Elemente der Liste in die Datei mit
Namen fileName
public List duplicate(): liefert ein Duplikat der Liste (auch alle Knoten der Liste werden
dupliziert)
public boolean sorted(): stellt fest, ob die Werte der Knoten der Liste aufsteigend sortiert
sind
public void deleteDuplicates(): entfernt aus einer aufsteigend sortierten Liste die Werte
die mehrmals vorkommen (jeder Wert soll nur einmal vorkommen).
Achten Sie auf möglichst kurze und schnelle Lösungen.
Gehen Sie bei der Lösung folgend vor:
1. Skizzieren Sie die Methoden in Prosa. Fertigen Sie sich zur Verdeutlichung Skizzen der verketteten
Knotenstrukturen an (siehe Vorlesung)
2. Implementieren Sie die Klassen und die Methoden in Java
3. Stellen Sie für alle Methoden einen Testplan auf und testen Sie das Programm.
Übung Grundlagen der Programmierung
WS 2004/05
Aufgabe 9_2: Generische Liste
Mittels Vererbung und dynamischer Bindung können generische Datenstrukturen implementiert werden. Eine
Liste für beliebige Objekte kann zum Beispiel aus folgenden Knoten aufgebaut werden:
class GenericNode {
GenericNode next;
Object value;
}
Mit der GenericNode lassen sich beliebige Objekte (Unterklassen von Object) speichern. Die Klasse
Object definiert zwei Methoden, die für diese Aufgabe verwendet, bzw. von Unterklassen überschrieben
werden sollen:
public boolean equals(Object o): prüft dieses Objekt mit dem Objekt o auf Gleichheit.
public String toString(): liefert eine String-Repräsentation des Objektes.
Realisieren Sie unter Verwendung von GenericNode eine Liste (GenericList), mit folgenden Operationen:
public void insertObject(Object o): fügt Objekt o in die Liste ein. Ist das Objekt bereits
in der Liste enthalten (Vergleich der Objekte mit equals), soll das Objekt nicht nochmals eingefügt
werden, sondern es soll dem value-Feld des Knotens das Objekt o neu zugewiesen werden.
public boolean contains(Object o): prüft, ob das Objekt o in der Liste enthalten ist.
public int size(): liefert die Anzahl der Elemente.
public String toString(): liefert eine String-Repräsentation der Liste, indem die StringRepräsentationen der Elemente durch Leerzeichen getrennt aneinandergereiht werden.
public void print(): gibt den Inhalt der Liste auf der Konsole aus (jeder Wert in einer neuen
Zeile)
Wichtig: Bei den Methoden soll für den Vergleich der Objekte die Methode equals verwendet werden!!
Verwenden Sie diese Implementierung dann folgendermaßen:
a) Test mit verschiedenen Objekten:
Testen Sie die generische Liste, indem Sie in eine Liste Objekte folgender Klassen einfügen: String,
java.util.Date, java.lang.Integer. Geben Sie dann den Inhalt der Liste unter Verwendung der
Methode print aus.
b) Klasse Person, Student und Teacher
Schreiben Sie dann eine Basisklasse Person und zwei Unterklassen Student und Teacher wie folgt:
Person habe eine SSN (Social Security Number), mit dem jede Person eindeutig identifiziert werden
kann.
Schreiben Sie eine Methode equals, die Personen dann als gleich erkennt, wenn sie gleiche SSN haben.
Implementieren Sie zwei Unterklassen Student und Teacher, die von Person abgeleitet sind und
zusätzliche Felder haben (z.B. Studienrichtung für Student und Institut für Teacher)
Schreiben Sie eigene Implementierungen von toString für Teacher und Student, die eine
entsprechende Beschreibung ausgeben
Bauen Sie zu Testzwecken eine Liste mit gemischten Student- und Teacher-Objekten auf und geben
Sie den Inhalt der Liste unter Verwendung der Methode print aus.
Gehen Sie bei der Lösung folgend vor:
1. Skizzieren Sie Klassen und die Methoden in Prosa.
2. Implementieren Sie die Klassen und Methoden in Java
3. Stellen Sie für alle Methoden einen Testplan auf und testen Sie das Programm.
Herunterladen