{"id":680,"date":"2015-01-15T11:14:48","date_gmt":"2015-01-15T10:14:48","guid":{"rendered":"http:\/\/www.webotlet.hu\/?p=680"},"modified":"2015-04-10T11:37:54","modified_gmt":"2015-04-10T09:37:54","slug":"java-programozas-5-metodusok","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=680","title":{"rendered":"Java programoz\u00e1s 5. &#8211; Met\u00f3dusok"},"content":{"rendered":"<h1>Met\u00f3dusok, avagy a programoz\u00e1s ig\u00e1slovai<\/h1>\n<p>A Java k\u00e9sz\u00edt\u0151i rengeteg dolgot meg\u00edrtak helyett\u00fcnk, amelyeket kezd\u0151 programoz\u00f3k\u00e9nt sokszor \u00fagy haszn\u00e1lunk, hogy nem is tudatosul. Ezek v\u00e9gzik a munka nagyj\u00e1t, \u0151k azok, akik a v\u00e1ltoz\u00f3kat kezelik, \u00e9s a programunk k\u00fcl\u00f6nb\u00f6z\u0151 r\u00e9szei k\u00f6z\u00f6tt a kapcsolatot tartj\u00e1k. Miel\u0151tt azonban megismern\u00e9nk \u0151ket, eml\u00edt\u00e9s szintj\u00e9n tiszt\u00e1zzunk p\u00e1r r\u00f6vid mondatban k\u00e9t fogalmat.<\/p>\n<p>Objektumok: Az objektum az adott feladat szempontj\u00e1b\u00f3l fontos, a val\u00f3di vil\u00e1g valamilyen elem\u00e9nek a r\u00e1 jellemz\u0151 tulajdons\u00e1gai \u00e9s viselked\u00e9sei \u00e1ltal modellezett eleme. Ilyen lehet egy modellezett kutya, a saj\u00e1t tulajdons\u00e1gaival (n\u00e9v, fajta, sz\u00edn, magass\u00e1g, stb), valamit a r\u00e1 jellemz\u0151 viselked\u00e9sek (ev\u00e9s, iv\u00e1s, ugat\u00e1s)<\/p>\n<p>Oszt\u00e1ly: Meg\u00edrt k\u00f3dok, amelyek az objektumok tervrajzai, benne a tulajdons\u00e1gokkal \u00e9s a viselked\u00e9sekkel. Az objektumokat ezekb\u0151l hozzuk l\u00e9tre.<\/p>\n<h4>Met\u00f3dusok<\/h4>\n<p>An\u00e9lk\u00fcl, hogy a met\u00f3dusok k\u00e9sz\u00edt\u00e9s\u00e9r\u0151l besz\u00e9ln\u00e9k, n\u00e9zz\u00fck meg, mik ezek.<\/p>\n<p>A met\u00f3dusokat tekinthetj\u00fck egyfajta \u00fczeneteknek, melyek valamilyen feladat megold\u00e1s\u00e1t k\u00e9rik valakit\u0151l. Az \u00fczenet 3 r\u00e9szb\u0151l \u00e1llhat.<\/p>\n<ol>\n<li>C\u00edmzett objektum vagy oszt\u00e1ly<\/li>\n<li>A c\u00edmzett met\u00f3dus\u00e1nak neve<\/li>\n<li>Esetleges param\u00e9terek<\/li>\n<\/ol>\n<p>Az \u00fczenet c\u00edmzettj\u00e9t abban az esetben k\u00f6telez\u0151 megadni, ha a c\u00edmzett nem \u00f6nmaga. A programoz\u00e1sunk elej\u00e9n, am\u00edg nem k\u00e9sz\u00edt\u00fcnk saj\u00e1t objektumokat, javar\u00e9szt \u00edgy fogjuk haszn\u00e1lni a met\u00f3dusokat, hogy megadjuk a c\u00edmzettet.<\/p>\n<p>Minden esetben k\u00f6telez\u0151 megadni, hogy melyik met\u00f3dust szeretn\u00e9nk haszn\u00e1lni. A met\u00f3dusok neve adott oszt\u00e1lyon bel\u00fcl rendszerint egyedi. Val\u00f3j\u00e1ban a met\u00f3dus neve, a bemen\u0151 adatok t\u00edpusai \u00e9s sz\u00e1ma egy\u00fcttesen kell hogy egyedi legyen. Az ezzel kapcsolatos \u00fagynevezett t\u00falterhel\u00e9sr\u0151l k\u00e9s\u0151bb sz\u00f3t ejtek. K\u00fcl\u00f6nb\u00f6z\u0151 k\u00f3dokban lehetnek azonos nev\u0171 met\u00f3dusok, ilyenkor a met\u00f3dus megh\u00edv\u00e1s\u00e1t ki kell eg\u00e9sz\u00edten\u00fcnk az objektum vagy oszt\u00e1ly nev\u00e9vel,\u00a0 hogy melyik\u00e9t szeretn\u00e9nk haszn\u00e1lni.<\/p>\n<p>Mivel az \u00fczenetek (met\u00f3dusok) valamilyen feladat v\u00e9grehajt\u00e1s\u00e1t k\u00e9rik, ez\u00e9rt a feladattal kapcsolatos adatokat is oda lehet adni annak a met\u00f3dusnak, amelyik azt elv\u00e9gzi. Term\u00e9szetesen lehet olyan met\u00f3dus is, ami nem haszn\u00e1l bemen\u0151 adatokat.<\/p>\n<p>L\u00e1ssunk p\u00e1r p\u00e9ld\u00e1t olyan met\u00f3dusokra, melyekn\u00e9l a c\u00edmzettet is meg kell adni. Ezekn\u00e9l a p\u00e9ld\u00e1kn\u00e1l a c\u00edmzett minden esetben egy oszt\u00e1ly:<\/p>\n<pre class=\"brush: java; gutter: true; title: ; notranslate\" title=\"\">\r\nMath.min(23,b);\r\nMath.sqrt(18);\r\nInteger.parseInt(&quot;123&quot;);\r\nSystem.out.println(&quot;Ez egy rovid mondat.&quot;);\r\n<\/pre>\n<ol>\n<li>k\u00e9t bemen\u0151 adat, egy sz\u00e1m \u00e9s egy sz\u00e1mot tartalmaz\u00f3 v\u00e1ltoz\u00f3 k\u00f6z\u00fcl a kisebb \u00e9rt\u00e9ket adja eredm\u00e9ny\u00fcl<\/li>\n<li>megadja 18 n\u00e9gyzetgy\u00f6k\u00e9t<\/li>\n<li>eg\u00e9sz sz\u00e1mm\u00e1 alak\u00edtja a &#8220;123&#8221; sz\u00f6veget<\/li>\n<li>ki\u00edr egy sz\u00f6veget a k\u00e9perny\u0151re<\/li>\n<\/ol>\n<p>A Java programnyelv met\u00f3dusait alapvet\u0151en k\u00e9t csoportba sorolhatjuk:<\/p>\n<ol>\n<li>met\u00f3dusok, melyek valamilyen \u00e9rt\u00e9ket \u00e1ll\u00edtanak el\u0151<\/li>\n<li>met\u00f3dusok, melyek valamilyen tev\u00e9kenys\u00e9get hajtanak v\u00e9gre<\/li>\n<\/ol>\n<p>Az els\u0151 csoport nagyj\u00e1b\u00f3l olyan, mint egy t\u00e1bl\u00e1zatkezel\u0151 program f\u00fcggv\u00e9nyei. Ezek a met\u00f3dusok valamilyen bemen\u0151 adatok seg\u00edts\u00e9g\u00e9vel sz\u00e1m\u00edt\u00e1st v\u00e9geznek, \u00e9s adott t\u00edpus\u00fa (sz\u00e1m, sz\u00f6veg, karakter, stb) eredm\u00e9nyt \u00e1ll\u00edtanak el\u0151. Ez az eredm\u00e9ny a met\u00f3dus <strong>visszat\u00e9r\u00e9si \u00e9rt\u00e9ke<\/strong>. A bemen\u0151 adatok, melyeket innent\u0151l nevezz\u00fcnk param\u00e9tereknek, valamilyen v\u00e1ltoz\u00f3k vagy liter\u00e1lok (a t\u00edpusnak megfelel\u0151 form\u00e1ban megadott \u00e9rt\u00e9kek), de az sem t\u00f6rv\u00e9nyszer\u0171, hogy legyen bemeneti \u00e9rt\u00e9k. Vannak met\u00f3dusok, amelyek bemeneti egy el\u0151re meghat\u00e1rozott keretek k\u00f6z\u00f6tti \u00e9rt\u00e9ket adnak eredm\u00e9ny\u00fcl. A bemen\u0151 adatok sz\u00e1ma is sokfajta lehet, de ebb\u0151l egyel\u0151re legyen el\u00e9g ennyi.<\/p>\n<p>A m\u00e1sodik csoportba tartoz\u00f3 met\u00f3dusok valamilyen tev\u00e9kenys\u00e9get hajtanak v\u00e9gre, ide tartozik p\u00e9ld\u00e1ul a k\u00e9perny\u0151re val\u00f3 ki\u00edrat\u00e1s.<\/p>\n<p>Ez a tananyag els\u0151dlegesen a gy\u00e1rilag el\u0151re meg\u00edrt met\u00f3dusokr\u00f3l sz\u00f3l, a saj\u00e1t magad \u00e1ltal meg\u00edrt met\u00f3dusok egy m\u00e1sik lecke r\u00e9sze lesz. A gy\u00e1ri met\u00f3dusokat teh\u00e1t formailag a k\u00f6vetkez\u0151k\u00e9pp lehet haszn\u00e1lni:<\/p>\n<ul>\n<li>Osztalynev.metodus();<\/li>\n<li>Osztalynev.metodus( parameter );<\/li>\n<li>Osztalynev.metodus( parameter1, parameter2, &#8230; );<\/li>\n<\/ul>\n<p>Ahogy l\u00e1thatod el\u0151sz\u00f6r hivatkozni kell arra az oszt\u00e1lyra, amelyiknek a met\u00f3dus\u00e1t haszn\u00e1lni szeretn\u00e9d, azt\u00e1n a speci\u00e1lis <big><strong>.<\/strong><\/big> oper\u00e1tor haszn\u00e1lat\u00e1val hivatkozok az oszt\u00e1ly adott nev\u0171 met\u00f3dus\u00e1ra. Ez az a k\u00e9t dolog, ami minden esetben k\u00f6telez\u0151. A harmadik dolog, hogy odaadd a met\u00f3dusnak azokat az adatokat melyeket neki haszn\u00e1lnia kell. Vagy az\u00e9rt, hogy egy eredm\u00e9nyt \u00e1ll\u00edtson el\u0151 (1. t\u00edpus), vagy hogy annak seg\u00edts\u00e9g\u00e9vel hajtsa v\u00e9gre a k\u00e9rt tev\u00e9kenys\u00e9get.<\/p>\n<p>Minek kell az oszt\u00e1lyn\u00e9v, ha a met\u00f3dusoknak neve van? Az\u00e9rt, mert l\u00e9tezhet t\u00f6bb azonos nev\u0171 met\u00f3dus, (s\u0151t sokszor ez a helyzet), ez\u00e9rt meg kell mondani, hogy ez a met\u00f3dus melyik oszt\u00e1lyba tartozik.<\/p>\n<p>A tanul\u00e1s elej\u00e9n a Math oszt\u00e1lyt szoktuk kiemelni egyszer\u0171bb programok \u00edr\u00e1sakor. K\u00f6zponti met\u00f3dus term\u00e9szetesen sokkal t\u00f6bb van, de a tanulm\u00e1nyaink elej\u00e9n ezekre j\u00f3 es\u00e9llyel sz\u00fcks\u00e9g lesz:<\/p>\n<h4>Math oszt\u00e1ly<\/h4>\n<p>A Math oszt\u00e1ly matematikai t\u00e9mak\u00f6rrel kapcsolatos met\u00f3dusokat tartalmaz. A met\u00f3dusok t\u00f6bbs\u00e9ge sokf\u00e9le sz\u00e1mot is elfogad, bele\u00e9rtve eg\u00e9sz \u00e9s val\u00f3s \u00e9rt\u00e9keket is, azok \u00f6sszes alt\u00edpus\u00e1val egy\u00fctt. S\u0151t, t\u00f6bb ezeket keverve is m\u0171k\u00f6dik. A teljess\u00e9g ig\u00e9nye n\u00e9lk\u00fcl \u00e1lljanak akkor itt a legfontosabbak:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nMath.min(a,b); \/\/ a k\u00e9t v\u00e1ltoz\u00f3 k\u00f6z\u00fcl a kisebb \u00e9rt\u00e9ket adja eredm\u00e9ny\u00fcl\r\nMath.random(); \/\/ kisorsol egy lebeg\u0151pontos sz\u00e1mot a &#x5B;0;1&#x5B; intervallumb\u00f3l\r\nMath.round(a); \/\/ matematikai szab\u00e1ly szerint kerek\u00edti a v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t\r\nMath.abs(a); \/\/ az adott v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9nek abszol\u00fat \u00e9rt\u00e9k\u00e9t adja vissza\r\nMath.sqrt(a); \/\/ az adott v\u00e1ltoz\u00f3 n\u00e9gyzetgy\u00f6k\u00e9t adja vissza\r\nMath.pow(a,b); \/\/ az a sz\u00e1mot a b-edik hatv\u00e1nyra emeli\r\nMath.PI; \/\/ Pi \u00e9rt\u00e9k\u00e9t adja vissza\r\nMath.E; \/\/ E \u00e9rt\u00e9k\u00e9t adja vissza\r\n<\/pre>\n<p>Az utols\u00f3 kett\u0151 kakukktoj\u00e1s, ezek nem met\u00f3dusok, hanem &#8220;be\u00e9getett&#8221; v\u00e1ltoz\u00f3k.<\/p>\n<h4>K\u00f6vetkez\u0151 lecke: <a title=\"Java programoz\u00e1s 6. \u2013 Oper\u00e1torok\" href=\"http:\/\/www.webotlet.hu\/?p=391\">Oper\u00e1torok<\/a><\/h4>\n","protected":false},"excerpt":{"rendered":"<p>Met\u00f3dusok, avagy a programoz\u00e1s ig\u00e1slovai A Java k\u00e9sz\u00edt\u0151i rengeteg dolgot meg\u00edrtak helyett\u00fcnk, amelyeket kezd\u0151 programoz\u00f3k\u00e9nt sokszor \u00fagy haszn\u00e1lunk, hogy nem is tudatosul. Ezek v\u00e9gzik a munka nagyj\u00e1t, \u0151k azok, akik a v\u00e1ltoz\u00f3kat kezelik, \u00e9s a programunk k\u00fcl\u00f6nb\u00f6z\u0151 r\u00e9szei k\u00f6z\u00f6tt a <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=680\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java programoz\u00e1s 5. &#8211; Met\u00f3dusok<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[99],"tags":[62,144,61,143,63],"class_list":["post-680","post","type-post","status-publish","format-standard","hentry","category-java-alap-leckek","tag-fuggveny","tag-java_programozas","tag-metodus","tag-programozas","tag-visszateresi-ertek"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/680","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=680"}],"version-history":[{"count":17,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/680\/revisions"}],"predecessor-version":[{"id":1391,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/680\/revisions\/1391"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}