Da
type vom Typ
int ist, kannst du natürlich nur Zahlen übergeben, zum Beispiel "0" für "ADD" und "1" für "SUB".
Eine erste Version könnte also so aussehen:
Code:
public int calculate(int type) {
if (type == 0) {
return a + b;
} else if (type == 1) {
return a - b;
} else {
// Fehlerbehandlung, z.B. IllegalArgumentException werfen
}
}
Natürlich kannst du statt if/else auch switch/case nehmen.
So ist der Code aber noch
schlecht, denn ein Aufruf
meinCalc.calcuate(0); sagt einer zweiten Person (die die Funktion
calculate() nicht selber geschrieben hat) überhaupt nichts. Für was soll die "0" stehen?
Solche Zahlen nennt man auch "Magic Numbers". Das sind in diesem Kontext also Zahlen mit einer ganz bestimmten Bedeutung, die aber nicht ersichtlich ist.
Lösung: Konstanten für 0 (ADD) und 1 (SUB) einführen. Zuerst deklarierst du also zwei neue Attribute mit den Modifiers
public,
final und
static:
Code:
public static final int ADD = 0;
public static final int SUB = 1;
Dann ersetzt du die Zahlen 0 und 1 einfach durch die Konstanten also
Code:
public int calculate(int type) {
if (type == ADD) {
return a + b;
} else if (type == SUB) {
return a - b;
} else {
// Fehlerbehandlung
}
}
und verwendest die Konstanten auch bei jedem Aufruf, also zum Beispiel
Code:
meinCalc.calculate(Calculator.ADD);