erstellt 01.03.04; überarbeitet 15.03.04, 25.03.04, 17.06.04, 07.03.05, 07.07.06, 25.01.11, 03.07.18, 14.12.20, 02.08.21, 13.07.22, 19.02.24;
Kapitel 51 Programmieraufgaben
Aufgabe 1 — Bessere Anrede
Das Grusskarten-Beispiel hat in der deutschen Übersetzung einen kleinen Schönheitsfehler. Wir erweitern die abstrakte Klasse Karte um die Instanzvariable String anrede und um einen Konstruktor, der die Variablen empfaenger und anrede initialisiert.
Karte( String empfaenger, String sex)
Der Instanzvariablen anrede wird dann entweder der String “Liebe” oder “Lieber” zugewiesen. Wir passen die Subklassen und das Testprogramm entsprechend an.
Liebe Ann, frohe Feiertage! Lieber Bob, Alles Gute zum 55. Geburtstag. Liebe Joan, Herzliche Gruesse und Kuesse. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Zurück zum Inhaltsverzeichnis.
Aufgabe 2 — Haustiere
Wir erstellen eine abstrakte Klasse Haustiere. Die Klasse besteht aus
-
den Instanzvariablen (Um das Beispiel übersichtlich zu halten, werden die Variablen nicht als
privatedeklariert.)String name; double futtervorrat; int anzahlTage; // gibt die Anzahl Tage aus, die der Futtervorrat reicht
-
einen Konstruktor, der die beiden Instanzvariablen
nameundfuttervorratinitialisiert ( Dieser Kontruktor kann zwar nicht direkt genutzt werden, da die abstrakte KlasseHaustierenicht instanziiert werden kann, aber er kann von den SubklassenKatzeundHundverwendet werden.) -
der Methode
public void fuettern() { // Hier erfolgt zuerst der Aufruf der Methode sprich(). // Solange der Futtervorrat reicht, wird dann die Methode friss() aufgerufen // und die Anzahl der Tage hochgezaehlt, die der Vorrat reicht. // Implementiert werden die abstrakten Methoden sprich() und friss() erst in den Subklassen. } -
der Methode
public void anzeigen() { // zeigt den Namen des Haustiers an und wie viele Tage der Futtervorrat reicht } -
und den abstrakten Methoden
public abstract void friss(); public abstract void sprich();
Wir leiten von der abstrakten Klasse Haustiere die Klassen Hund und Katze ab. Schreiben dann für beide Subklassen einen Konstruktor, der den Konstruktor der Superklasse aufruft. Anschließend implementieren wir in den Subklassen die abstrakten Methoden:
- Die Methode
sprich()gibt “Wuff!” bzw “Miau!” aus. - Die Methode
friss()gibt den Namen des Haustiers mit dem jeweiligen Stand des Futtervorrats aus und verringert den Wert der Instanzvariablenfuttervorratum 1.0 (Hund) bzw. um 0.5 (Katze).
Wir testen das Programm in einer Klasse HaustiereFuettern. Die Ausgabe sieht dann ungefähr wie folgt aus:
C:\data\java\bsp>java HaustiereFuettern Miau! Minka: 5.0 Minka: 4.5 Minka: 4.0 Minka: 3.5 Minka: 3.0 Minka: 2.5 Minka: 2.0 Minka: 1.5 Minka: 1.0 Minka: 0.5 Der Vorrat fuer Minka reicht 10 Tage. Wuff! Strolchi: 5.0 Strolchi: 4.0 Strolchi: 3.0 Strolchi: 2.0 Strolchi: 1.0 Der Vorrat fuer Strolchie reicht 5 Tage.
Zurück zum Inhaltsverzeichnis.
Ende der Aufgaben