Gyakorlati alapok III.

Több osztály + több main()

 

A kérdés tehát az előző fejezetben foglaltak alapján az, hogy miként fognak az algoritmusok viselkedni, ha több osztály több main() főprogramot is tartalmaz?

 

Ennek modellezésére rögtön gyártunk is 1 releváns helyzetet:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {
    public static void main(String[] args) {
        System.out.println("Ez itt a Main osztály.");
    }
}

 

Main2.java

 

public class Main2 {
    public static void main(String[] args) {
        System.out.println("Ez itt a Main2 osztály.");
    }
}

 

Main3.java

 

public class Main3 {
    public static void main(String[] args) {
        System.out.println("Ez itt a Main3 osztály.");
    }
}

 

No, ennél egyszerűbb nem is lehet 1 többosztályos működés...

 

Ha Eclipse-ben megalkottuk a fenti kódhelyzetet, akkor a keletkezett 3 osztályt külön "osztályfülökön" láthatjuk:

 

www.informatika-programozas.hu

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Az Eclipse érzékeli a main() redundanciát és mindig az a main() főprogram fog lefutni, amelyik osztály éppen aktív (azaz amelynek füle éppen előtérben van). Ennek ellenére már okoztunk magunknak 1 megoldandó problémát, mert a programnak több belépési pontja van.

 

Ez akkor látszik terebélyesedni, ha a kódot futtatható .jar állománnyá kívánjuk exportálni:

 

Export... -> Runnable JAR file

 

Az utolsó ablak kulcsfontosságú a korrekt futtatás szempontjából:

 

www.informatika-programozas.hu

 

Az Eclipse érzékeli az összes (értsd: a munkafelületünkön /workspace/ lévő) main() főprogramot és kilistázza a Launch configuration opcióban. Itt tehát konkrétan rá kell mutatnunk az általunk futtatni kívánt main() főprogramra.

 

Ha így teszünk, a kívánt main() főprogram futtatása az elvárt eredményeket fogja szolgáltatni...

 

www.informatika-programozas.hu

 

...másként igen színes hibajelenségekkel szembesülhetünk.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Javaslatom tehát, hogy programjainknak -ha csak nincsenek erre alaposabb okaink-, alapértelmezésben csak 1 belépési pontot, azaz 1 db main() főprogramot tartalmazzon.