2014. szeptember 24., szerda

Projektek, fordítási egységek, fordítás, futtatás

Nézzük most a háromszög példaprogramunk mentén azt, hogy hogyan is szervezzük a projektet, hogy utána futtatható programot kapjunk.
Először is a projekt több fájlból állhat. Minden osztálydefiníciót külön fájlba kell tenni és ha két osztály van akkor már két fájlt kell készíteni.
Korábban már volt szó róla hogy a JVM amikor betölt egy osztályt, akkor megnézi van e neki public static void main(String[] args) metódusa. Ugyanis ennek - és csak ennek - adja át a vezérlést, így tud elindulni egy Java program. Ha ilyen nincs, akkor hibaüzenettel leáll a JVM.

Tehát ha a Haromszog osztályunkat futtatni akarjuk akkor kell valahol egy main() metódus hogy azt futtatni tudjuk. Ezért készítsünk egy futtató programot (osztályt) aminek fő feladata az lesz hogy a main() metódusán keresztül elindul a program. Ez gyakorlatilag ismét egy osztálydefiníció (Java-ban minden osztály) lesz. A példánknál maradva két háromszög objektumot ha kezelni szeretnénk (mondjuk meghatározni hogy melyiknek nagyobb a kerülete) ahhoz egy olyan futtató osztályt kell definiálni, aminek van main() metódusa és lehet hogy egyetlen adattagja sincs.
Tehát a projektünk két .java kiterjesztésű fájlt fog tartalmazni. A Haromszog.java és a HaromszogTeszt.java fájlokat. Ezeket ha a fájlstruktúrában ugyanazon könyvtárba tesszük, akkor mindenféle trükk nélkül megtalálják egymást, azaz nem kell importálni semmit sem.

A Haromszog.java fájl tartalma a következő legyen:

public class Haromszog {
  private int a;
  private int b;
  private int c;

  //konstruktornál nem szabad megadni visszatérési típust

  public Haromszog(int o1, int o2, int o3){
    a=o1;
    b=o2;
    c=o3;
  }

  public int kerulet(){
    return a+b+c;
  }

  public void nagyit(float zoom){
     a = a * zoom;
     b = b * zoom;
     c = c * zoom;
  }  }


A HaromszogTeszt.java tartalma:

public class HaromszogTeszt {

  public static void main(String[] args){
    Haromszog h1 = new Haromszog(3,4,5);
    Haromszog h2 = new Haromszog(3,5,5);
    if (h1.kerulet()>h2.kerulet()){     
        System.out.println("H1 kerülete nagyobb");
    } else if(h1.kerulet()>h2.kerulet()) {
        System.out.println("H2 kerülete nagyobb");
    } else {
        System.out.println("A kerületek egyenlőek");
    }  
}

Mint láthatjuk a tesztprogramban példányosítjuk a Haromszog osztály két objektumát, majd elvégezzük az összehasonlító és kiírató műveleteket.

Fordításkor a HaromszogTeszt.java fájlt kell fordítanunk a következő paranccsal:

javac HaromszogTeszt.java

Mivel a Haromszog osztályt használja, megnézi hogy van-e olyan import könyvtár, ami tartalmazza a Haromszog osztály definícióját (az import később kerül tárgyalásra). Mivel nincs ezért megnézi van-e az aktuális könyvtárban Haromszog.java fájl. Mivel ott kell lennie ezért lefordítja azt, ezek után már fogja tudni használni a Haromszog osztályt.

A fordítás sikeres lefutása után a projektünk könyvtárában ott kell lenni a két .java fájl mellett két .class fájlnak is. Ezek után a tesztosztályt betöltetjük a JVM-el és végrehajtódik a programunk (figyelem! Csak az osztály nevét kell megadni paraméterül):

java HaromszogTeszt

A program pedig kiírja hogy melyiknek nagyobb a kerülete.

A fordításról és a futtatásról, valamint a fájlokról ennyit kellett elmondani. 

A következőkben tovább finomítjuk a Haromszog osztályunkat és még objektum-orientáltabbá tesszük az egész projektet.

Nincsenek megjegyzések:

Megjegyzés küldése