Fachkonzept - Fallunterscheidung
Alternative Abläufe
Häufig kommt es vor, dass man bei der Verabeitung von Daten unterschiedliche Wege gehen muss.
Solche alternativen Abläufe lassen sich sehr gut mit Flussdiagrammen verdeutlichen.
Fachkonzept - Fallunterscheidungen
Bei der Modellierung alternativer Abläufe verwendet man meist zwei Ablaufmuster, die man als zweiseitige Fallunterscheidung bzw. einseitige Fallunterscheidung bezeichnet. Diese Fallunterscheidungsvarianten sollen jetzt genauer betrachtet werden.
Eine zweiseitige Fallunterscheidung besteht aus einer Bedingung und zwei Anweisungssequenzen, einer für den Fall, dass die Bedingung erfüllt ist, und einer für den anderen Fall.
Die Struktur einer solchen zweiseitigen Fallunterscheidung beschreibt man oft mit einem Struktogramm:
Das folgenden Flussdiagramm verdeutlicht die Ausführung einer solchen zweiseitigen Fallunterscheidung.
Bei der Ausführung einer zweiseitigen Fallunterscheidung wird zunächst überprüft, ob die Bedingung erfüllt ist. Ist das der Fall, so werden die Anweisungen der entsprechenden Anweisungssequenz ausgeführt. Andernfalls werden die Anweisungen der anderen Anweisungssequenz ausgeführt.
Eine einseitige Fallunterscheidung besteht aus einer Bedingung und nur einer Anweisungssequenz.
Das Struktogramm zu dieser Fallunterscheidungsvariante sieht so aus:
Hier das entsprechende Flussdiagramm zur Beschreibung der Ausführung:
Bei der Ausführung einer einseitigen Fallunterscheidung wird zunächst überprüft, ob die Bedingung erfüllt ist. Ist das der Fall, so werden die Anweisungen der Anweisungssequenz ausgeführt. Andernfalls geschieht gar nichts.
Implementierung von Fallunterscheidungen in Java
Fallunterscheidungen werden in Java mit if
-Anweisungen dargestellt.
In der zweiseitigen Variante ist eine if
-Anweisung wie folgt aufgebaut:
if(Bedingung) {
... Anweisungssequenz ...
}
else {
... Anweisungssequenz ...
}
Bei Anweisungssequenzen, die nur aus einer Anweisung bestehen, darf man die geschweiften Klammern auch weglassen. Die öffnende geschweifte Klammer kann man auch in einer eigenen Zeile schreiben. Wie man das macht ist Geschmackssache, man sollte es nur möglichst einheitlich handhaben.
Beispiel:
if(x >= y) {
maximum = x;
minimum = y;
}
else {
maximum = y;
minimum = x;
}
In der einseitigen Variante fehlt der gesamte else
-Teil:
if(Bedingung) {
... Anweisungssequenz ...
}
Beispiel:
maximum = x;
minimum = y;
if(maximum < minimum) {
int hilf = maximum;
maximum = minimum;
minimum = hilf;
}