Ich habe nun die Aufgabe wieder vom Prof. bekommen. Nun hat er mir diese Aufgabe nicht bewertet und mir folgende Sachen bemängelt:
- Sie haben eine neue Methode setGeschwindigkeit() (die nirgends
benutzt wird) eingeführt, hätten die Exception-Erzeugung aber
stattdessen in beschleunigen() ergänzen sollen. Dadurch
findet das Werfen der NichtMoeglichException im Test nicht statt und
es treten negative Geschwindigkeiten auf.
- In der Methode test() fehlt das Abfangen der NichtMoeglichException,
die eigentlich (s.o.) bei einzelnen Geschwindigkeitsänderungen
auftreten können sollte. Dabei sollten die Exceptions in jedem
einzelnen Schleifendurchlauf und nicht für die Schleife insgesamt
abgefangen werden, so dass der Test auch nach einer unzulässigen
Änderung noch fortgesetzt würde.
- Eine FalscherWertException, die ja nur von einem unzulässigen
Startwert beim Konstruktoraufruf ausgelöst werden kann, sollte
dagegen innerhalb test() nicht abgefangen sondern erst in main()
behandelt werden.
Ähm... ich brauch noch einmal eure Hilfe....
Nochmal die Klassen im jetzigen Zusand:
Code:
public class FalscherWertException extends Exception { //Klasse FalscherWertException erstellen
public FalscherWertException( String ErrorMessage ){ //Konstruktor FalscherWertException generieren
super(ErrorMessage);
}
public FalscherWertException(){
}
}
Code:
public class NichtMoeglichException extends Exception { //Klasse NichtMoeglichException erstellen
public NichtMoeglichException( String ErrorMessage ){ //Konstruktor FalscherWertException generieren
super(ErrorMessage);
}
public NichtMoeglichException(){
}
}
Code:
public class Fahrzeug {
private int geschwindigkeit;
public Fahrzeug(int geschwindigkeit) throws FalscherWertException{
if(geschwindigkeit < 0){
throw new FalscherWertException("Geschwindigkeit ist negativ");//gibt es Ausnahmeregel FalscherWertException
} else
{
this.geschwindigkeit = geschwindigkeit;
}
}
public int getGeschwindigkeit() {
return geschwindigkeit;
}
public void setGeschwindigkeit(int neueGeschwindigkeit) throws NichtMoeglichException{
if (neueGeschwindigkeit < 0){
throw new NichtMoeglichException("Die neue Geschwindigkeit ist negativ!");
} else {
this.geschwindigkeit = neueGeschwindigkeit;
}
}
// negative Beschleunigungen verringern die Geschwindigkeit
public void beschleunigen(int aenderung){
geschwindigkeit += aenderung;
}
}
Code:
public class FahrzeugTester {
private static void test(int start) {
int[] aenderungen = { 30, 50, -90, 30, -80 };
try {
Fahrzeug wagen = new Fahrzeug(start);
for (int i = 0; i < aenderungen.length; i++) {
System.out.println("Aendern der Geschwindigkeit um "
+ aenderungen[i]);
wagen.beschleunigen(aenderungen[i]);
System.out.println("Aktuelle Geschwindigkeit: "
+ wagen.getGeschwindigkeit());
}
} catch (FalscherWertException fwe) {
// Hier kann man jetzt auf den Fehler reagieren zum Beispeil:
System.out.println("Es wurde eine negative Geschwindigkeit eingeben");
// Man kann auch die Fehlermessage ausgeben lassen sollte
// aber nur für Debug zwecke genutzt werden
// System.err.println(fwe);
}
}
public static void main(String[] args) {
int[] startwerte = { 0, 10, -20, 200 };
for (int i = 0; i < startwerte.length; i++) {
System.out.println("Beginn des Tests mit Startgeschwindigkeit "
+ startwerte[i]);
test(startwerte[i]);
System.out.println("Test mit Startgeschwindigkeit "
+ startwerte[i] + " beendet.");
}
}
}