Übungsblatt 6

Werbung
IT 1 – SS 2011 – Übungsblatt 6
Abzugeben bis 11.5.2011 – 12:00 Uhr
Beispiel 6.1 [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. Die Methode changeName() in Student muss 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 6.2
Gegeben sind die Klasse UniAngehoeriger und das Interface Lehrbeauftragter:
class UniAngehoeriger
{
/* Konstruktor, dem der Name des UniAngehoerigen uebergeben wird. */
UniAngehoeriger(String name) {...}
/* Liefert die Daten (nicht nur den Namen) des UniAngehoerigen in einem String
zurueck.
*/
public String toString() {...}
}
interface Lehrbeauftragter
{
/* Gibt eine Liste mit den Nummern der Lehrveranstaltungen des Lehrbeauftragten
zurueck. */
int[] getLVAs();
}
Schreiben Sie eine Klasse Professor, die Unterklasse von UniAngehoeriger ist und auch das Interface
Lehrbeauftragter implementiert. Diese Klasse soll über einen Konstruktor
Professor(String name, int[] lvaListe)
verfügen, dem der Name des Professors und die Liste seiner Lehrveranstaltungsnummern übergeben
werden.
Überschreiben Sie weiters in Professor die Methode toString() von UniAngehoeriger so, dass
zusätzlich zu den Daten des Uniangehörigen auch die Nummern der Lehrveranstaltungen des
Professors zurückgegeben werden.
1
IT 1 – SS 2011 – Übungsblatt 6
Beispiel 6.3
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 Vogel extends Tier {
public Vogel() {}
}
public class Taube extends Tier {
public Taube() {}
private void methode1() {
Tier tier1 = new Tier();
Tier tier2 = new Taube();
Vogel vogel1 = new Taube();
}
}
Beispiel 6.4
Gegeben sind die Klasse Person und das Interface InAusbildung:
public class Person
{
/* Konstruktor, dem der Name der Person übergeben wird. */
public Person(String name);
/* Liefert den Namen der Person zurueck. */
public String toString();
}
interface InAusbildung
{
/* Liefert 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.
2
IT 1 – SS 2011 – Übungsblatt 6
Beispiel 6.5
Gegeben sind 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);
/* Liefert den Kilometerstand zurueck. */
public double getKilometerstand();
}
interface PrivateNutzung
{
/* Vermerkt die Laenge einer privaten Fahrt. */
void fahrePrivat(double anzahlKilometer);
/* Liefert die Summe der privat gefahrenen Kilometer. */
double getSummePrivatfahrten();
}
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)
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.
3
Herunterladen