Java programozás 2. – Alapok

Első programunk, avagy minden kezdet nehéz?

Ahhoz, hogy az első Java programunkat megírhassuk, szükséges, hogy a számítógépen rendelkezésre álljon a Java fejlesztői környezet (JDK) valamelyik számunkra szükséges változata. Mivel egy egyszerű szövegszerkesztővel is lehet programokat írni, akár úgy is nekikezdhetnénk a munkának, de én javasolnám, hogy valamilyen fejlettebb szövegszerkesztőt használjunk, ami kódszínezéssel és a Java fordító használatával segíti munkánkat.

A Java programnyelv tisztán objektumorientált, ami azt jelenti, hogy maga a program is egy osztály, amiből a Java virtuális gép, ami a tényleges futtatást végzi, egy objektumot hoz létre, ami változókkal és metódusokkal rendelkezik. Első Java programunk legyen mondjuk ez:

public class Alapok
{
  public static void main( String[] args )
  {
    System.out.println("Hello Vilag");
  }
}

Az első és nagyon fontos dolog, hogy a Java programozási nyelv különbséget tesz kis- és nagybetűk között. A “valami” és “Valami” szavak különbözőnek számítanak! Ez a későbbiekben számos hiba forrása lehet és lesz is! Nézzük meg, milyen részekből áll ez a program, amit egyfajta alapnak is tekinthetünk!

Rögtön az első sor magyarázatra szorul: public class Alapok

A public kulcsszó azt jelenti, hogy az adott osztály publikus, vagyis bárki láthatja, készíthet belőle példányt. A class kulcsszó azt jelenti, hogy ez a kód egy osztályt ír le, aminek a neve Alapok. Nagyon fontos, hogy ez nem egyenlő az alapok nevű osztállyal. Emlékszel? Kis és nagybetű. Az osztály neve meg kell, hogy egyezzen a fájlnévvel, ahova a forráskódot mentjük, jelen esetben a forráskódunk neve a következő legyen: Alapok.java

Jegyezd meg: A Java nyelvben minden osztály nevét nagy kezdőbetűvel írjuk!

