2014. szeptember 23., kedd

A Java programozási nyelv - Osztályok, objektumok

A Java nyelv legfontosabb elemét az osztályokat és az objektumokat nézzük most meg.
Azért ezek a legfontosabbak, mert osztálydefiníció nélkül nincs Java program.  Tehát hiába tudunk elemi adattípusú változókat deklarálni, meg ciklusokat szervezni, ha nincs osztály, amiben mindezt befoglaljuk. A Java-ban minden az osztálydefiníciókból indul. Az osztályok a Java nyelv alapelemei.

Egy osztályt a class kulcsszóval tudunk definiálni. A definícióban az osztály elérhetőségét is meg szoktuk adni (erről részletesebben később). Az általános szintaktika a következő:

class FirstClass {

}

Ezzel definiáltunk egy FirstClass osztályt, aminek nincs sem adattagja, sem metódusa. Van egy speciális metódusa minden osztálynak, ami automatikusan elérhető, akkor is ha nem adjuk meg. Ez a metódus a konstruktor. A szó jelentése "létrehozó". A konstruktor alapfeladata a memóriafoglalás. Ez mellett ezt ki szokjuk bővíteni a példányosításkor történő inicializálásokkal, azaz a példányosuló objektum kezdő állapotának beállításával. A FirstClass példában az alapértelmezett konstruktor memóriát foglal az objektumnak. Ennél többet ez az osztály egyenlőre nem tud, csupán példa értéke van.

Most tervezzünk meg egy osztályt, ami képes egy háromszög adatait tárolni.

class Haromszog {
  int a;
  int b;
  int c;
}

Az osztálydefiníció gyakorlatilag egy típus létrehozást jelent. Ahhoz hogy az osztályt használjuk, példányosítani kell belőle egy objektumot. Ez az osztály egy példánya lesz. A fenti példa alapján egy háromszög objektumot kapunk.
Mint írtam, a példányosításkor memóriafoglalás történik. Ahhoz hogy az objektumra hivatkozni tudjunk szükséges az úgynevezett objektumreferencia. Ezt a new operátorral lehet kinyerni.
Nézzünk egy példányosítást:

Haromszog h1 = new Haromszog();

Ezzel létrehoztunk egy h1 nevű referenciaváltozót, amibe a Haromszog osztály konstruktora által létrehozott objektumpéldány referenciáját rendeljük. Ezek után a h1 referenciaváltozón keresztül elérhetjük az objektum tulajdonságait és metódusait. Erre a . (pont) operátort használjuk. Az alábbi példában értéket adunk a háromszög tulajdonságaink (a, b, c oldal hossza), majd kiíratjuk a háromszög objektum kerületét.

h1.a = 3;
h1.b = 4;
h1.c = 5;

System.out.println("Kerület: "+h1.a+h1.b+h1.c);

Ezzel láthatjuk hogy az objektum adattagjai "működnek". Az objektumoknak nem csak adattagjai, hanem metódusai is vannak. A metódusok azok az eljárások, módszerek, amik az objektum adattagjaival végeznek műveleteket, információt adnak az objektumról.
Elsőként hozzunk létre egy olyan metódust, ami kiszámolja a háromszög kerületét.

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

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

}

Ezek után a háromszög kerülete a következő módon íratható ki. (a fentebbi példa nyomán)

System.out.println("Kerület: "+h1.kerulet());

Így már sokkal szebb. Ezzel gyakorlatilag elkészítettünk egy olyan osztályt, aminek tulajdonságai és metódusa is van. Példányosítottunk egy objektumot, majd használtuk azt.

Azt azért el kell hogy mondjam hogy ez a példa bár működik, de több sebből vérzik, keményen sérti az OO elveket és én úgy gondolom hogy a Java igazából az OOP miatt csodálatos világ. A következő cikkben tovább folytatjuk, még inkább OO elvekhez közelivé tesszük az osztályunkat.




Nincsenek megjegyzések:

Megjegyzés küldése