Blatt 2

Werbung
Programmiermethoden
Sven Eric Panitz
Übungsblatt 2
Aufgabe 1 Schreiben Sie in dieser Aufgabe eine Klasse, die eine auf einem Array
als Speicher benutzende generische Liste realisiert. (Eine solche Klasse wurde
bereits im ersten Semester entwickelt.) Sie soll folgende Eigenschaften haben:
a) Es soll das Interface name.panitz.util.Iterable implementiert werden.
b) Es soll eine Methode add zum Hinzufügen neuer Elemente geben.
c) Es soll zwei Konstruktoren geben. Einen Standardkonstruktor ohne Parameter und einen Konstruktor mit einer variablen Parameteranzahl. Im
zweiten Fall sollen die Parameter die Elemente der Liste werden.
d) Die Standardmethode length soll überschrieben werden. Warum ist dieses
sinnvoller als auf die bereits in name.panitz.util.Iterable implementierte Standardmethode zu vertrauen?
Schreiben Sie umfangreiche Tests für alle Methoden.
Aufgabe 2 Schreiben Sie für die Schnittstelle name.panitz.util.Iterable weitere Standardmethoden:
a) Eine Methode zum Anhängen eines weiteren Iterable-Objekts:
public default Iterable<A> append(java.lang.Iterable<A> that)
Sie dürfen dabei die Klasse Append des ersten Übungsblattes verwenden.
b) Schreiben Sie unter Zuhilfenahme der Klasse PairIterable des letzten
Übungsblattes folgende Methode, die das Iterable-Objekt paarweise
mit einem zweiten Iterable-Objekt verbindet:
public default <B> Iterable<Pair<A,B>> zip(java.lang.Iterable<B> that)
c) Schreiben Sie jetzt unter Zuhilfenahme der Klasse TwoDimIterable folgende Methode, die alle Paare aus den beiden Iterable-Objekten bereit
stellt:
public default <B> Iterable<Pair<A,B>> cross(java.lang.Iterable<B> that)
d) Schreiben Sie eine Standardmethode für die Stringdarstellung eines IterableObjekts.
public default String asString()
Was passiert, wenn Sie versuchen als Standardmethode die Methode
toString zu überschreiben.
(Seite 1)
Programmiermethoden
Sven Eric Panitz
Testen Sie mit Hilfe der Klasse AList aus der ersten Aufgabe alle Standardmethoden der Klasse Iterable.
(Seite 2)
Herunterladen