Szóval SOS? Itt tartottunk az előző részben:
package hello;
public class Hello {
public static void ti() {
System.out.print(".");
}
public static void ta() {
System.out.print("-");
}
public static void pause() {
System.out.print(" ");
}
public static void s() {
ti();
ti();
ti();
pause();
}
public static void o() {
ta();
ta();
ta();
pause();
}
public static void main(String[] args) {
s();
o();
s();
}
}
Igaz, a main-ban látszik a lényeg, de eközben kerülgetni kell a rengeteg sok egyéb vackot. Mi lenne, ha a nem-lényeg sorokat besöpörnénk a szőnyeg alá?
A Java sok mindenre jó, de sajnos nincs benne szőnyeg. :) Viszont itt a remek lehetőség arra, hogy elválasszuk a programunk egyedi részét (hogy pont SOS-t kell morzézni) és az általános részét (ti, tá, meg betűk bármely morzés programnak kellenek)!
Kattints ismét jobb gombbal a Package explorer-be, és hozz létre egy új osztályt (New/Java class) aminek a neve legyen Morze. Itt már nem kell bekapcsolni, hogy automatikusan hozza létre a public static void main dolgot, hisz nem ez lesz a programunk eleje, hanem csak egy részegysége lesz.
Másold bele a Morze.java-ba az általános részeket:
package hello;
public class Morze {
public static void ti() {
System.out.print(".");
}
public static void ta() {
System.out.print("-");
}
public static void pause() {
System.out.print(" ");
}
public static void s() {
ti();
ti();
ti();
pause();
}
public static void o() {
ta();
ta();
ta();
pause();
}
}
Marad a főprogramban a lényeg:
package hello;
public class Hello {
public static void main(String[] args) {
Morze.s();
Morze.o();
Morze.s();
}
}
No most, ünnepélyes keretek között csukd be a Morze.java szerkesztőjét. Mi maradt? A lényeg maradt!
Mindig arra törekszünk, hogy a progi minél egyszerűbb, rövidebb legyen, hogy a "lényege", hogy mit fog csinálni, előbújjon. Sokszor elveszik a lényeg a való életben is, erről szól ez a klasszikus:
Grünnek halüzlete van. Kitesz a kirakatba egy táblát: Ma itt friss hal kapható. Arra jön Kohn, és megkérdezi: -Te, holnap nem lesz friss hal? -De lesz. -mondja Grün, és átfesti a táblát: Itt friss hal kapható. -Te, van neked más üzleted is? -Nincs. - mondja Grün, és átfesti a táblát: Friss hal kapható. -Te, árulsz te romlott halat is? -Dehogy. - mondja Grün, és átfesti megint: Hal kapható. -Te, veszel is halat? - kérdi Kohn. -Nem, csak eladok. - mondja Grün és átfesti a táblát: Hal. És az, hogy Hal, ugyanazt jelenti, mint az, hogy: Ma itt friss hal kapható.
Természetesen a Morze.java-ba az összes betűre írhatunk egy-egy függvényt :) Én tudom, hogy ettől jobb módszerek is vannak erre, de egyelőre még nem mutattam meg őket, így maradjunk a lábbalhajtós megoldásban.
Egy nagyon fontos dolgot máris észre fogsz venni. Igaz, hogy huszonsok új függvényt írsz a Morze belsejébe hogy minden betűnek legyen függvénye, de ez nem teszi a főprogramot egy picit se bonyolultabbá, vagy hosszabbá! Hoppá! Ugyeugye, nocsak-nalám?
Akkor ezek szerint, ha valaki hozzánk vág egy 8000 soros külön kis Java modult, amivel mondjuk ki lehet számolni a fecske repülési sebességét, akkor az nekünk nehéz lesz? Egyáltalán nem lesz nehéz, hiszen mi csak használjuk! Nem is érdekel minket, hogy mekkora, mert csak azt az egy-két függvényt használjuk belőle, ami nekünk kell.
Autózni is iszonyatosan nehéz lenne, ha minden autóvezető saját maga építené az autóját, és végezné el a vasöntéstől a bőr üléshuzat varrásáig minden apró kis lépést. Szerencsére ez nem így van, szerencsére ezt mások elvégzik, nekünk csak a lényegre kell koncentrálni: hogyan jutunk el a buliba a kocsival.