2. Kontrolle - nur zulässige Werte
In diesem Abschnitt wollen wir 2 logische Fehler im Programm korrigieren:
- Das Zurücksetzen des km-Standes soll nicht mehr möglich sein.
- Das Fahren einer negativen Strecke soll nicht mehr möglich sein.
Klasse Kfz
Methode setKmStand()
Diese Methode - also der Setter für das Attribut kmStand
- soll keine Verkleinerung des km-Stands mehr zulassen. Dazu wird mit einer if-else-Verzweigung geprüft, ob der neue Parameter-Wert kleiner ist als der vorhandene Wert des Attributs. Wenn ja, erfolgt eine Fehlermeldung, wenn nicht, wird die Anweisung akzeptiert.
public void setKmStand(int kmStand) {
if (this.kmStand > kmStand) {
System.out.println(this.marke + " - km-Stand zurueckstellen ist NICHT ERLAUBT!");
}
else {
this.kmStand = kmStand;
}
}
Methode fahre()
In dieser Methode sollen negative Werte für den Parameter strecke
verhindert werden.
Dazu nutzen wir einfach die gerade korrigierte Setter-Methode setKmStand(). Wenn der Parameter negativ ist, dann ist die Summe this.kmStand + strecke kleiner als this.kmStand, und die Setter bricht mit einer Warnmeldung ab.
public void fahre(int strecke) {
System.out.println("---------------------------------");
System.out.println("Fahrtvorgang " + this.marke + ":");
System.out.println("Geplante Fahrtstrecke : " + strecke + " km");
setKmStand(this.kmStand + strecke);
System.out.println("neuer Km-Stand : " + this.kmStand + " km");
}
Klasse Verkehr
Die Klasse Verkehr
wird nicht verändert.
public class Verkehr {
public static void main(String[] args) {
Kfz kfz1 = new Kfz("VW");
Kfz kfz2 = new Kfz("BMW");
kfz1.fahre(78);
kfz2.fahre(220);
kfz1.fahre(23);
kfz2.fahre(65);
System.out.println();
System.out.println("Versuchte Manipulation des km-Stands:");
kfz2.setKmStand(100);
System.out.println();
System.out.println("Aktuelle km-Staende:");
System.out.println(kfz1.getMarke() + ": " + kfz1.getKmStand() + " km");
System.out.println(kfz2.getMarke() + ": " + kfz2.getKmStand() + " km");
kfz1.fahre(-70);
}
}
Ausführen der Klasse Verkehr
führt zur Konsolenausgabe:
--------------------------------- Objekterstellung VW --------------------------------- Objekterstellung BMW --------------------------------- Fahrtvorgang VW: Geplante Fahrtstrecke : 78 km neuer Km-Stand : 78 km --------------------------------- Fahrtvorgang BMW: Geplante Fahrtstrecke : 220 km neuer Km-Stand : 220 km --------------------------------- Fahrtvorgang VW: Geplante Fahrtstrecke : 23 km neuer Km-Stand : 101 km --------------------------------- Fahrtvorgang BMW: Geplante Fahrtstrecke : 65 km neuer Km-Stand : 285 km Versuchte Manipulation des km-Stands: BMW - km-Stand zurueckstellen ist NICHT ERLAUBT! Aktuelle km-Staende: VW: 101 km BMW: 285 km --------------------------------- Fahrtvorgang VW: Geplante Fahrtstrecke : -70 km VW - km-Stand zurueckstellen ist NICHT ERLAUBT! neuer Km-Stand : 101 km
Ziel erreicht: Beide problematischen Anweisungen (kfz2.setKmStand(100)
und kfz1.fahre(-70)
werden nicht ausgeführt, und man erhält eine Warnmeldung.