Übungsblatt 8

Werbung
IT 2 – WS 2008/2009 – Übungsblatt 8
Abzugeben bis 5.12.2008
Beispiel 8.1
Definieren Sie eine Klasse Artikel mit folgenden Eigenschaften:
• Es gibt einen Konstruktor Artikel(String bezeichnung), der einen Artikel anlegt.
• Es gibt eine Methode String getBezeichnung(), die die Bezeichnung des Artikels
zurückliefert.
• Es gibt eine Methode void setReferenznummer(String refnummer), die die
Referenznummer des Artikels neu setzt. Eine gültige Referenznummer ist
zumindest 3-stellig. Wenn die übergebene refnummer weniger als 3 Zeichen lang
ist, soll die bestehende Referenznummer nicht verändert werden.
• Es gibt eine Methode String getReferenznummer(), die die aktuelle
Referenznummer zurückliefert. Wenn noch keine gültige Referenznummer gesetzt
wurde, soll der Leer-String "" zurückgeliefert werden.
Beispiel 8.2 [Lieferant.java]
Eine Firma wird von zwei Lieferanten pro Woche mit insgesamt 100 Stück einer Ware
beliefert, wobei ein Lieferant höchstens 75 Stück liefern kann. Implementieren Sie eine
Klasse Lieferant mit folgendem Konstruktor und folgenden Methoden:
• Lieferant(int lieferantennummer) erzeugt einen Lieferanten mit der entsprechenden
Nummer. Die Lieferantennummer soll 1 oder 2 sein.
• int getAktuellerPreis() liefert den aktuellen Preis des Lieferanten zurück. Der Preis
soll zwischen 1 und 100 liegen. Der Preis von Lieferant 1 soll jeweils zufällig gewählt
werden. Der Preis von Lieferant 2 soll ein fester Wert sein, der mit der Methode
• void setPreis(int preis) gesetzt werden kann.
• Mit void liefere(int anzahl) kann die Firma beim Lieferanten anzahl Stück bestellen.
Die Anzahl muss zwischen 1 und 75 liegen.
• int getUmsatz() liefert den bisherigen Gesamtumsatz des Lieferanten. Der
Gesamtumsatz ist die Summe der Preise aller bestellten Stücke.
Beispiel 8.3 [Firma.java]
Implementieren Sie nun die Klasse Firma. Sie enthält eine Methode
int simuliere(int anzWochen),
die für anzWochen den Bestellvorgang simuliert. Bei einem Bestellvorgang frägt die Firma
zuerst nach den Preisen der Lieferanten und bestellt dann beim billigeren Lieferanten 75
Stück und beim teureren 25 Stück. Falls die Preise beider Lieferanten gleich sind, werden bei
beiden 50 Stück bestellt. Als Ergebnis liefert die Methode den Gesamtpreis für alle
Bestellungen.
-1-
IT 2 – WS 2008/2009 – Übungsblatt 8
Beispiel 8.4 [Lieferant.java] (freiwillig)
Probieren Sie andere Strategien der Lieferanten zum Festsetzen der Preise aus. Die
Lieferanten sind Konkurrenten und sprechen sich nicht ab. Insbesondere kennen Sie die Preise
des anderen Lieferanten nicht. Jeder Lieferant möchte seinen Umsatz maximieren.
Hinweis: Wenn Sie Ihre Klasse abgeben, werden wir sie gegen andere Strategien testen um
die beste abgegebene Klasse zu ermitteln. Dazu sollten in der Klasse, die Sie abgeben,
Lieferant 1 und 2 dieselbe Strategie verwenden. (Ihr Lieferant wird in manchen Test Lieferant
1 sein, in anderen Lieferant 2.) Wir werden immer 360 Wochen simulieren.
Strategischer Hinweis: Als Informationsgrundlage für das Festsetzen des Preises können die
Bestellungen der Firma in den bisherigen Wochen dienen.
Beispiel 8.5
Schreiben Sie eine Klasse CountedClass, die einen parameterlosen Konstruktor und eine
Klassenmethode
static int getNumberOfInstances()
enthält, die die Anzahl der bisher erzeugten Objekte diese Klasse zurückliefert.
Beispiel 8.6 [LabClass.java, Student.java, Lecturer.java, Person.java]
Fügen Sie dem Projekt lab-classes (chapter01) eine Klasse Lecturer hinzu. Diese Klasse hat
einem Konstruktor
Lecturer(String name),
der einen Konstruktor 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.
-2-
Herunterladen