IT I Übungsblatt 5

Werbung
IT 1 – WS 2013/2014 – Übungsblatt 5
Informationen: Die Beispiele sind bis 7.11. um 8 Uhr abzugeben bzw. bis zur Übung vorzubereiten.
Beispiel 5.1: Gegeben sei eine Klasse Telefon mit Konstruktor
Telefon(String nummer),
der ein Telefon mit der angegebenen Nummer erzeugt. Die Klasse Telefon verfügt außerdem über die
Methode
public void anrufen(Telefon andresTelefon),
die andresTelefon anruft, sowie eine Methode
public String gibNummer(),
die die Nummer als String zurückgibt.
Schreiben Sie eine Klasse TelefonMitDisplay, die von Telefon erbt. Der Konstruktor
TelefonMitDisplay(String nummer)
soll ein Telefon mit der angegebenen Nummer und leerem Display erzeugen. Eine Methode
public void setDisplay(String sss)
soll den String sss ins Display schreiben, eine Methode
void loeschen(),
soll das Display löschen.
Überschreiben Sie in TelefonMitDisplay außerdem die Methode anrufen so, dass im aufrufenden
Objekt der Anruf im Display angezeigt wird (z.B. String „Anruf 0664/1234567“). Falls das angerufene
Telefon ein Objekt der Klasse TelefonMitDisplay ist, soll im Display der Anruf ebenfalls verzeichnet
werden (z.B. String „Anruf von 0664/1234567“).
Beispiel 5.2: [LabClass.java, Student.java, Lecturer.java, Person.java]
Fügen Sie dem Projekt lab-classes von der Lehrveranstaltungsseite eine Klasse Lecturer hinzu. Diese
Klasse hat einen Konstruktor
Lecturer(String name),
der einen Lecturer mit entsprechendem Namen anlegt. Definieren Sie eine gemeinsame Oberklasse
Person für Lecturer und Student. Verwenden Sie Vererbung zur Vermeidung von Code-Duplizierung
zwischen Student und Lecturer (beide haben einen Namen). Dazu sind in der Klasse Student einige
Änderungen nötig. Z.B. muss die Methode changeName() in Student entfernt werden.
Ändern Sie die Klasse LabClass so, dass der Instruktor ein Lecturer ist. Ersetzen Sie insbesondere die
Methode
setInstructor(String instructorName)
durch eine Methode
setInstructor(Lecturer theLecturer).
Fügen Sie auch eine entsprechende Methode
Lecturer getInstructor()
hinzu. Definieren Sie in der Klasse Person die Methode
public String toString()
so, dass die Methode printList() in LabClass nicht geändert werden muss. Die Methode toString() soll
in Lecturer nicht überschrieben werden.
Beispiel 5.3: 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.3 einen Konstruktor
Zeitpunkt(Datum tag, int stunde, int minute)
hinzu. Überschreiben Sie in den Klassen Datum und Zeitpunkt die Methode
public boolean equals(Object obj).
Zwei Instanzen von Datum bzw. Zeitpunkt sollen genau dann gleich sein, wenn alle Attribute gleich
sind.
1
IT 1 – WS 2013/2014 – Übungsblatt 5
Beispiel 5.4:
Gegeben sind die folgenden Klassendefinitionen. Welche der angegebenen
Anweisungen in methode1() führen zu Compiler-Fehlern? Warum?
public abstract class Tier {
public Tier() {}
}
public class Raubkatze extends Tier {
public Raubkatze() {}
}
public class Tiger extends Tier {
public Tiger() {}
private void methode1() {
Tier tier1 = new Raubkatze();
Raubkatze mitzi = new Tiger();
Tier tier2 = new Tiger();
}
}
Beispiel 5.5:
Gegeben sind 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ückgeliefert wird. Die Methode getAusbildung() soll den Namen
des Studiums zurückliefern.
Beispiel 5.6: [Urne.java]
Schreiben Sie eine Klasse Urne, deren Objekte Urnen darstellen sollen, aus denen zufällig rote und
blaue Bälle gezogen werden.
• 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() liefert einen roten oder einen blauen Ball, dargestellt durch die
Strings "rot" bzw. "blau". Dieser Ball wird zufällig aus den Bällen ausgewählt, die sich noch in
der Urne befinden. Der ausgewählte Ball wird aus der Urne entfernt. Falls sich in der Urne keine
Bälle mehr befinden, liefert die Methode nextBall() den Wert null.
2
Herunterladen