Übungsblatt 7

Werbung
IT 1 – SS 2011 – Übungsblatt 7
Abzugeben bis 18.5.2011 – 12:00 Uhr
Beispiel 7.1 [SimpleList.java, Umkehren.java]
SimpleList ist ein Interface, das eine einfache Liste von Strings beschreibt. Der Zugriff auf eine
SimpleList ist nur mit den angegebenen Methoden removeLast() und addFirst() möglich:
interface SimpleList
{
/**
* Entfernt den letzten String aus der SimpleList
* und liefert ihn zurück. Wenn die SimpleList leer
* ist, liefert removeFirst() null zurück .
*/
public String removeLast();
/** Fügt s als ersten String in die SimpleList ein . */
public void addFirst(String s);
}
Implementieren Sie eine Klasse Umkehren mit einer Methode
static void invert(SimpleList list),
die die Reihenfolge der Strings in list umkehrt, also z.B. die Liste mit den Elementen
("a","b","c","d","e") in die Liste mit den Elementen ("e","d","c","b","a") umwandelt. Implementieren
Sie zum Testen von Umkehren auch eine Klasse mit dem Interface SimpleList. Diese Klasse ist
ebenfalls abzugeben.
Beispiel 7.2
Schreiben Sie eine Klasse Datum mit dem Konstruktor
Datum(int jahr, int monat, int tag).
Fügen Sie in der Klasse Zeitpunkt aus Beispiel 2.1 einen Konstruktor
Zeitpunkt(Datum tag, int stunde, int minute)
hinzu.
Implementieren Sie in den Klassen Datum und Zeitpunkt aus Beispiel 10.7 folgende Methoden:
public boolean equals(Object obj),
public int hashCode()
Zwei Instanzen von Datum bzw. Zeitpunkt sollen genau dann gleich sein, wenn alle Attribute gleich
sind. Fügen Sie in der Klasse Datum eine statische Methode
public static Datum createDatum(int jahr, int monat, int tag)
hinzu. Die Methode soll eine Referenz von Datum zurückliefern, die den übergebenen Werten
entspricht. Diese Methode soll für gleiche Werte jahr, monat und tag immer die gleiche Referenz
zurückgeben, d.h. erzeugte Referenzen wiederverwenden. Hinweis: Das lässt sich z.B. dadurch
erreichen, dass Sie alle erzeugten Objekte in einem HashSet speichern und bei Erzeugen eines neuen
Objekts nachsehen, ob es bereits ein entsprechendes Objekt im HashSet gibt.
1
IT 1 – SS 2011 – Übungsblatt 7
Beispiel 7.3
Schreiben Sie die Klasse Wohnungssuche aus Beispiel 5.4 mit einem HashSet statt einer ArrayList als
Rückgabewert der Methode findeWohnung. Implementieren Sie dazu auch die Klasse Wohnung.
Überlegen Sie sich insbesondere, welche Attribute eine Wohnung neben Fläche und Mietpreis noch
haben sollte, und wie die Methoden
public boolean equals(Object obj),
public int hashCode()
für die Klasse Wohnung aussehen könnten.
Beispiel 7.4
Schreiben Sie eine Klasse Termin mit einem Konstruktor
Termin(int jahr, int monat, int tag, String text),
der für das angegebene Datum einen Termin mit dem angegebenen Text erzeugt. Sie können davon
ausgehen, dass der Konstruktor immer mit einer korrekten Kombination von Jahr/Monat/Tag
aufgerufen wird.
Überschreiben Sie in der Klasse Termin die Methode toString() in Object so, dass toString() Jahr,
Monat, Tag und Text des Termins in einem String zurückliefert.
Schreiben Sie auch eine Klasse Terminverwaltung mit einem parameterlosen Konstruktor und den
Methoden
void add(Termin einTermin)
und
Termin getNaechstenTermin().
Der Konstruktor erzeugt eine leere Terminverwaltung ohne Termine.
Die Methode add() fügt einen Termin zur Terminverwaltung hinzu. Wenn es in der Terminverwaltung
schon einen Termin mit dem gleichen Datum gibt, wird dieser Termin durch den neuen Termin
überschrieben.
Die Methode getNaechstenTermin() liefert den frühesten Termin in der Terminverwaltung zurück und
löscht diesen aus der Terminverwaltung. Falls die Terminverwaltung keine Termine enthält, liefert die
Methode null zurück.
Versuchen Sie die Termine in einem Set zu verwalten. Was muss in diesem Fall für die Klasse Termin
berücksichtigt werden?
Beispiel 7.5
Gegeben sei die Klasse LKW mit Methoden
boolean istVerfuegbar(Tag datum),
die zurückliefert, ob der LKW an diesem Tag verfügbar ist, und
void reserviere(Tag datum),
die den LKW für diesen Tag reserviert.
Schreiben Sie die Klasse LKWFlotte, die LKWs verwaltet. Implementieren Sie dazu die Methode
void add(LKW einLKW),
die einen LKW zur Flotte hinzufügt. Implementieren Sie weiters die Methode
boolean reserviere(int anzahlLKWs, Tag datum),
die für den angegebenen Tag die angegebene Anzahl von LKWs reserviert und dann true
zurückliefert. Sind für diesen Tag nicht genügend LKWs verfügbar, sollen keine Reservierungen
durchgeführt und false zurückgeliefert werden.
Speichern Sie die LKWs der Flotte in einem Set. Welche Voraussetzungen müssen dafür in der Klasse
LKW gegeben sein?
2
Herunterladen