erstellt 05.09.99; überarbeitet 13.06.00, 07.05.03, 0.07.04; übersetzt 20.05.03; überarbeitet 27.01.04, 10.01.05, 11.10.06, 10.01.2011, 29.11.2016, 20.11.18, 06.05.19, 30.11.20, 05.07.21, 30.05.22, 05.04.23; Deutsche Übersetzung Heinrich Gailer


Kapitel 31 Programmieraufgaben

Aufgabe 1

Wir ändern die Auto-Klasse des Kapitels, indem wir zwei Methoden hinzufügen:

Der Konstruktor und die berechneMPG() Methode bleiben unverändert.

Jede von diesen neuen Methoden sollte berechneMPG() verwenden, um die Meilen pro Gallone zu bekommen, und sie nicht selbst berechnen.

Wir stellen die Benutzer-Interaktionen in die main() Methode, so dass der Benutzer Werte für jedes Auto eingibt. Die main() Methode verwendet die zusätzlichen Methoden, um an den Anwender eine Meldung auszugeben, ob das Auto ein Benzinschwein oder ein Sparauto ist.

Wir könnten in Versuchung geraten einen dieser üblichen Designfehler zu begehen:

  1. Meilen pro Gallone in einer Instanzvariablen des Objekts zu speichern, zusammen mit startMeilen, endMeilen und gallonen.
  2. Die Meilen pro Gallone direkt in den neuen Methoden berechnen.

Hier ist eine Ausgabe des Testprogramms MeilenProGallone:

D:\JavaNotes\Aufgaben>java MeilenProGallone
Geben Sie den Anfangsmeilenstand ein:
10000
Geben Sie den Endmeilenstand ein:
10400
Geben Sie die Gallonen ein:
10

Meilen pro Gallone: 40.0
Sparauto!

Zurück zum Inhaltsverzeichnis.


Aufgabe 2

Wir fügen der Auto-Klasse einen weiteren Konstruktor hinzu, der nur noch einen Parameter für den Meilenanfangsstand hat. Die Meilen pro Gallone können noch nicht berechnet werden.

Jetzt fügen wir der Klasse die folgende Methode hinzu:

void auftanken( double aktTacho, double gallonen )

Das simuliert eine Tankfüllung an der Tankstelle: aktTacho ist der aktuelle Tachometerstand und gallonen ist die Anzahl der Gallonen, die den Tank gefüllt haben. Wir speichern diese Werte in den Instanzvariablen.

Mit dieser Information können die Meilen pro Gallone berechnet werden. Wir schreiben die Methode so, dass sie jedes Mal, wenn sie aufgerufen wird, die Instanzvariablen aktualisiert (Simulation eines weiteren Tankvorgangs). Nach jedem Aufruf wird berechneMPG() die letzten Meilen pro Gallone berechnen.

Wir schreiben eine neue Testklasse MeilenProGallone2 mit einer main() Methode, die ein Auto-Objekt mit dem neuen Konstruktor erzeugt und die auftanken() Methode ein paar Mal aufruft.

D:\JavaNotes\Aufgaben>java MeilenProGallone2
+++ Besuch der Tankstelle +++
alter Tachometerstand: 0.0
Aktuellen Tachometerstand eingeben:
350
Anzahl der Gallonen fuer die Tankfuellung:
10
Meilen pro Gallone: 35.0 Autotyp: Sparauto
Programm beenden <j>a <n>ein?
n

+++ Besuch der Tankstelle +++
alter Tachometerstand: 350.0
Aktuellen Tachometerstand eingeben:
450
Anzahl der Gallonen fuer die Tankfuellung:
10
Meilen pro Gallone: 10.0 Autotyp: Benzinschwein!
Programm beenden <j>a <n>ein?
j

Hinweis 1: Zum Einlesen des Userinputs Programm beenden <j>a <n>ein? werden wir statt nextLine() die next() Methode brauchen. Die next() Methode wartet, falls kein Token gefunden wurde, auf eine neue Eingabe. Die Methode nextLine() wartet nicht, auch wenn nur noch das Zeilenende gefunden wird.

Hinweis 2: Wir verwenden eine do-while-Schleife.

do
{
  stuff here ...
}while( bedingung );
Achtet auf das Semikolon nach while( bedingung );.

Zurück zum Inhaltsverzeichnis.


Ende der Aufgaben