IT I - Übungsblatt 4

IT 1 – WS 2015/2016 – Übungsblatt 4
Informationen: Die Beispiele sind bis 5.11. um 8 Uhr abzugeben bzw. bis zur Übung vorzubereiten.
Beispiel 4.1: [Zeitpunkt.java]
Ergänzen Sie die Klasse Zeitpunkt aus Beispiel 2.3 um eine Methode
Zeitpunkt copy(),
die eine Kopie des Zeitpunkts zurückliefert, d.h. ein neues Objekt der Klasse Zeitpunkt, das in allen
Attributwerten mit dem ursprünglichen Objekt übereinstimmt.
Beispiel 4.2: [Aufgabe.java]
Ergänzen Sie die Klasse Aufgabe aus Beispiel 2.3 wie folgt. Es gibt eine Methode
Aufgabe copy(),
die eine Kopie der Aufgabe zurückgibt, d.h. ein neues Objekt der Klasse Aufgabe, das in allen
Attributwerten mit dem ursprünglichen Objekt übereinstimmt. Weiters gibt es eine Methode
Aufgabe copyDeep(),
die eine Kopie der Aufgabe zurückliefert. Die Ergebnisse von getName() und getVerantwortlicher()
für die Kopie sollen mit den Ergebnissen für das ursprüngliche Objekt übereinstimmen,
getEndtermin() soll eine Kopie des Endtermins des ursprünglichen Objektes liefern.
Beispiel 4.3:
Erzeugen Sie ein Objekt aufgabe1 der Klasse Aufgabe. Erzeugen Sie nun zwei weitere Objekte
aufgabe2 und aufgabe3 der Klasse Aufgabe mit Hilfe der Methoden copy() und copyDeep().
Verändern Sie den Endtermin von aufgabe1 mit Hilfe der Methode setJahrEndtermin(). Was passiert
mit den Endterminen von aufgabe2 und aufgabe3? Geben Sie aufgabe1 durch Aufruf von
setVerantwortlicher() einen neuen Verantwortlichen. Was passiert mit den Verantwortlichen in
aufgabe2 und aufgabe3?
Beispiel 4.4:
Gegeben ist die Klasse Wohnung mit den Methoden
int gibAnzahlZimmer(),
double getMiete(),
die die Anzahl der Zimmer bzw. die Miete der Wohnung zurückgeben.
Schreiben Sie eine Klasse Wohnungssuche mit einer Methode
ArrayList<Wohnung> findeWohnung(ArrayList<Wohnung> wohnungsliste,
int mindestAnzahlZimmer, double maximalmiete),
die alle Wohnungen aus wohnungsliste mit mindestens mindestAnzahlZimmer Zimmern und einem
Mietpreis von höchstens maximalmiete in einer ArrayList zurückgibt.
Beispiel 4.5: Implementieren Sie in einer beliebigen Klasse die Methode
int findeHaeufigstesElement(ArrayList<Integer> liste),
die jene Zahl zurückgibt, die in liste am häufigsten vorkommt. (Kommen mehrere Zahlen gleich
häufig vor, soll eine beliebige der häufigsten Zahlen zurückgegeben werden.)
1
IT 1 – WS 2015/2016 – Übungsblatt 4
Beispiel 4.6: [Urne.java]
Schreiben Sie eine Klasse Urne, deren Objekte Urnen darstellen, aus denen zufällig rote und blaue
Bälle gezogen werden können. Es gibt einen Konstruktor
Urne(int anzahlRot, int anzahlBlau),
der eine Urne erzeugt, die zu Beginn anzahlRot viele rote und anzahlBlau viele blaue Bälle enthält.
Die Methode
String nextBall()
gibt einen roten oder einen blauen Ball zurück, dargestellt durch die Strings "rot" bzw. "blau". Dieser
Ball wird zufällig aus jenen Bällen ausgewählt, die sich noch in der Urne befinden. Der ausgewählte
Ball soll aus der Urne entfernt werden. Falls sich in der Urne keine Bälle mehr befinden, soll die
Methode den Wert null zurückgeben.
Beispiel 4.7: Schreiben Sie eine Klasse Spielfigur mit Konstruktor
public Spielfigur(int anzFelder) ,
der auf einem Spielbrett mit fortlaufenden Feldern von 1 (das Startfeld) bis anzFelder (das Zielfeld)
eine Spielfigur erzeugt, die sich auf dem Startfeld befindet. Implementieren Sie Methoden
public int getFeld() ,
public void setFeld(int feld)
zum Auslesen bzw. Setzen des Feldes, auf dem sich die Spielfigur befindet. Weiters soll es eine
Methode
public void ziehe()
geben, die zufällig (mit gleich hoher Wahrscheinlichkeit) einen Wert von 1 bis 6 erzeugt und die
Spielfigur auf dem Spielbrett entsprechend viele Felder weiterzieht. Dabei ist zu beachten, dass die
Spielfigur nicht über das Zielfeld hinaus ziehen kann, und dass das Zielfeld nur mit der genauen
Anzahl von Zügen erreicht werden kann. Steht die Figur z.B. auf Feld 99 und das Zielfeld ist 100, so
kann die Spielfigur nur mit einer gewürfelten 1 weiterziehen, ansonsten muss sie stehenbleiben.
Beispiel 4.8: Gegeben sei eine Klasse Spielfigur mit Konstruktor und Methoden wie in Beispiel 4.7
Schreiben Sie eine Klasse Brettspiel mit Konstruktor
public Brettspiel(int anzFelder) ,
der zwei Spielfiguren auf einem Spielbrett mit anzFelder Feldern erzeugt. Implementieren Sie
außerdem eine Methode
public Spielfigur spiele() ,
die die beiden Spielfiguren abwechselnd ziehen lässt, bis eine der beiden das Zielfeld erreicht. Belegt
eine Spielfigur nach ihrem Zug ein Feld, das bereits von der anderen Spielfigur besetzt ist, soll letztere
„geschlagen“ und wieder auf das Ausgangsfeld zurückgesetzt werden. Die Methode soll jene
Spielfigur zurückgeben, die das Zielfeld erreicht hat.
Beispiel 4.9: Schreiben Sie eine Klasse CountedClass, die einen parameterlosen Konstruktor und eine
Klassenmethode
static int getNumberOfInstances()
enthält, die die Anzahl der bisher erzeugten Objekte dieser Klasse zurückgibt.
2