{"id":40,"date":"2015-01-31T07:16:32","date_gmt":"2015-01-31T06:16:32","guid":{"rendered":"http:\/\/www.webotlet.hu\/wp\/?p=40"},"modified":"2015-04-10T12:08:40","modified_gmt":"2015-04-10T10:08:40","slug":"java-objektumok","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=40","title":{"rendered":"Java programoz\u00e1s 23. &#8211; Saj\u00e1t objektumok"},"content":{"rendered":"<h1>Saj\u00e1t objektumok, avagy kezdj\u00fck el t\u00e9nyleg haszn\u00e1lni a Java nyelvet<\/h1>\n<p>Mint m\u00e1r eml\u00edtettem, ez az OO szeml\u00e9let abb\u00f3l indul ki, hogy a fejleszt\u00e9s sor\u00e1n modellezett objektumok \u00e1lland\u00f3ak, csak a hozz\u00e1juk kapcsol\u00f3d\u00f3 teend\u0151k v\u00e1ltoznak. Az objektum egyfajta \u00f6n\u00e1ll\u00f3 entit\u00e1s, ami tulajdons\u00e1gokkal \u00e9s viselked\u00e9sekkel rendelkezik.<\/p>\n<h2>Objektumok, mint modellek<\/h2>\n<p>Objektum lehet egy egyszer\u0171 k\u00e1v\u00e9f\u0151z\u0151, ami a k\u00f6vetkez\u0151 tulajdons\u00e1gokkal rendelkezik:<\/p>\n<ul>\n<li>v\u00edzmennyis\u00e9g<\/li>\n<li>k\u00e1v\u00e9mennyis\u00e9g<\/li>\n<\/ul>\n<p>Az objektum azonban nem csak adatokat t\u00e1rol saj\u00e1t mag\u00e1r\u00f3l, hanem azokat a viselked\u00e9seket is tartalmazza, amelyekkel ezeket az adatokat kezeli. P\u00e9ld\u00e1ul van egy &#8220;felt\u00f6lt&#8221; utas\u00edt\u00e1sa, amellyel k\u00e1v\u00e9t vagy vizet lehet t\u00f6lteni bele. Van egy &#8220;f\u0151z&#8221; utas\u00edt\u00e1sa, amellyel k\u00e1v\u00e9t lehet f\u0151zetni vele.<\/p>\n<p>Az objektumok \u00f6n\u00e1ll\u00f3an l\u00e9teznek, \u00e9s \u00f6nmagukat kezelni tudj\u00e1k, de nem automatikusan, hanem k\u00edv\u00fclr\u0151l kell vez\u00e9relni \u0151ket. Kell egy vez\u00e9rl\u0151program, amely ezt az objektumot haszn\u00e1lja \u00e9s utas\u00edtja a megfelel\u0151 viselked\u00e9sre. P\u00e9ld\u00e1ul \u00e9n t\u00f6lt\u00f6m fel a k\u00e1v\u00e9f\u0151z\u0151t, de engem nem \u00e9rdekel, hogy azt \u0151 hogyan csin\u00e1lja, vagy \u00e9n ind\u00edtom a f\u0151z\u00e9st, de tov\u00e1bbra sem \u00e9rdekel, hogy azt hogyan oldja meg, \u00e9n csak utas\u00edtok.<\/p>\n<p><a href=\"http:\/\/www.webotlet.hu\/wp-content\/uploads\/2014\/04\/kavefozo.jpg\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-47 alignright\" src=\"http:\/\/www.webotlet.hu\/wp-content\/uploads\/2014\/04\/kavefozo-276x300.jpg\" alt=\"kavefozo\" width=\"136\" height=\"148\" srcset=\"https:\/\/www.webotlet.hu\/wp-content\/uploads\/2014\/04\/kavefozo-276x300.jpg 276w, https:\/\/www.webotlet.hu\/wp-content\/uploads\/2014\/04\/kavefozo.jpg 369w\" sizes=\"auto, (max-width: 136px) 100vw, 136px\" \/><\/a>Term\u00e9szetesen a felt\u00f6lt met\u00f3dus nem csak annyit csin\u00e1l, hogy megn\u00f6veli a k\u00e1v\u00e9 \u00e9s v\u00edzmennyis\u00e9get a g\u00e9pben, hanem hibaellen\u0151rz\u00e9s is kapcsol\u00f3dik hozz\u00e1, hiszen nem t\u00f6lthetem t\u00fal a g\u00e9pet, mert kifolyik. A f\u0151z\u00e9st kezel\u0151 met\u00f3dusban is kell hibakezel\u00e9s, hiszen nem f\u0151zhetek akkor k\u00e1v\u00e9t, ha nincs benne v\u00edz vagy k\u00e1v\u00e9. De nekem a vez\u00e9rl\u0151programban ezzel sem kell foglalkozni, ott csak kiadom az utas\u00edt\u00e1st: f\u0151zz\u00e9l k\u00e1v\u00e9t. Erre maga a g\u00e9p jelez majd vissza, hogy nem fog menni, mert \u00fcres.<\/p>\n<h2>Objektumok, mint adatt\u00e1rol\u00f3k<\/h2>\n<p>Az objektumokat nem csak arra haszn\u00e1ljuk, hogy modellezz\u00fcnk vel\u00fck valamit. Akkor is hasznosak, amikor logikailag \u00f6sszetartoz\u00f3 adatokat egy \u00f6n\u00e1ll\u00f3 egys\u00e9gk\u00e9nt szeretn\u00e9nk t\u00e1rolni. A f\u00e1jlkezel\u00e9ses feladatok sor\u00e1n a forr\u00e1sban egy sor t\u00f6bb adatot is tartalmaz. Azonban minden sor egy \u00f6n\u00e1ll\u00f3 egys\u00e9get jelent, a benne l\u00e9v\u0151 adatok ugyanahhoz a dologhoz tartoznak. Olyan ez, mint amikor egy adatb\u00e1zis-kezel\u00e9s feladatban a forr\u00e1sban egy sor egy egyed tulajdons\u00e1gait tartalmazza, csak ott a sort rekordnak h\u00edvtuk. Mondjuk egy .csv kiterjeszt\u00e9s\u0171 f\u00e1jlban a sorokban l\u00e9v\u0151 pontosvessz\u0151k val\u00f3j\u00e1ban oszlopokat v\u00e1lasztanak el egym\u00e1st\u00f3l, \u00e9s ezeket beolvasva nagyj\u00e1b\u00f3l egy adatb\u00e1zis t\u00e1bl\u00e1j\u00e1t kapjuk. Akkor most itt \u00e1lljunk meg egy pillanatra. Vegy\u00fcnk egy sort, mely egy kutya adatait tartalmazza. Nev\u00e9t, fajt\u00e1j\u00e1t, sz\u00edn\u00e9t, t\u00f6meg\u00e9t, \u00e9letkor\u00e1t \u00e9s a nem\u00e9t. A nem\u00e9t egy logikai v\u00e1ltoz\u00f3ban t\u00e1roljuk majd. Ha igaz, akkor kan kutya, ha nem, akkor szuka. Ezeket az adatokat egy sorban soroljuk fel, pontosvessz\u0151vel elv\u00e1lasztva a k\u00f6vetkez\u0151k\u00e9pp:<\/p>\n<p>Buksi;tacsko;fekete;11.6;5;1<\/p>\n<p>Ezek az adatok mind ugyanarra a kuty\u00e1ra vonatkoznak. De a f\u00e1jlban lehet t\u00f6bb kutya adata is, hasonl\u00f3 szerkezetben. Ilyenkor minden egyes sor egy \u00faj kuty\u00e1t jelent. Ez\u00e9rt azt tessz\u00fck, hogy \u00edrunk egy kutya oszt\u00e1lyt, amelyben k\u00fcl\u00f6nb\u00f6z\u0151 kuty\u00e1k adatait tartjuk nyilv\u00e1n, de minden kuty\u00e1\u00e9t egy \u00f6n\u00e1ll\u00f3 objektumban. \u00cdgy a k\u00fcl\u00f6nb\u00f6z\u0151 adatok nem keverednek \u00f6ssze, de b\u00e1rmelyik kutya \u00f6sszes adat\u00e1t egyben tudjuk kezelni.<\/p>\n<p>L\u00e1ssunk akkor egy p\u00e9ldakuty\u00e1t. Eml\u00e9kszel, minden objektum a k\u00f6vetkez\u0151 r\u00e9szekb\u0151l \u00e1ll:<\/p>\n<ol>\n<li><strong>V\u00e1ltoz\u00f3k<\/strong><\/li>\n<li><strong>Met\u00f3dusok<\/strong><\/li>\n<li><strong>Konstrukci\u00f3s m\u0171veletek<\/strong><\/li>\n<\/ol>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class Kutya\r\n{\r\n\/\/ V\u00e1ltoz\u00f3k\r\n  private String nev;\r\n  private String fajta;\r\n  private String szin;\r\n  private double suly;\r\n  private int kor;\r\n  private boolean kan;\r\n\r\n\/\/ Met\u00f3dusok\r\n  public String getNev()\r\n  {\r\n    return nev;\r\n  }\r\n\r\n  public String getFajta()\r\n  {\r\n    return fajta;\r\n  }\r\n\r\n  public String getSzin()\r\n  {\r\n    return szin;\r\n  }\r\n\r\n  public double getSuly()\r\n  {\r\n    return suly;\r\n  }\r\n\r\n  public int getKor()\r\n  {\r\n    return kor;\r\n  }\r\n\r\n  public boolean isKan()\r\n  {\r\n    return kan;\r\n  }\r\n\r\n\/\/ Konstruktor\r\n  public Kutya(String nev, String fajta, String szin,\r\n             double suly, int kor, int kan)\r\n  {\r\n    this.nev = nev;\r\n    this.fajta = fajta;\r\n    this.szin = szin;\r\n    this.suly = suly;\r\n    this.kor = kor;\r\n    if( kan == 1 )\r\n    {\r\n      this.kan = true;\r\n    }\r\n    else\r\n    {\r\n      this.kan = false;\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Az el\u0151z\u0151 p\u00e9ld\u00e1ban l\u00e1thatod, hogy a kutya 6 tulajdons\u00e1ggal rendelkezik. Ezek mindegyike annak megfelel\u0151 t\u00edpus\u00fa, amilyen adatot t\u00e1rolni szeretn\u00e9nk benne. Minden v\u00e1ltoz\u00f3t bez\u00e1rtunk, vagyis priv\u00e1t v\u00e1ltoz\u00f3v\u00e1 tett\u00fcnk. Ezzel azt \u00e9rj\u00fck el, hogy az adott oszt\u00e1ly v\u00e1ltoz\u00f3j\u00e1t nem lehet k\u00f6zvetlen\u00fcl el\u00e9rni, csakis egy met\u00f3duson kereszt\u00fcl kaphatjuk meg az \u00e9rt\u00e9k\u00e9t. Mint az <a title=\"Java programoz\u00e1s 13. \u2013 Oszt\u00e1lyok \u00e9s objektumok\" href=\"http:\/\/www.webotlet.hu\/?p=675\">Oszt\u00e1lyok \u00e9s objektumok<\/a> t\u00e9mak\u00f6rben \u00edrtam, ennek biztons\u00e1gi okai vannak.<\/p>\n<p>Az adott oszt\u00e1lynak azon met\u00f3dusait, melyeknek csak \u00e9s kiz\u00e1r\u00f3lag az a szerepe, hogy a v\u00e1ltoz\u00f3i fel\u0151l \u00e9rdekl\u0151d\u0151knek v\u00e1laszt adjanak, get met\u00f3dusoknak nevezz\u00fck, r\u00f6videbben getter-eknek. Get met\u00f3dust minden olyan v\u00e1ltoz\u00f3nak biztos\u00edtani kell, amelyet k\u00edv\u00fclr\u0151l szeretn\u00e9nk el\u00e9rhet\u0151v\u00e9 tenni. Ez nem jelenti azt, hogy m\u00f3dos\u00edtani is lehet majd, ez csak egy lek\u00e9rdez\u00e9s. A get met\u00f3dusok elnevez\u00e9se szok\u00e1sjog szerint a get sz\u00f3val kezd\u0151dik, \u00e9s ut\u00e1na nagy kezd\u0151bet\u0171vel a v\u00e1ltoz\u00f3 neve szerepel. Egyetlen kiv\u00e9tel a boolean t\u00edpus\u00fa v\u00e1ltoz\u00f3t kezel\u0151 getter, ahol nem &#8220;get&#8221; hanem &#8220;is&#8221; sz\u00f3val kezdj\u00fck a nevet. Ezek a met\u00f3dusok mindig visszat\u00e9r\u00e9si \u00e9rt\u00e9kkel rendelkeznek, mely nyilv\u00e1n meg kell hogy egyezzen a v\u00e1ltoz\u00f3 t\u00edpus\u00e1val. Ebb\u0151l a p\u00e9ld\u00e1b\u00f3l kigy\u0171jtve:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic String getNev()\r\npublic String getFajta()\r\npublic String getSzin()\r\npublic double getSuly()\r\npublic int getKor()\r\npublic boolean isKan()\r\n<\/pre>\n<p>Az oszt\u00e1lyunk konstruktora csak egyfajta, mert a beolvas\u00e1skor egy kutya \u00f6sszes adat\u00e1t megtal\u00e1ljuk az adott sorban, \u00e9s ezeket beolvasva, sz\u00e9tdarabolva h\u00edvjuk meg a konstruktort, hogy \u00faj kuty\u00e1t hozzunk l\u00e9tre:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nnew Kutya(&quot;Buksi&quot;,&quot;tacsko&quot;,&quot;fekete&quot;,11.6,5,1)\r\n<\/pre>\n<p>Ugye eml\u00e9kszel, hogy ilyet \u00edgy soha nem csin\u00e1lunk! \u00cdgy nincs elt\u00e1rolva a l\u00e9trehozott objektum hivatkoz\u00e1sa, vagyis \u00fagy hoztuk l\u00e9tre, hogy a kupacr\u00f3l azonnal el is takar\u00edtj\u00e1k, amit k\u00f6rben\u00e9znek szem\u00e9t (vagyis hivatkoz\u00e1s n\u00e9lk\u00fcli) objektumok ut\u00e1n.<\/p>\n<p>Haszn\u00e1ljuk \u00fagy, hogy az objektum hivatkoz\u00e1s\u00e1t elt\u00e1roljuk valahol:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nKutya k = new Kutya(&quot;Buksi&quot;,&quot;tacsko&quot;,&quot;fekete&quot;,11.6,5,1)\r\n<\/pre>\n<p>L\u00e1thatod, hogy a konstruktornak a kutya nem\u00e9t nem logikai v\u00e1ltoz\u00f3k\u00e9nt adjuk oda. A f\u00e1jlb\u00f3l 0 vagy 1-es \u00e9rt\u00e9ket olvastunk be, majd a konstruktorban be\u00e1ll\u00edtjuk, hogy melyik jelenti a true-t, \u00e9s melyik a false-t. B\u00e1r az ilyen szerkezet\u0171 be\u00e1ll\u00edt\u00e1s, amit a Kutya oszt\u00e1lyban l\u00e1tsz j\u00f3val egyszer\u0171bb is lehet. Eleg\u00e1ns, \u00e9s a legegyszer\u0171bb megold\u00e1s:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nthis.kan = kan == 1;\r\n<\/pre>\n<h2>A konstruktor param\u00e9terei<\/h2>\n<p>A konstruktorban nagyon sok mindent megcsin\u00e1lhatunk, hiszen a kapott \u00e9rt\u00e9keket fel kell dolgozni, hogy t\u00e1rolhat\u00f3ak legyenek a nekik megfelel\u0151 v\u00e1ltoz\u00f3kban. Lehet, hogy eleve nem olyan form\u00e1ban kapom meg a v\u00e1ltoz\u00f3kat, hogy azt k\u00f6zvetlen\u00fcl haszn\u00e1lni tudjam. F\u00e1jl beolvas\u00e1sakor soronk\u00e9nt haladunk, melyeket Stringekk\u00e9nt tudunk beolvasni.\u00a0 Ezeket ut\u00e1na sz\u00e9t kell darabolnunk, hogy azt\u00e1n azt csin\u00e1ljunk, amit akarunk. Vegy\u00fck ism\u00e9t a beolvasand\u00f3 p\u00e9ldasort:<\/p>\n<p>Buksi;tacsko;fekete;11.6;5;1<\/p>\n<p>Tudjuk, hogy ; karakterrel vannak az egyes &#8220;oszlopok&#8221; elv\u00e1lasztva egym\u00e1st\u00f3l. A beolvas\u00e1st v\u00e9gz\u0151 programnak fogalma sincs arr\u00f3l, hogy amit beolvas, az mit jelent. \u0150 csak beolvas, \u00e9s odaadja az eredm\u00e9nyt annak, aki azt \u00e9rtelmezni tudja. Annyit az\u00e9rt seg\u00edthet, hogy a beolvasott sor darabjait adja tov\u00e1bb, valahogy \u00edgy:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString sor = raf.readLine();\r\nKutya k = new Kutya( sor.split(&quot;;&quot;) );\r\n<\/pre>\n<p>L\u00e1thatod, hogy egy \u00faj kuty\u00e1t hozok l\u00e9tre, de a konstruktor\u00e1nak a beolvasott sor darabjait adom oda, melyeket a ; karaktern\u00e9l t\u00f6r\u00f6k sz\u00e9t. Ennek a k\u00f3dnak m\u00e1s dolga nincs, a kutya megkapta az adatait, \u00e9p\u00edtse fel mag\u00e1t.<\/p>\n<p>Hogy n\u00e9z ki akkor a kutya konstruktora, ha egy halom Stringet kap? A kuty\u00e1nak tudnia kell, hogy a t\u00f6mb darabjai k\u00f6z\u00fcl melyik melyik adat\u00e1t jelenti majd, vagyis \u00fagy kell meg\u00edrni a kutya konstruktor\u00e1t, hogy tiszt\u00e1ban legy\u00fcnk a f\u00e1jl szerkezet\u00e9vel, ami a forr\u00e1sadatokat biztos\u00edtja. Akkor j\u00f6jj\u00f6n a konstruktor:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\/*\r\n * sor:     Buksi;tacsko;fekete;11.6;5;1\r\n * t\u00f6mb:  { &quot;Buksi&quot;,&quot;tacsko&quot;,&quot;fekete&quot;,&quot;11.6&quot;,&quot;5&quot;,&quot;1&quot; }\r\n * index:    0       1        2        3      4   5\r\n *\/\r\npublic Kutya( String&#x5B;] tomb )\r\n{\r\n  this.nev = tomb&#x5B;0];\r\n  this.fajta = tomb&#x5B;1];\r\n  this.szin = tomb&#x5B;2];\r\n  this.suly= Double.parseDouble(tomb&#x5B;3]);\r\n  this.kor = Integer.parseInt(tomb&#x5B;4]);\r\n  this.kan = tomb&#x5B;5].equals(&quot;1&quot;);\r\n}\r\n<\/pre>\n<p>Ez ugye annyit tesz csak, hogy a beolvasott sort t\u00f6mbb\u00e9 darabolva a konstruktor a megfelel\u0151 darabokat a megfelel\u0151 t\u00edpuss\u00e1 alak\u00edtja, majd elt\u00e1rolja azokat. R\u00e1ad\u00e1sul ez a szerkezet rendk\u00edv\u00fcl rugalmas. Ha a f\u00e1jlban esetleg megjelenik egy \u00faj tulajdons\u00e1g a kuty\u00e1n\u00e1l, mondjuk testmagass\u00e1g, akkor a beolvas\u00f3 programon semmit nem kell m\u00f3dos\u00edtani. Csak a kuty\u00e1ba kell egy \u00faj v\u00e1ltoz\u00f3, valamint a konstruktor\u00e1ba kell besz\u00farni egy \u00faj sort, ami az adott tulajdons\u00e1got az \u00faj v\u00e1ltoz\u00f3ban t\u00e1rolja el.<\/p>\n<pre class=\"brush: java; gutter: true; highlight: [1,11]; title: ; notranslate\" title=\"\">\r\nprivate int magassag;\r\n\r\npublic Kutya( String&#x5B;] tomb )\r\n{\r\n this.nev = tomb&#x5B;0];\r\n this.fajta = tomb&#x5B;1];\r\n this.szin = tomb&#x5B;2];\r\n this.suly= Double.parseDouble(tomb&#x5B;3]);\r\n this.kor = Integer.parseInt(tomb&#x5B;4]);\r\n this.kan = tomb&#x5B;5].equals(&quot;1&quot;);\r\n this.magassag = Integer.parseInt(tomb&#x5B;6]);\r\n}\r\n<\/pre>\n<h2>Saj\u00e1t met\u00f3dusok<\/h2>\n<p>Ide most nem a gettereket soroln\u00e1m, holott azok is met\u00f3dusok, csak k\u00fcl\u00f6n kateg\u00f3ri\u00e1t alkotnak. Sokszor el\u0151fordul, hogy nem csak lek\u00e9rdezni kell adatokat, hanem az objektumhoz kapcsol\u00f3dik valamilyen tev\u00e9kenys\u00e9g is. Tegy\u00fck fel, a kuty\u00e1nkat etetni szeretn\u00e9nk, \u00e9s ha &#8220;r\u00e1n\u00e9z\u00fcnk&#8221;, szeretn\u00e9nk p\u00e1r dolgot megtudni r\u00f3la.<\/p>\n<p>Ezeket a teend\u0151ket mind met\u00f3dusokon kereszt\u00fcl tudjuk megtenni. Hogy egyszer\u0171bb legyen a p\u00e9lda, amikor a kuty\u00e1t megetetj\u00fck, akkor nem lesz \u00e9hes. De csak akkor etethetj\u00fck, ha val\u00f3ban az. Az etet\u00e9shez bevezetek egy \u00faj v\u00e1ltoz\u00f3t, ehes n\u00e9ven. Ez egy sk\u00e1l\u00e1n elhelyezkedve a kutya pillanatnyi \u00e1llapot\u00e1t jelenti. 0 jelentse azt, hogy nem \u00e9hes, a 5-\u00f6s pedig a majd \u00e9hen halt. Ezen k\u00edv\u00fcl bevezetek egy olyan met\u00f3dust is, amivel &#8220;r\u00e1 lehet n\u00e9zni a kuty\u00e1ra&#8221;, de hogy milyennek n\u00e9z ki, az a pillanatnyi \u00e1llapot\u00e1t\u00f3l is f\u00fcgg.<\/p>\n<p>Ezek a met\u00f3dusok nemcsak arra szolg\u00e1lnak, hogy a k\u00e9t v\u00e1ltoz\u00f3 \u00e9rt\u00e9k\u00e9t m\u00f3dos\u00edtj\u00e1k, hanem arra is, hogy ellen\u0151rz\u00f6tt k\u00f6r\u00fclm\u00e9nyek k\u00f6z\u00f6tt teszik azt. Nem fog enni, ha nem \u00e9hes. N\u00e9zz\u00fck meg ezeket:<\/p>\n<pre class=\"brush: java; gutter: true; title: ; notranslate\" title=\"\">\r\nprivate int ehes;\r\n\r\npublic void etet( int kaja )\r\n{\r\n  if( ehes == 0 )\r\n  {\r\n    System.out.println(&quot;A kutya nem ehes.&quot;);\r\n  }\r\n  else\r\n  {\r\n    System.out.println(&quot;A kutya j\u00f3llakott.&quot;);\r\n    ehes = 0;\r\n }\r\n}\r\n<\/pre>\n<p>L\u00e1ssuk a r\u00e1n\u00e9z\u00e9st.<\/p>\n<pre class=\"brush: java; gutter: true; title: ; notranslate\" title=\"\">\r\n public String leiras()\r\n{\r\n\u00a0 StringBuilder desc = new StringBuilder();\r\n\u00a0 desc.append(&quot;Ez egy &quot;+szin+&quot; szinu &quot;+fajta+&quot;. Jelenleg &quot;);\r\n\u00a0\u00a0 \u00a0\r\n\u00a0 String kaja;\r\n\u00a0 switch( ehes )\r\n\u00a0 {\r\n\u00a0\u00a0\u00a0 case 0 :\u00a0 kaja = &quot;nem&quot;; break;\r\n\u00a0\u00a0\u00a0 case 1 :\u00a0 kaja = &quot;kicsit&quot;; break;\r\n\u00a0\u00a0\u00a0 case 3 :\u00a0 kaja = &quot;kozepesen&quot;; break;\r\n\u00a0\u00a0\u00a0 case 4 :\u00a0 kaja = &quot;nagyon&quot;; break;\r\n\u00a0\u00a0\u00a0 default : kaja = &quot;borzasztoan&quot;; break;\r\n\u00a0 }\r\n\u00a0 desc.append(kaja+&quot; ehes.&quot;);\r\n\r\n\u00a0 return desc.toString();\r\n}\r\n<\/pre>\n<p>Az objektumok teh\u00e1t rendk\u00edv\u00fcl sokoldal\u00faak. Val\u00f3di dolgok modelljek\u00e9nt is haszn\u00e1lhatjuk \u0151ket, valamint adatt\u00e1rol\u00f3k\u00e9nt is m\u0171k\u00f6dnek. Az emelt \u00e9retts\u00e9gi programoz\u00e1si feladat\u00e1ban ez ut\u00f3bbira van sz\u00fcks\u00e9g\u00fcnk.<\/p>\n<p>P\u00e1r l\u00e9nyeges dolog \u00f6sszeszedve:<\/p>\n<ul>\n<li>A v\u00e1ltoz\u00f3kat mindig v\u00e9dd meg, tedd \u0151ket priv\u00e1tt\u00e1.<\/li>\n<li>\u00cdrd meg a megfelel\u0151 get met\u00f3dusokat, hogy el\u00e9rd a v\u00e1ltoz\u00f3kat.<\/li>\n<li>Ha a v\u00e1ltoz\u00f3n m\u00f3dos\u00edtani kell, arra is \u00edrj met\u00f3dust. (setter)<\/li>\n<li>Egy j\u00f3 konstruktor m\u00e1r f\u00e9l siker. \u00c1ll\u00edts be benne mindent, amit csak tudsz. Ak\u00e1r olyan v\u00e1ltoz\u00f3kat is, melyeket nem a f\u00e1jlbeolvas\u00e1skor kapt\u00e1l, hanem a megl\u00e9v\u0151 v\u00e1ltoz\u00f3kb\u00f3l lehet kisz\u00e1m\u00edtani. A konstruktort ut\u00f3lag is b\u0151v\u00edtheted.<\/li>\n<li>\u00cdrj saj\u00e1t met\u00f3dusokat, \u00e9s haszn\u00e1ld az objektum v\u00e1ltoz\u00f3it, ha sz\u00fcks\u00e9ged van r\u00e1juk.<\/li>\n<li>Mindig legyen egy aktualiz\u00e1lt toString() met\u00f3dusa az objektumnak, mely a v\u00e1ltoz\u00f3it \u00edrja ki, \u00edgy ellen\u0151rizni tudod, megfelel\u0151 objektummal dolgozol-e.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Saj\u00e1t objektumok, avagy kezdj\u00fck el t\u00e9nyleg haszn\u00e1lni a Java nyelvet Mint m\u00e1r eml\u00edtettem, ez az OO szeml\u00e9let abb\u00f3l indul ki, hogy a fejleszt\u00e9s sor\u00e1n modellezett objektumok \u00e1lland\u00f3ak, csak a hozz\u00e1juk kapcsol\u00f3d\u00f3 teend\u0151k v\u00e1ltoznak. Az objektum egyfajta \u00f6n\u00e1ll\u00f3 entit\u00e1s, ami tulajdons\u00e1gokkal <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=40\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java programoz\u00e1s 23. &#8211; Saj\u00e1t objektumok<\/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":[100],"tags":[144,20,58,143,59],"class_list":["post-40","post","type-post","status-publish","format-standard","hentry","category-java-halado-leckek","tag-java_programozas","tag-objektum","tag-osztaly","tag-programozas","tag-tostring"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/40","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=40"}],"version-history":[{"count":36,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/40\/revisions"}],"predecessor-version":[{"id":1413,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/40\/revisions\/1413"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}