Gyakorlati alapok II.
Igazi Para Péter: metódus, mint bemeneti paraméter
Ha pillanatra visszapillantunk az eddig tanultakra, akkor már egészen megszokhattuk, hogy a metódusokat, mint önálló, többé-kevésbé zárt, de legalábbis nagyon ellenőrzötten működő programegységekként alkalmazzuk. Voltaképpen a jelen, Gyakorlati alapok II. című fejezetcsomag ezt a szemléletet gyakoroltatja be. Ilyen minőségükben beküldünk 1 vagy több egyszerű vagy összetett típusú bemeneti adatot és várjuk "alul" a kimeneti adatot.
Az előző, Nyilvános adatok a szupertitkos személyi számból című fejezetben azonban még ennél is tovább léptünk: egy egész objektumot adtunk meg bemeneti paraméterként.
Ennek legfontosabb feltétele az volt és marad, hogy ügyelnünk kell az objektumok csatlakozási pontjainál lévő típusegyezésekre, más szóval a bemeneti és kimeneti objektumoknak típusaikban, értékátadás szempontjából azonosnak (kompatibilisnek) kell lenniük.
Ha például egy adatszolgáltató objektum kimeneti adattípusa int, azaz int típusú számot képes átadni egy adatvevő objektumnak, akkor az adatvevő objektum paraméterlistájában nem állítható be más adattípus az adatszolgáltató objektum fogadására, csakis int. Természetesen ilyen esetekben sohasem magukkal az objektumokkal játszadozunk, hanem csupán a feléjük mutató "névjegykártyáikkal", a referenciákkal (amelyekről már megállapítottuk, hogy voltaképpen biztonságos mutatók).
Nézzük meg egy, már publikált, de önmagában NEM futtatható Java-kódrészletet az említett fejezetből:
static void kiertekeles(boolean obj){
boolean ok = true;
ok = obj;
if(ok){
System.out.println("ÉRVÉNYES.");
}
else
System.out.println("NEM ÉRVÉNYES.");
}
Természetesen ügyeltünk a típusegyezésekre, így a jelen példában a kiertekeles() metódus boolean típusú függvényt vár bemeneti paraméterként. A rejtélyes kód valójában a main() függvényben válik kiemelten érdekessé, hiszen ott derül ki, hogy a bemeneti függvény mindegyike fontos, boolean típusú, személyi szám ellenőrző, validátor metódus. Egyúttal azt is észrevehetjük, hogy mindegyik validátor függvény szintén vár bemeneti paramétereket, persze nem objektumokat, hanem "csupán" összetett adatszerkezeteket (itt tömb):
public static void main(String[] args) {
int[] szemSzamTomb = new int[10];
szemSzamTomb = adatBekeresEllenorzes();
System.out.println();
System.out.println("Az Ön által megadott személyi szám:");
kiiras(szemSzamTomb);
System.out.println();
System.out.print("\nA saját ellenőrző függvény szerint: ");
kiertekeles(isValidSzemelySzam(szemSzamTomb));
System.out.print("A régi képlet szerint: ");
kiertekeles(ValidatorRegi(szemSzamTomb, szemSzamTomb[10]));
System.out.print("Az új képlet szerint: ");
kiertekeles(ValidatorUj(szemSzamTomb, szemSzamTomb[10]));
}
}