IT 1 – WS 2015/2016 – Übungsblatt 7
Informationen: Die Beispiele sind bis 26.11. um 8 Uhr abzugeben bzw. bis zur Übung vorzubereiten.
Beispiel 7.1:
Gegeben seien die Klasse Person und das Interface InAusbildung:
public class Person
{
/* Konstruktor, dem der Name der Person übergeben wird.*/
public Person(String name);
/* gibt den Namen der Person zurück. */
public String toString();
}
interface InAusbildung
{
/* gibt den Namen der Ausbildung zurueck. */
String getAusbildung();
}
Schreiben Sie eine Klasse Student, die Unterklasse von Person ist und auch das Interface
InAusbildung implementiert. Diese Klasse soll über einen Konstruktor
Student(String name, String matrikelnummer, String studium)
verfügen, dem der Name des Studenten, seine Matrikelnummer und der Name des Studiums
übergeben werden. Überschreiben Sie in Student die Methode toString(), sodass zusätzlich zum
Namen auch die Matrikelnummer zurückgegeben wird. Die Methode getAusbildung() soll den Namen
des Studiums zurückgeben.
Beispiel 7.2:
Gegeben seien die Klasse Fahrzeug und das Interface PrivateNutzung:
class Fahrzeug
{
/* Konstruktor, dem die Fahrzeugnummer uebergeben wird.*/
Fahrzeug(int nummer);
/* Erhoeht den Kilometerstand um die gefahrenen km. */
public void fahre(double anzahlKilometer);
/* Gibt den Kilometerstand zurueck. */
public double getKilometerstand();
}
interface PrivateNutzung
{
/* Vermerkt die Laenge einer privaten Fahrt. */
public void fahrePrivat(double anzahlKilometer);
/* Liefert die Summe der privat gefahrenen Kilometer. */
public double getSummePrivatfahrten();
}
Weiters sei in Fahrzeug die Methode toString() aus Object so überschrieben, dass die Nummer des
Fahrzeugs (als String) zurückgegeben wird.
Schreiben Sie eine Klasse Dienstwagen, die Unterklasse von Fahrzeug ist und auch das Interface
PrivateNutzung implementiert. Diese Klasse soll über einen Konstruktor
Dienstwagen(int nummer, String dienstnehmer)
1
IT 1 – WS 2015/2016 – Übungsblatt 7
verfügen, dem die Nummer des Fahrzeugs und der Name des Dienstnehmers übergeben wird.
Überschreiben Sie in Dienstwagen auch die Methode toString() so, dass die Nummer des
Dienstwagens, der Dienstnehmer, und der Kilometerstand zurückgeliefert werden. Achten Sie darauf,
dass die Methode getKilometerstand() auch für Dienstwägen korrekt funktioniert.
Beispiel 7.3: Welche der folgenden Anweisungen geben aus welchem Grund eine Fehlermeldung?
ArrayList<String> a
Set<Integer> b = new
Collection<Auto> c =
List<Cabrio> d = new
= new List<String>();
HashSet<Integer>();
new ArrayList<Auto>();
HashSet<Cabrio>();
Beispiel 7.4:
[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, wird null zurückgegeben.
*/
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.
Beispiel 7.5: Schreiben Sie die abstrakte Klasse Schachfigur aus Beispiel 6.6 in ein Interface um.
(Dazu müssen Sie natürlich den Konstruktor entfernen.) Welche Änderungen müssen Sie in der Klasse
Koenig machen? Schreiben Sie eine weitere Klasse RandomChess mit einer Methode
public static int[] giveRandomMove(Schachfigur dieFigur),
die ein zufälliges Feld ausgibt, auf das die Schachfigur dieFigur ziehen kann.
Beispiel 7.6:
aussieht:
Schreiben Sie die Klasse Buch aus Beispiel 3.3 so um, dass der Konstruktor so
public Buch(String autor, String titel, boolean verliehen)
Überlegen Sie sich auch, wie man in Buch die Methoden equals und hashCode aus Object
überschreiben könnte. Schreiben Sie außerdem die Klasse Bibliothek aus Beispiel 3.3 so um, dass die
Methode getIstvorhanden() statt einer ArrayList ein HashSet zurückgibt.
2
IT 1 – WS 2015/2016 – Übungsblatt 7
Beispiel 7.7: Schreiben Sie die Klasse Wohnungssuche aus Beispiel 4.4 so um, dass statt ArrayLists
HashSets verwendet werden. Überlegen Sie sich insbesondere, welche Attribute eine Wohnung neben
Fläche und Mietpreis noch haben sollte, und wie man die Methoden equals und hashCode aus Object
in Wohnung überschreiben könnte.
Beispiel 7.8: Schreiben Sie die Beispiele 4.4 und 7.7 so um, dass Lists statt ArrayLists bzw. Sets
statt HashSets verwendet werden. Was müssen Sie dabei beachten?
3