{"id":69,"date":"2014-04-10T11:18:50","date_gmt":"2014-04-10T09:18:50","guid":{"rendered":"http:\/\/www.webotlet.hu\/wp\/?p=69"},"modified":"2016-09-10T17:41:13","modified_gmt":"2016-09-10T15:41:13","slug":"java-alapok","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=69","title":{"rendered":"Java programoz\u00e1s 2. &#8211; Alapok"},"content":{"rendered":"<h1>Els\u0151 programunk, avagy minden kezdet neh\u00e9z?<\/h1>\n<p>Ahhoz, hogy az els\u0151 Java programunkat meg\u00edrhassuk, sz\u00fcks\u00e9ges, hogy a sz\u00e1m\u00edt\u00f3g\u00e9pen rendelkez\u00e9sre \u00e1lljon a Java fejleszt\u0151i k\u00f6rnyezet (JDK) valamelyik sz\u00e1munkra sz\u00fcks\u00e9ges v\u00e1ltozata. Mivel egy egyszer\u0171 sz\u00f6vegszerkeszt\u0151vel is lehet programokat \u00edrni, ak\u00e1r \u00fagy is nekikezdhetn\u00e9nk a munk\u00e1nak, de \u00e9n javasoln\u00e1m, hogy valamilyen fejlettebb sz\u00f6vegszerkeszt\u0151t haszn\u00e1ljunk, ami k\u00f3dsz\u00ednez\u00e9ssel \u00e9s a Java ford\u00edt\u00f3 haszn\u00e1lat\u00e1val seg\u00edti munk\u00e1nkat.<\/p>\n<p>A Java programnyelv tiszt\u00e1n objektumorient\u00e1lt, ami azt jelenti, hogy maga a program is egy oszt\u00e1ly, amib\u0151l a Java virtu\u00e1lis g\u00e9p, ami a t\u00e9nyleges futtat\u00e1st v\u00e9gzi, egy objektumot hoz l\u00e9tre, ami v\u00e1ltoz\u00f3kkal \u00e9s met\u00f3dusokkal rendelkezik. Els\u0151 Java programunk legyen mondjuk ez:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">public class Alapok\r\n{\r\n  public static void main( String&#x5B;] args )\r\n  {\r\n    System.out.println(&quot;Hello Vilag&quot;);\r\n  }\r\n}\r\n<\/pre>\n<p>Az els\u0151 \u00e9s nagyon fontos dolog, hogy a Java programoz\u00e1si nyelv k\u00fcl\u00f6nbs\u00e9get tesz kis- \u00e9s nagybet\u0171k k\u00f6z\u00f6tt. A &#8220;valami&#8221; \u00e9s &#8220;Valami&#8221; szavak k\u00fcl\u00f6nb\u00f6z\u0151nek sz\u00e1m\u00edtanak! Ez a k\u00e9s\u0151bbiekben sz\u00e1mos hiba forr\u00e1sa lehet \u00e9s lesz is! N\u00e9zz\u00fck meg, milyen r\u00e9szekb\u0151l \u00e1ll ez a program, amit egyfajta alapnak is tekinthet\u00fcnk!<\/p>\n<p>R\u00f6gt\u00f6n az els\u0151 sor magyar\u00e1zatra szorul:\u00a0public class Alapok<\/p>\n<p>A public kulcssz\u00f3 azt jelenti, hogy az adott oszt\u00e1ly publikus, vagyis b\u00e1rki l\u00e1thatja, k\u00e9sz\u00edthet bel\u0151le p\u00e9ld\u00e1nyt. A class kulcssz\u00f3 azt jelenti, hogy ez a k\u00f3d egy oszt\u00e1lyt \u00edr le, aminek a neve Alapok. Nagyon fontos, hogy ez nem egyenl\u0151 az alapok nev\u0171 oszt\u00e1llyal. Eml\u00e9kszel? Kis \u00e9s nagybet\u0171. Az oszt\u00e1ly neve meg kell, hogy egyezzen a f\u00e1jln\u00e9vvel, ahova a forr\u00e1sk\u00f3dot mentj\u00fck, jelen esetben a forr\u00e1sk\u00f3dunk neve a k\u00f6vetkez\u0151 legyen: Alapok.java<\/p>\n<p>Jegyezd meg: <strong>A Java nyelvben minden oszt\u00e1ly nev\u00e9t nagy kezd\u0151bet\u0171vel \u00edrjuk!<\/strong><\/p>\n<p>M\u00e1ris sok mindent megtudtunk, amivel k\u00e9s\u0151bb rengeteg probl\u00e9m\u00e1t\u00f3l k\u00edm\u00e9lj\u00fck meg magunkat. Javaslom mindenkinek, hogy ezt az alap k\u00f3dot a Java programoz\u00e1s elej\u00e9n sokszor g\u00e9pelje be, hogy r\u00f6gz\u00fclj\u00f6n ez a szerkezet. N\u00e9zz\u00fck a k\u00f6vetkez\u0151 sort, ami jelen esetben csak egy { jel. Ez egy blokk nyit\u00e1s\u00e1t jelenti, egyfajta z\u00e1r\u00f3jelez\u00e9s. A Java nyelvben a blokkokat (utas\u00edt\u00e1sok sorozat\u00e1t) { } jelek k\u00f6z\u00e9 tessz\u00fck. Mint a matematik\u00e1ban, \u00fagy a programoz\u00e1sban is nagyon fontos, hogy a jelekhez, legyen az { [ vagy ( jel, mindig tartozzon nyit\u00f3 \u00e9s z\u00e1r\u00f3 p\u00e1r is. Ha ezek k\u00f6z\u00fcl ak\u00e1r csak egy is hi\u00e1nyzik, akkor a programunk nem ford\u00edthat\u00f3 le, ford\u00edt\u00e1si hib\u00e1t eredm\u00e9nyez.<\/p>\n<p>A ford\u00edt\u00e1si hiba egy programk\u00f3d eset\u00e9n azt jelenti, hogy nem felel meg az adott programnyelv &#8220;nyelvtani&#8221; szab\u00e1lyainak. Ezek jellemz\u0151en z\u00e1r\u00f3jel hib\u00e1kat, pontosvessz\u0151 hib\u00e1kat jelentenek, melyeknek mindnek a hely\u00e9n kell lennie, hogy nyelvtani szempontb\u00f3l hib\u00e1tlan k\u00f3dot kapjunk. Ez persze nem azt jelenti, hogy a programunk t\u00f6k\u00e9letes, csak a ford\u00edt\u00f3 fogadja el. Az m\u00e1r csak megszok\u00e1s k\u00e9rd\u00e9se, hogy ezeket a blokk jeleket ki hogyan haszn\u00e1lja. Majd erre n\u00e9z\u00fcnk k\u00e9s\u0151bb p\u00e1r p\u00e9ld\u00e1t.<\/p>\n<p>A k\u00f6vetkez\u0151 sor a legbonyolultabb, de programoz\u00e1si szempontb\u00f3l ezt most el\u00e9g, ha csak \u00edgy megtanuljuk \u00e9s alkalmazzuk. K\u00e9s\u0151bb majd meg\u00e9rtj\u00fck mit is jelent. El\u00e9g annyit tudni, hogy a main() met\u00f3dus a programunk \u00fagynevezett bel\u00e9p\u00e9si pontja, vagyis itt kezd\u0151dik a programunk v\u00e9grehajt\u00e1sa. 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\u0151dik az eg\u00e9sz sor. A beh\u00faz\u00e1sr\u00f3l van sz\u00f3. Ez a sor beljebb kezd\u0151dik, mint az el\u0151z\u0151. Mi\u00e9rt? Mert ez a sor egy blokkon bel\u00fcl tal\u00e1lhat\u00f3. Az el\u0151z\u0151 sorban ugye nyitottunk egy blokkot, mert az oszt\u00e1ly eset\u00e9n k\u00f6telez\u0151 blokkot haszn\u00e1lni. Az oszt\u00e1lyban v\u00e1ltoz\u00f3kat \u00e9s met\u00f3dusokat (ami utas\u00edt\u00e1sok sorozata) fogunk haszn\u00e1lni. Egy blokkon a sorokat aj\u00e1nlott beljebb kezdeni, hogy l\u00e1ssuk, ezek a sorok az adott blokkhoz tartoznak. Ennek nagyon fontos szerepe lesz a k\u00f3d olvashat\u00f3s\u00e1g\u00e1nak szempontj\u00e1b\u00f3l.<\/p>\n<p>Nagyon fontos ezt m\u00e1r az elej\u00e9n megszokni, ha blokkot nyitunk, akkor a blokk sorai beljebb kell kezdeni. A blokk beh\u00faz\u00e1s\u00e1t t\u00f6bbf\u00e9le m\u00f3dszerrel oldj\u00e1k meg. Van aki tabul\u00e1torral, van aki sz\u00f3k\u00f6z\u00f6kkel, van aki 2 sz\u00f3k\u00f6zzel, van aki 4-gyel, 8-cal, stb. A l\u00e9nyeg a k\u00f6vetkezetess\u00e9g. Az els\u0151 blokk egy szinttel kezd\u0151dj\u00f6n beljebb, a k\u00f6vetkez\u0151, ami ezen a blokkon bel\u00fcl van egy \u00fajabb szinttel, stb. Erre a p\u00e9ldak\u00f3dban is l\u00e1tunk egy mint\u00e1t, a System.out.println() sor m\u00e1r a main() met\u00f3dus blokkj\u00e1ban van, ez\u00e9rt az nem 2 hanem 4 sz\u00f3k\u00f6zzel kezd\u0151dik beljebb.<\/p>\n<p>A k\u00f6vetkez\u0151 sor m\u00e1r egy t\u00e9nyleges program utas\u00edt\u00e1s. A\u00a0System.out.println() egy alap met\u00f3dus, amit a Java a konzolra t\u00f6rt\u00e9n\u0151 ki\u00edrat\u00e1sra haszn\u00e1l. Itt arra kell odafigyelni, hogy a System sz\u00f3 nagybet\u0171vel kezd\u0151dik. Mi kezd\u0151d\u00f6tt m\u00e9g nagybet\u0171vel? A program oszt\u00e1lya, az Alapok. A System is egy oszt\u00e1ly, ez\u00e9rt \u00edrjuk nagybet\u0171vel, csak\u00fagy, mint minden m\u00e1s oszt\u00e1lyt. A be\u00e9p\u00edtetteket m\u00e1sk\u00e9pp el sem fogadja a Java, egyszer\u0171en annyit mond, ismeretlen szimb\u00f3lum. (System \u00e9s nem nem system) Ez\u00e9rt fontos az, hogy a saj\u00e1t oszt\u00e1lyaink nev\u00e9t is nagybet\u0171vel kezdj\u00fck megszok\u00e1sb\u00f3l, mert ez az \u00edratlan szab\u00e1ly az oszt\u00e1lyok haszn\u00e1lat\u00e1ra. K\u00fcl\u00f6n felh\u00edvn\u00e1m a figyelmet a\u00a0System.out.println() met\u00f3dusra. Ez egy t\u00f6bb r\u00e9szb\u0151l \u00e1ll\u00f3 met\u00f3dus h\u00edv\u00e1s. A System oszt\u00e1lyon bel\u00fcli out nev\u0171 objektum println met\u00f3dus\u00e1t h\u00edvja meg.<\/p>\n<p>L\u00e1tjuk azt, hogy ez egyfajta hierarchia. Az oszt\u00e1ly van a legmagasabb szinten, annak van egy objektuma, az objektumnak pedig egy met\u00f3dusa. De egy konkr\u00e9t met\u00f3dusra hivatkoz\u00e1skor azt meg kell c\u00edmezni. Melyik oszt\u00e1ly melyik objektum\u00e1ban tal\u00e1lhat\u00f3. Egyszer\u0171en egym\u00e1s mell\u00e9 kell \u0151ket \u00edrni megfelel\u0151 sorrendben <strong>.<\/strong> jelekkel (oper\u00e1torral) elv\u00e1lasztva. \u00dcgyelj\u00fcnk r\u00e1, hogy a System egy oszt\u00e1ly, teh\u00e1t nagybet\u0171s. Ami sz\u00f6veget pedig odaadtunk a println() met\u00f3dusnak, azt ki\u00edrja a konzolra (parancssorba).<\/p>\n<p>Az utols\u00f3 nagyon fontos dolog, a ki\u00edrat\u00e1st v\u00e9gz\u0151 utas\u00edt\u00e1s v\u00e9g\u00e9n l\u00e9v\u0151 pontosvessz\u0151! Java-ban minden egyes utas\u00edt\u00e1st pontosvessz\u0151vel z\u00e1runk le. Egy utas\u00edt\u00e1s, egy pontosvessz\u0151. Ha egym\u00e1s ut\u00e1n utas\u00edt\u00e1sok sorozat\u00e1t \u00edrjuk (p\u00e9ld\u00e1ul egy blokkban), akkor az egyes utas\u00edt\u00e1sokat pontosvessz\u0151kkel v\u00e1lasztjuk el egym\u00e1st\u00f3l. Ezeket az elv\u00e1lasztott utas\u00edt\u00e1sokat \u00edrhatn\u00e1nk ak\u00e1r egy sorba is, de az olvashat\u00f3s\u00e1g azt k\u00edv\u00e1nja, hogy egy utas\u00edt\u00e1s egy sor. \u00cdgy olvashat\u00f3bb \u00e9s tagoltabb a k\u00f3d. Nem a ford\u00edt\u00f3nak sz\u00fcks\u00e9ges ez, hanem az embernek, aki a k\u00f3dot n\u00e9zi. A pontosvessz\u0151 viszont igencsak megkeser\u00edtheti az \u00e9let\u00fcnket, ha nem j\u00f3 helyen haszn\u00e1ljuk. Ha olyan helyre rakjuk, ahol semmi keresnival\u00f3ja, akkor a ford\u00edt\u00f3 jelezni fogja, hogy gond van. Persze akkor sem azt mondja, hogy rossz helyen van a pontosvessz\u0151, hanem maga a rossz helyen l\u00e9v\u0151 pontosvessz\u0151 okoz m\u00e1shol gondot, de ha p\u00e1rszor belefutunk ebbe a hib\u00e1ba, ut\u00e1na rendszerint m\u00e1r hamar megtal\u00e1ljuk. A gond az, hogy olyan helyre is tehetj\u00fck, ami\u00e9rt m\u00e9g a ford\u00edt\u00f3 se sz\u00f3l, hogy a k\u00f3dunk nyelvtanilag helytelen, viszont a program nem eg\u00e9szen azt csin\u00e1lja, amit meg elv\u00e1rn\u00e1nk t\u0151le. Ez egy \u00fajfajta probl\u00e9ma. A m\u00e1r emlegetett nyelvtani hib\u00e1t szintaktikai hib\u00e1nak h\u00edvjuk, ez az ut\u00f3bb eml\u00edtett, amikor a programunk lefordul, de nem az elv\u00e1r\u00e1snak megfelel\u0151en m\u0171k\u00f6dik, szemantikai hib\u00e1r\u00f3l besz\u00e9l\u00fcnk. Annyit jegyezz\u00fcnk meg most, hogy a pontosvessz\u0151re nagyon \u00fcgyelj\u00fcnk \u00e9s csak utas\u00edt\u00e1sok v\u00e9g\u00e9re tegy\u00fck ki, mert ott a hely\u00fck.<\/p>\n<p>V\u00e9ge is van a programunknak. Illetve m\u00e9gsem. Mi maradt ki? A k\u00e9t blokkot lez\u00e1r\u00f3 } jel. Az els\u0151 (bels\u0151) blokk a main() met\u00f3dus a benne l\u00e9v\u0151 ki\u00edrat\u00e1ssal, a m\u00e1sodik (k\u00fcls\u0151) blokk pedig maga az Alapok oszt\u00e1ly, a t\u00e9nyleges programunk. Ha megn\u00e9zz\u00fck a blokkokat nyit\u00f3 \u00e9s z\u00e1r\u00f3 jelek f\u00fcgg\u0151legesen egy oszlopban vannak, \u00edgy k\u00f6nnyebb a p\u00e1rjukat megtal\u00e1lni, az azon bel\u00fcl l\u00e9v\u0151 r\u00e9szek pedig minden \u00faj megnyitott blokkban p\u00e9ld\u00e1ul 2 sz\u00f3k\u00f6zzel beljebb ker\u00fcltek. Err\u0151l k\u00e9s\u0151bb majd m\u00e9g biztosan lesz sz\u00f3.<\/p>\n<h4>K\u00f6vetkez\u0151 lecke: <a title=\"Java programoz\u00e1s 3. \u2013 V\u00e1ltoz\u00f3k\" href=\"http:\/\/www.webotlet.hu\/?p=80\">V\u00e1ltoz\u00f3k<\/a><\/h4>\n","protected":false},"excerpt":{"rendered":"<p>Els\u0151 programunk, avagy minden kezdet neh\u00e9z? Ahhoz, hogy az els\u0151 Java programunkat meg\u00edrhassuk, sz\u00fcks\u00e9ges, hogy a sz\u00e1m\u00edt\u00f3g\u00e9pen rendelkez\u00e9sre \u00e1lljon a Java fejleszt\u0151i k\u00f6rnyezet (JDK) valamelyik sz\u00e1munkra sz\u00fcks\u00e9ges v\u00e1ltozata. Mivel egy egyszer\u0171 sz\u00f6vegszerkeszt\u0151vel is lehet programokat \u00edrni, ak\u00e1r \u00fagy is nekikezdhetn\u00e9nk <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=69\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java programoz\u00e1s 2. &#8211; Alapok<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[99],"tags":[],"class_list":["post-69","post","type-post","status-publish","format-standard","hentry","category-java-alap-leckek"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/69","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=69"}],"version-history":[{"count":18,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/69\/revisions"}],"predecessor-version":[{"id":1721,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/69\/revisions\/1721"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=69"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=69"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=69"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}