Modulárisan rejtsük el a szemetet!

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!

Egy klasszikus vicc

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ó. 

Hogyan tudunk bármi morzézni?

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.

Miben fog ez nekünk segíteni?

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.

Elrejteni azt, ami nem fontos

Nos, ezért jó a moduláris programozás! Amit egyszer megcsináltunk, azt össze lehet csomagolni, és később bárki hasznosíthatja!