Máris sok mindent megtudtunk, amivel később rengeteg problémától kíméljük meg magunkat. Javaslom mindenkinek, hogy ezt az alap kódot a Java programozás elején sokszor gépelje be, hogy rögzüljön ez a szerkezet. Nézzük a következő sort, ami jelen esetben csak egy { jel. Ez egy blokk nyitását jelenti, egyfajta zárójelezés. A Java nyelvben a blokkokat (utasítások sorozatát) { } jelek közé tesszük. Mint a matematikában, úgy a programozásban is nagyon fontos, hogy a jelekhez, legyen az { [ vagy ( jel, mindig tartozzon nyitó és záró pár is. Ha ezek közül akár csak egy is hiányzik, akkor a programunk nem fordítható le, fordítási hibát eredményez.

A fordítási hiba egy programkód esetén azt jelenti, hogy nem felel meg az adott programnyelv “nyelvtani” szabályainak. Ezek jellemzően zárójel hibákat, pontosvessző hibákat jelentenek, melyeknek mindnek a helyén kell lennie, hogy nyelvtani szempontból hibátlan kódot kapjunk. Ez persze nem azt jelenti, hogy a programunk tökéletes, csak a fordító fogadja el. Az már csak megszokás kérdése, hogy ezeket a blokk jeleket ki hogyan használja. Majd erre nézünk később pár példát.

A következő sor a legbonyolultabb, de programozási szempontból ezt most elég, ha csak így megtanuljuk és alkalmazzuk. Később majd megértjük mit is jelent. Elég annyit tudni, hogy a main() metódus a programunk úgynevezett belépési pontja, vagyis itt kezdődik a programunk végrehajtása. Nem szabad viszont elsiklani egy nagyon fontos dolog felett ebben a sorban, amit nagyon komolyan kell vennie annak, aki programozni akar. Ezzel a fontos dologgal kezdődik az egész sor. A behúzásról van szó. Ez a sor beljebb kezdődik, mint az előző. Miért? Mert ez a sor egy blokkon belül található. Az előző sorban ugye nyitottunk egy blokkot, mert az osztály esetén kötelező blokkot használni. Az osztályban változókat és metódusokat (ami utasítások sorozata) fogunk használni. Egy blokkon a sorokat ajánlott beljebb kezdeni, hogy lássuk, ezek a sorok az adott blokkhoz tartoznak. Ennek nagyon fontos szerepe lesz a kód olvashatóságának szempontjából.

Nagyon fontos ezt már az elején megszokni, ha blokkot nyitunk, akkor a blokk sorai beljebb kell kezdeni. A blokk behúzását többféle módszerrel oldják meg. Van aki tabulátorral, van aki szóközökkel, van aki 2 szóközzel, van aki 4-gyel, 8-cal, stb. A lényeg a következetesség. Az első blokk egy szinttel kezdődjön beljebb, a következő, ami ezen a blokkon belül van egy újabb szinttel, stb. Erre a példakódban is látunk egy mintát, a System.out.println() sor már a main() metódus blokkjában van, ezért az nem 2 hanem 4 szóközzel kezdődik beljebb.

A következő sor már egy tényleges program utasítás. A System.out.println() egy alap metódus, amit a Java a konzolra történő kiíratásra használ. Itt arra kell odafigyelni, hogy a System szó nagybetűvel kezdődik. Mi kezdődött még nagybetűvel? A program osztálya, az Alapok. A System is egy osztály, ezért írjuk nagybetűvel, csakúgy, mint minden más osztályt. A beépítetteket másképp el sem fogadja a Java, egyszerűen annyit mond, ismeretlen szimbólum. (System és nem nem system) Ezért fontos az, hogy a saját osztályaink nevét is nagybetűvel kezdjük megszokásból, mert ez az íratlan szabály az osztályok használatára. Külön felhívnám a figyelmet a System.out.println() metódusra. Ez egy több részből álló metódus hívás. A System osztályon belüli out nevű objektum println metódusát hívja meg.

Látjuk azt, hogy ez egyfajta hierarchia. Az osztály van a legmagasabb szinten, annak van egy objektuma, az objektumnak pedig egy metódusa. De egy konkrét metódusra hivatkozáskor azt meg kell címezni. Melyik osztály melyik objektumában található. Egyszerűen egymás mellé kell őket írni megfelelő sorrendben . jelekkel (operátorral) elválasztva. Ügyeljünk rá, hogy a System egy osztály, tehát nagybetűs. Ami szöveget pedig odaadtunk a println() metódusnak, azt kiírja a konzolra (parancssorba).

Az utolsó nagyon fontos dolog, a kiíratást végző utasítás végén lévő pontosvessző! Java-ban minden egyes utasítást pontosvesszővel zárunk le. Egy utasítás, egy pontosvessző. Ha egymás után utasítások sorozatát írjuk (például egy blokkban), akkor az egyes utasításokat pontosvesszőkkel választjuk el egymástól. Ezeket az elválasztott utasításokat írhatnánk akár egy sorba is, de az olvashatóság azt kívánja, hogy egy utasítás egy sor. Így olvashatóbb és tagoltabb a kód. Nem a fordítónak szükséges ez, hanem az embernek, aki a kódot nézi. A pontosvessző viszont igencsak megkeserítheti az életünket, ha nem jó helyen használjuk. Ha olyan helyre rakjuk, ahol semmi keresnivalója, akkor a fordító jelezni fogja, hogy gond van. Persze akkor sem azt mondja, hogy rossz helyen van a pontosvessző, hanem maga a rossz helyen lévő pontosvessző okoz máshol gondot, de ha párszor belefutunk ebbe a hibába, utána rendszerint már hamar megtaláljuk. A gond az, hogy olyan helyre is tehetjük, amiért még a fordító se szól, hogy a kódunk nyelvtanilag helytelen, viszont a program nem egészen azt csinálja, amit meg elvárnánk tőle. Ez egy újfajta probléma. A már emlegetett nyelvtani hibát szintaktikai hibának hívjuk, ez az utóbb említett, amikor a programunk lefordul, de nem az elvárásnak megfelelően működik, szemantikai hibáról beszélünk. Annyit jegyezzünk meg most, hogy a pontosvesszőre nagyon ügyeljünk és csak utasítások végére tegyük ki, mert ott a helyük.

Vége is van a programunknak. Illetve mégsem. Mi maradt ki? A két blokkot lezáró } jel. Az első (belső) blokk a main() metódus a benne lévő kiíratással, a második (külső) blokk pedig maga az Alapok osztály, a tényleges programunk. Ha megnézzük a blokkokat nyitó és záró jelek függőlegesen egy oszlopban vannak, így könnyebb a párjukat megtalálni, az azon belül lévő részek pedig minden új megnyitott blokkban például 2 szóközzel beljebb kerültek. Erről később majd még biztosan lesz szó.

Következő lecke: Változók

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

*

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .