Wann soll ein Entwickler Assertions anstatt einer regulären Prüfung bei jedem Aufruf in einer Anwendung nutzen?
Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).
| Niveau | 2 |
| Schwierigkeitsgrad | mittel |
| Zeit | 4 Minuten |
Antwort zur Frage 2.22: Assertions
public class Annahme {public static void main(String[] args) {
String s;
// Korrekte Aufrufe
s = verkettung("Liese", "Meitner");
int a = alterInMonaten(19, 2);
// Nicht korrekte Aufrufe.
// Sie sollen von Assertions gefangen werden
s = verkettung(null,"Curie");
a = alterInMonaten(250, 13);
}
public static String verkettung(String nachname, String vorname) {
// Es darf keine Nullreferenz
// als Vor- oder Nachname benutzt werden
// Assertions hier einfügen:
assert ((nachname != null) && (vorname != null));
return (vorname + nachname);
} // Ende der Methode verkettung
public static int alterInMonaten(int alterJahre, int alterMonate) {
// Das Alter einer Person wird in seinem Alter in Jahren und den
// Monaten als Wert zwischen 1 und 12 übergeben.
// Das Alter muss zwischen 0 und 150 Jahren liegen.
// Die laufenden Monate müssen zwischen 1 und 12 liegen.
// Assertions hier einfügen:
assert ((alterJahre >= 0) &&
(alterJahre <= 150) &&
(alterMonate > 0) &&
(alterMonate <= 12));
return (alterJahre * 12 + alterMonate);
} // Ende der Methode alterInMonaten
} // Ende der Klasse

Comments
Fehler
assert ((alterJahre >= 0) && (alterJahre <= 150)
&& (alterMonate > 0) && (alterJahre <= 150));
Es muss am Ende alterMonate <= 12 heißen...
Danke, korrekte Beobachtung.
Wurde korrigiert.
Fehler???
Die letzten Zeilen in der Lösung ...
assert ((alterJahre >= 0) &&
(alterJahre <= 150) &&
(alterMonate > 0) &&
(alterJahre <= 150)); //müsste hier nicht (alterMonate <= 12) ??
return (alterJahre * 12 + alterMonate); } // Ende der Methode alterInMonaten} // Ende der Klasse
Danke, korrekte Beobachtung.
Ich habe den Fehler korrigiert.
S. Schneider