Vous êtes sur la page 1sur 15

Forrs: JAVA 2 tikalauz programozknak 5.

0
Z2/29 A Java programozsi nyelv ltalnos jellemzi. A statikus main fggvny szerepe. A kir utasts. Vltozk, opertorok, tpuskonverzik. Egyszer tpusok, adatok trolsa tmbkben. Tmbk ltrehozsa, a tmbk hasznlata. Tbbdimenzis tmbk. Tmbk rendezse. A Java programozsi nyelv ltalnos jellemzi Egyszer Objektumorientlt Elosztott Robosztus Biztonsgos Architektra semleges Hordozhat Interpretlt Nagy teljestmny Tbbszl Dinamikus A statikus main fggvny szerepe Amikor a JVM elindul, felkutatja azt az osztlyt, amelyiknek a nevt megadtuk neki a parancssorba, majd egy klnleges alak tagfggvnyt keres, a main tagfggvnyt. Ezt kveten a JVM mindent lefuttat, ami a main tagfggvny kapcsos zrjelei kztt tallhat. Minden Java-alkalmazsban lennie kell legalbb egy osztlynak, s legalbb egy main tagfggvnynek. public static void main (String[] args) { } public: nyolvnos, teht mindenki hozzfrhet void: visszaadott rtk tpusa main: tagfggvny neve static: az osztlyhoz tartozik String[] args: a tagfggvny argumentumai. Ennek a tagfggvnynek egy karakterlncokbl ll tmbt kell tadni, amelynek neve args { }: tagfggvny nyit s zr kapcsos zrjelei A kir utasts A konzolra kiiratni a System.out.print, printf es println utasitasokkal lehet, az els a parameterkent kapott valtozot egyszeren csak kiirja, a printf formazott sztringet ir ki, a formazast is meg kell adni neki parameterkent, mig a println a parameterkent kapott valtozot es egy sortorest fog a konzolra kiirni. Vltozk A Java nyelv azonosti betvel kell, hogy kezddjenek, s betvel vagy szmmal kell, hogy folytatdjanak. A betk kz itt az _ s a $ jel is beletartozik. pl.: abra, __abra$$A, EGY_SZM. Egy azonost hossza tetszleges lehet. A nyelv kulcsszavai nem lehetnek azonostk. A const s goto kulcsszavak nem hasznltak, de foglaltak. Hasonlan nem lehetnek azonostk a nyelv alaptpusaihoz kapcsold literlok sem: null, true, false. Opertorok A kifejezsek kirtkelsi sorrendjt alapveten a benne szerepl opertorok hatrozzk meg. Egy kifejezsben annak eldntsre, hogy melyik opertor lesz elszr vgrehajtva, hrom szably alkalmazhat: elszr a legbels zrjelen belli kifejezs lesz kirtkelve ha nincs zrjel, akkor elszr a nagyobb priorits opertor lesz vgrehajtva ha tbb opertor prioritsa is egyenl, akkor balrl jobbra, illetve nhny esetben jobbrl balra lesznek azok kirtkelve A mveletek tbbsge balrl jobbra rtkeldik ki: a+b+c ugyanaz, mint (a+b)+c. Az rtkadsok viszont jobbrl balra rtkeldnek ki: a=b=c ugyanaz, mint a=(b=c). Postfix opertorok [] tmb indexelse, pl.: array[12] . minstett nv, pl.: java.lang.System.out.println( ); (kif) zrjelezett kifejezs, pl.: (12+3) - 4

Forrs: JAVA 2 tikalauz programozknak 5.0


kif++ kifpostfix nvel, illetve cskkent opertorok (a teljes kifejezs kirtkelse utn vltoztatjk meg az adott vltozt), pl.: a++; b++; Prefix opertorok ++kif, --kif prefix nvel, illetve cskkent mveletek (a teljes kifejezs kirtkelse eltt vltoztatjk meg az adott vltozt), pl.: --a; --b; +kif, -kif eljelvlts, pl.: -1 ! logikai tagad mvelet, pl.: !true == false ~ bitszint NEM mvelet, pl.: ~0x00ff = 0xff00 Objektum ltrehozsa, tpusknyszerts new objektum ltrehozsa, pl.: new NoSuchElementException() (tpus)kif tpuskinyszerts, pl.: double d = (double)i; Multiplikatv opertorok *,/,% szorzs, oszts, illetve maradkos oszts maradka Additv opertorok +, - sszeads s kivons. Az sszeads opertor szvegekre is alkalmazhat Lptet mveletek << eltols balra, a legkisebb bit helyre 0 kerl >> eltols jobbra, balrl a legmagasabb helyirtk bit rtke lp be >>> eltols jobbra, balrl 0 kerl be sszehasonltsok <, >, <=, => skalr rtkek sszehasonltsa instanceof megadja, hogy egy objektum egy adott osztly pldnya-e Egyenlsgvizsglatok ==, != rtkek egyenlsgnek s egyenltlensgnek vizsglata. Ez referencik esetben magt a referencit hasonltja, nem az objektumok tartalmt Bitenknti mveletek & moh kirtkels logikai S ^ moh kirtkels logikai kizr VAGY | mog kirtkels logikai VAGY && lusta kirtkels logikai S || lusta kirtkels logikai VAGY Feltteles kifejezs A ? : opertorral feltteles kifejezs kszthet kif1 ? kif2 : kif3 alakban rtkadsok = egyszer rtkads, +=, -=, *=. /=, %=, >>=, <<=, >>>=, &=, ^=, |= rtkads mveletek Tpuskonverzik A Java egy ersen tpusos nyelv, ezrt a kifejezsekben szinte minden esetben megvizsglja, hogy sszeegyeztethet tpusok vannak-e benne, pontosabban azt, hogy az automatikus konverzikat vgrehajtva azonos tpusra alakthatk-e az elemek. Ha az ellenrzs fordtsi idben elvgezhet, akkor hiba esetn a fordts megszakad. Ha egy konverzis hiba csak futsi idben derthet ki, akkor hibazenetet a futtat rendszer generl. Tpuskonverzira a nyelvben hrom mdszer knlkozik: Automatikus konverzi: nhny konverzi a programoz kln haja nlkl is vgrehajtsra kerl rtkads esetn, vagy paramtertadsnl metdusok hvsakor Explicit konverzi: ha a programban konvertlni kell tpusok kztt, s ezt automatikus konverzival nem lehet elrni, vagy az nem egyrtelm, akkor explicit mdon is meg lehet ezt tenni Szvegkonverzi: ha egy kifejezsben String tpusra van szksg, de a kifejezsben lv elem nem ilyen, akkor azt a fordt megprblja automatikusan konvertlni Egyszer tpusok A Java nyolc darab egyszer tpust, ms nven primitv tpust klnbztet meg: boolean logikai tpus char 16 bites Unicode karakter byte 8 bites eljeles egsz szm short 16 bites eljeles egsz szm int 32 bites eljeles egsz szm long 64 bites eljeles egsz szm float 32 bites lebegpontos racionlis szm double 64 bites lebegpontos racionlis szm

Forrs: JAVA 2 tikalauz programozknak 5.0

Tmbk ltrehozsa, a tmbk hasznlata Java nyelvben a [] jellssel lehet egy tmb tpust megadni. A tmbelemek indexelse 0 -val kezddik. A [] jel rhat az alaptpus, de a vltoz neve utn is: int[] ia, ib; // ia s ib tmb defincija int ic[], id; // alternatv forma, de itt csak ic lesz tmb Az gy ltrehozott vltoz tetszleges hosszsg, egsz szmokbl ll tmbre hivatkozhat. A tmb rtket a new opertorral lehet ltrehozni: ia = new int[20]; A tmb tpusok teht nem primitv tpusok, a tmb tpus vltozk objektumhivatkozst tartalmaznak. A tmb ismeri sajt mrett, amit meg is lehet tle krdezni a length mez hasznlatval: System.out.println(ia.length); A tmb mrete ismeretben el tudja dnteni, hogy egy adott index rvnyes -e. Ezt a futtat rendszer minden tmbelem-hivatkozsakor ellenrzi is. Amennyiben az index nem rvnyes, egy IndexOutOfBouindsException vltdik ki. A tmb tpusok sok tekintetben az osztlyokra hasonltanak mg az rkldsben is rszt vesznek. A programoz ugyan nem tud egy tmb tpust egy j osztly ltrehozsakor stpusknt felhasznlni, de a tmb tpusok kztt fennllhatnak bzistpus-altpus kapcsolatok. Tmbliterl Tmbk a kvetkez formban inicializlhatak: String[] szinek = {piros, fehr, zld}; Lehetsg van gynevezett nv nlkli tmbk ltrehozsra is a new opertor tpusos formjban: szinek = new String[]{piros, fehr, zld}; Tbbdimenzis tmbk A Java nyelvben nincs tbbdimenzis tmb, de van ms megolds, mivel egy tmb akr tmbkbl is llhat, melynek hossza mg klnbz is lehet: int[][] iaa = new int[3][]; // egy 3 elem, tmbkbl ll tmb ltrehozsa for (int i=0; i<iaa.length; i++) { iaa[i] = new int[i+1]; // i+1 elem tmb ltrehozsa for (int j=0; j<iaa[i].length; j++) iaa[i][j]=0; //tmbelemek inicializlsa } Ez a kdrszlet egy hromszg-mtrix ltrehozst s inicializlst vgzi. Tmbk rendezse int[] n = new int[]{-32,43,53,54,32,0,65,63,98,43,23}; boolean rendezett = false; while (!rendezett){ rendezett = true; for (int j=1; j<n.length; j++){ if (n[j-1]>n[j]){ int v = n[j-1]; n[j-1] = n[j]; n[j] = v; rendezett = false; } } } System.out.println(Arrays.toString(n));

Forrs: JAVA 2 tikalauz programozknak 5.0


Z2/30 Vezrlsi szerkezetek, szekvencia, feltteles elgazsok, tbb g szelekci, ciklusok (iterci), foreach, szmll ciklus, elltesztel ciklus, htul -tesztel ciklus. A szekvencia: az adott sorban lev utasts vgrehajtsa utn (amennyiben az utasts mst nem eredmnyezett) a kvetkez sorba lev utasts vgrehajtsa kvetkezik. Elgazsok Kt vezrlsi szerkezettel kszthetnk a Javban elgazst. Az egyszer elgazshoz az if-szerkezetet, az sszetett elgazshoz pedig a switch-szerkezetet hasznljuk. Egyszer elgazs Az egyszer elgazs formja: if(logikai kifejezs) utasts1 else utasts2. Sajnos ez a szintaxis nem elg egyrtelm, gy a Java nyelvben is szmtanunk kell a ms nyelvekbl ismert if-then-else ( avagy cselleng else) problmra. Ha if -utastsokkal tbbg elgazst ksztnk, az albbi trdels javasolt: if ( a < 0 ) { b++; } else if ( a == 0 ) { // b = 0; } else { b--; } sszetett elgazs Ha egy egsz rtk kifejezstl fggen kell klnbz programrszleteket vgrehajtani, akkor hasznlhat a switch elgazs: switch ( egsz kifejezs ) { case cmke1: // a cmke egy egsz rtk literl utastsok; break; // a cmke1 g vge case cmke2: // ennek a vgrehajtsa case cmke3: // ezen az gon folytatdik utastsok; break; // cmke2 s cmke3 gak vge default: // alaprtelmezett g utastsok; } Az elgazs fejrszben lv egsz kifejezs kirtkelst kveten a case gakban lv cmkertkek lesznek megvizsglva. Ezek a cmkertkek fordtsi idben ismert rtkek kell, hogy legyenek. Ha valamelyik cmkertk megegyezik az egsz kifejezs rtkvel, akkor az utna lv utastsra addik t a vezrls. Az utastsok a megfelel cmktl kezdve egyms utn kerlnek vgrehajtsra a switch vgig, vagy az els break utastsig. Ennek hatsra a program elhagyja a switch blokkjt. Egy jabb case cmke teht nem szaktja meg az utastsok vgrehajtsnak menett, a program vgrehajtsa az azt kvet utastson folytatdik. Ha nincs megfelel cmke, akkor a default g kerl vgrehajtsra. A Java 5-s verzijtl kezdve a switch utasts a felsorolsi tpusokkal is mkdik: enum Napok {HTF, KEDD, SZERDA, CSTRTK, PNTEK, SZOMBAT, VASRNAP;} int munkark; switch(nap){ case HTF: case KEDD: case CSTRTK: munkark = 9; break; case SZERDA: munkark = 7; break; case PNTEK: munkark = 6; break; default: munkark = 0; } Ciklusok Ciklusszervez szerkezetbl ngyet ismer a Java nyelv: az elltesztel, a htultesztel, a lptet s a bejr ciklusokat.

Forrs: JAVA 2 tikalauz programozknak 5.0


Elltesztel ciklus Formja: while (logikai kifejezs) utasts. Ez a ciklus a ciklusmag lefuttatsa eltt kirtkeli a ciklus felttelt, amely egy logikai kifejezs. Ennek igaz rtkekor a ciklus folytatja futst. Ha a felttel kezdetben hamis, akkor a ciklus magja egyszer sem kerl vgrehajtsra. Egy-egy sorban 1-tl 9-ig a szmok kirsa: i = 1; while(i < 10) System.out.println(i++); Htultesztel ciklus Formja: do utasts while (logikai kifejezs) Ez a while-ciklushoz hasonl, de a ciklusmag lefutsa utn vizsglja meg a felttel rtkt. Ha a felttel igaz, akkor jra kezdi a ciklusmagot. Ha a felttel kezdetben hamis, akkor is lefut egyszer a ciklusmag. i = 1; do System.out.println(i++); while(i < 10); Lptet ciklus Formja: for (kezdet; logikai kifejezs; tovbblps) utasts A for-ciklussal nagyon egyszeren rhatk szmllt lptet ciklusok leggyakrabban ppen erre hasznljuk ezt a szerkezetet. Egy tmb elemeinek feldolgozsa: int[] tmb = int sszeg = 0; for (int i = 0; i<tmb.length; i++) sszeg += tmb[i]; A for ciklus fejben deklarlt azonostk csak a ciklus trzsben lesznek rvnyesek. A fenti pldnl a ciklus utn mr nem hasznlhat az i vltoz, mert ott mr nem lthat. ltalban biztonsgosabb a ciklusvltozt a ciklus fejben definilni, s ezltal a ciklusra lokliss tenn i. Bejr ciklus (Javaban nincs foreach! Tovbbfejlesztett for (enhanced for) nven fut a msik for ciklus!) Formja: for (tpus vltoz: gyjtemny) utasts Ezzel a ciklussal egy adatszerkezet bejrst, elemeinek sorravtelt vgezhetjk. Az adatszerkezet lehet egy tmb, de akr egy gyjtemny-keretrendszerbeli sorozat vagy halmaz is. Egszekbl ll tmb elemeinek sszegzse: int[] tmb = int sszeg = 0; for (int n: tmb) sszeg += n; Felttlen vezrlstads Cmkk Brmely utasts el rhat cmke, mely az utasts egyrtelm azonostst teszi lehetv felttlen vezrlstadsok pontos meghatrozsa rdekben. Formja: cmke: utasts A break utasts A break utasts egy blokkbl val kilpsre szolgl: break [cmke]; Ha nem ll mellette cmke, akkor a legbels blokkbl lp ki. Ha egy blokk cmkje ll mellette, akkor a megjellt blokkbl lp ki: int i = 1; ciklus: while (i<1000) { for (int j=1; j<=1; j++) { if (logikai_fv(i, j)) break ciklus; } } A break utastssal nem lehet metdusbl vagy inicializl blokkbl kiugrani. A continue utasts Egy ciklus magjnak htralv rszt t lehet ugrani a continue utastssal. Ennek alakja: continue [cmke]; Az utasts hatsra a ciklusmag htralv rsze nem kerl vgrehajtsra, s a program futsa a ciklus felttelnek kirtkelsvel folytatdik. while (! bemenet.eof() ) { // amg a bemeneten mg van valami sor = bemenet.redln(); // egy sor olvassa a bemenetrl if (ures(sor)) continue; // nyomtat(sor) kimarad nyomtat(sor); // egy sor nyomtatsa

Forrs: JAVA 2 tikalauz programozknak 5.0


} Visszatrs Egy metdusbl a return [kifejezs] utastssal lehet visszatrni. Az adott metdus visszatrsi rtke a return utn rt kifejezs rtke lesz: int abszolut(int szm) { if (szm < 0) return szm; else return szm; }

Forrs: JAVA 2 tikalauz programozknak 5.0


Z2/31 Osztlyok felptse, tagvltozk, metdusok, konstruktorok, egysgbezrs, UML jellsei Osztlyok felptse Az osztly defincija fejbl s trzsbl ll. A fejet a class kulcssz vezeti be, amelyet az osztly neve kvet. Az osztly nevt hagyomnyosan nagybetvel kezdjk, sszetett sz esetn a szsszetevk is nagybetvel kezddnek. Clszer fnevet vagy fnvi kifejezst vlasztani. A class kulcssz eltt szerepelhetnek mdostk: olyan szintaktikus elemek, melyek a velk elltott definciban bevezetett egysget valamilyen jellemzvel ruhzzk fel. Egy defincit tbb, egymstl szkzzel elvlasztott mdost is megelzhet. A megengedett mdostk halmaza s jelentse a definci fajtjtl fgg, osztlyokhoz a public, abstract s final mdostkat hasznlhatjuk. A public mdost azt jelenti, hogy az adott osztly hozzfrhet ms csomagokbl is. Adott esetben az osztly fejben kell megadni azt is, hogy az osztlyt mely osztly kiterjesztseknt definiljuk, illetve azt, hogy az osztly mely interfszeket valstja meg. Az osztly trzse az osztly tagjait, vagyis vltozit s metdusait tartalmazza kapcsos zrjelek kztt. A vltozk s metdusok szerepelhetnek akr felvltva is. A vltozkat kisbetvel kezdd fnvvel, a metdusokat kisbetvel kezdd igvel szoktk azonostani. Egy adott tulajdonsg fennllst vizsgl, logikai rtket visszaad metdust a megfelel mellknvrl clszer elneveznnk. Trzsben szerepelhetnek mg konstruktorok, inicializl blokkok s tagosztlyok is. public class ClassName { String nev; int fizetes; void fizetestEmel(int novekmeny) { fizetes += novekmeny; } } Pldnyvltozk Az osztly vltozit vltozdeklarcik adjk meg. Egy vltozdeklarci egy vagy tbb azonos tpus vltozt vezet be. A deklarci a vltozk tpusnak nevvel kezddik, amely mgtt vesszvel elvlasztva a vltozk nevei llnak, s egy pontosvesszvel zrul: int fizetes, potlekok, levonasok; Lehetsges a vltozkhoz egyenknt kezdrtket rendelni. A kezdrtket egy kifejezssel, az inicializtorral adjuk meg. Az inicializtor nlkl deklarlt vltoz kezdrtke az implicit kezdrtk lesz. Az implicit kezdrtk a vltoz tpustl fggen nulla, \u0000, false vagy null lesz. int fizetes = 30000, potlekok, levonasok = fizetes/4; A final mdostval elltott vltoz rtke nem vltoztathat meg rtkadssal, hasznlatval konstansok deklarlhatk. A konstansok nevt nagybetvel rjk, hogy rnzsre is meglehessen klnbztetni ket a vltozktl. Egy konstans kezdrtknek belltsra hrom lehetsg van: a konstans deklarcijban inicializtort adunk meg a konstans deklarcijban nem adunk meg inicializtort de: o minden konstruktor rtket kell, hogy adjon neki o vagy inicializl blokkon bell lltjuk be Egy adott osztly metdusaiban egyszeren a nevkkel hivatkozhatunk az osztly vltozira. Az ilyen hivatkozs mindig az aktulis pldny vltozira vonatkozik. A vltoz neve eltt egy ponttal elvlasztva megadhatjuk, hogy ms objektum vltozjra hivatkozunk. Az ilyen hivatkozst minstett hivatkozsnak nevezzk. Ennek segtsgvel tudjuk az adott osztly ms pldnyainak vagy ms osztlyok pldnyainak vltozit elrni. A minsts lehet tbbszrs is: dolgozo.fonok.fizetes Metdusok Egy osztly metdusait metdusdefincik rjk le. Egy metdusdefinci kt rszbl, fejbl s trzsbl ll. A fej rendre megadja a metdus visszatrsi tpust, az azonostjt, s zrjelek kztt, egymstl vesszvel elvlasztva a formlis paramtereit. Az azonostt s a paramterek tpusnak sorrend szerinti listjt egyttesen a metdus szignatrjnak hvjuk. Szksg esetn a fejben kell feltntetni a trzsben kivltott ellenrztt kivteleket is. A metdusdefinci feje eltt megengedett mdostk a public, protected, private, az abstract, a static, s synchronized s a native. A metdus trzse a mkdst definil utastsblokkot tartalmazza. Ha a metdus abstract vagy native, a trzset egy pontosvessz helyettesti. A metdus trzst nem vlaszthatjuk el e fejtl. boolean kozepesJovedelmu(int minimum, int maximum) { return minimum <= fizetes && fizetes <= maximum;

Forrs: JAVA 2 tikalauz programozknak 5.0


A formlis paramterek olyan loklis vltozk, amelyek a metdus futsnak ideje alatt lteznek. Kezdrtkk a metdushvsban szerepl, nekik megfelel aktulis paramter. A paramterek nevnek klnbznie kell nemcsak egymstl, hanem a trzsben szerepl loklis vltozk nevtl is. A formlis paramterekre alkalmazhatjuk a final mdostt, hogy ne lehessen rtkket megvltoztatni. A formlis aramterek listjban minden paramternek kln meg kell adni a tpust. A paramter nlkli metdusok paramterlistja c sak a zrjelekbl ll. void fizetesDuplaz() { fizetes * = 2; } A void visszatrsi tpus azt jelzi, hogy a metdus nem ad vissza rtket. A metdus futsa a trzs utols utastsnak vgrehajtsval fejezdik be, hacsak paramter nlkli return utastssal ms ponton ki nem lpnk belle, vagy egy kivtelt nem kezelnk le. Az rtket visszaad metdus trzst ezzel szemben gy kell kialaktanunk, hogy abbl mindenkppen a visszatrsi rtket megad paramteres return utastssal trjnk vissza, klnben fordtsi hibt kapunk. A metdus hvsban meg kell adnunk a metdus defincijban elrt szm s tpus paramtert. Kizrlag egy konkrt pldnyra vonatkozan hvhatjuk meg. A metdushvsnak egy objektumra kell vonatkoznia. A pldnyvltozk nevhez hasonlan a metdusok nevt is minstssel vagy anlkl hasznljuk. Minstett metdusnvvel a minstsben szerepl objektumra hvjuk meg a metdust. Alkalmazott a; a.fizetesDuplaz(); Egy osztly tbb metdust is elnevezhetjk ugyangy, ha szignatrjuk klnbz, vagyis formlis paramtereik szma s/vagy tpusa nem egyezik meg. Egy metdust ugyanis a szignatrja azonostja. A metdusnv tbbszrs hasznlatt tlterhelsnek nevezzk. Tlterhelt nv hasznlatnl az aktulis paramterek szma s tpusa szerint vlasztja ki a Java fordt, hogy melyik metdust kell meghvni. public class Alkalmazott { void fizetesEmel(int novekmeny) { fizetes += novekmeny; } void fizetesEmel() { fizetes += 5000; } void fizetesEmel(Alkalmazott masik) { if (kevesebbetKeresMint(masik)) fizetes = masik.fizetes.; } Alkalmazott a = new Alkalmazott(), b = new Alkalmazott(); a.fizetesEmel(5000); a.fizetesEmel(); a. fizetesEmel(b); Konstruktorok A konstruktor olyan programkd, amelynek vgrehajtsa a pldnyostskor automatikusan megtrtnik. A konstruktorok nagyon hasonltanak a metdusokra, de mgsem tekintjk ket tagoknak(mert nem rkldhetnek). Nevknek meg kell egyeznie az osztly nevvel. Paramtereket fogadhatnak, st egy osztlynak tbb, klnbz szignatrj konstruktora is lehet. Kzvetlenl nem hvhatk meg, csak pldnyostson keresztl. Mivel ilyen esetben a visszatrsi rtket a pldnyost opertor adja, a konstruktoroknak visszatrsi tpusa nincsen, mg csak nem is void. Egy konstruktordefinci majdnem pontosan olyan mint egy metdusdefinci. A klnbsg mindssze annyi, hogy az azonost kztt, nem szabad semmilyen visszatrsi tpust feltntetni, s cak a hozzfrsi kategrit meghatroz mdostk alkalmazhatk. public Alkalmazott(String nev, int fizetes) { this.nev = nev; this.fizetes = fizetes; this.evesFizetes = 12*fizetes; } public Alkalmazott(String nev) { this(nev, 40000); } Az els konstruktor szmra az alkalmazott neve s fizetse is paramterknt adhat meg, a msodik a fizetst nknyesen llaptja meg.

Forrs: JAVA 2 tikalauz programozknak 5.0


A formlis paramtereknek lehet ugyanazt az azonostt adni, mivel a formlis paramterek elfedik az osztly vltozit, a this minstssel rhetjk el csak azokat. A konstruktor els utastsaknt lehetsgnk van ugyanazon osztly egy msik konstruktort meghvnunk. A hvsban a this kulcsszt kell hasznlni. Tlterhelt metdusok hvshoz hasonlan, itt is az aktulis paramterek tpusa hatrozza meg a meghvand konstruktort. Egy osztlynak mindig van konstruktora. Ha egy programoz r konstruktorokat, akkor azok lesznek az osztly konstruktorai, ha nem, akkor a fordt automatikusan biztost egy implicit konstruktort, amely public, paramter nlkli, s trzse res. A konstruktor hozzfrsi kategrija azt hatrozza meg, hogy mely osztlyok jogosultak az adott konstruktoron keresztl pldnyostani. Egysgbezrs Az adatstruktrkat s az azokat kezel metdusokat egy egysgknt kezeljk s elzrjuk ket a klvilg ell. Az gy kapott egysgeket objektumoknak nevezzk. UML jellsei Az osztly jele egy ltalban hrom rszre osztott tglalap, ahol a fels svba az osztly nevt, a kzpsbe az osztly attribtumait, az alsba pedig az osztly mveleteit rjuk.

jellsek..Szoftech. Z1/12. ttel

Forrs: JAVA 2 tikalauz programozknak 5.0


Z2/32 Az objektumkzpont programozs mkdse. Mik az objektumok, mi a pldny? Az objektum diagramok UML jellsei. Az objektumorientlt programozs egy programozsi mdszertan. Ellenttben a korbbi programozsi mdszertanokkal, nem a mveletek megalkotsa ll a kzppontban, hanem az egymssal kapcsolatban ll programegysgek hierarchijnak megtervezse. Az objektumorientlt gondolkodsmd lnyegben a vals vilg lemodellezsn alapul pldul egy htkznapi fogalom, a kutya felfoghat egy osztly (a kutyk osztlya) tagjaknt, annak egyik objektumaknt. Minden kutya objektum rendelkezik a kutykra jellemz tulajdonsgokkal (pldul szrszn, mret stb.) s cselekvsi kpessgekkel (pldul futs, ugats). Az objektumorientlt programozsban fontos szerep jut az gynevezett rkldsnek, ami az osztlyok egymsbl val szrmaztatst teszi lehetv: a kutyk osztlya szrmazhat az llatok osztlybl, gy megrkli az llatok tulajdonsgait s kpessgeit, valamint kibvtheti vagy fellrhatja azokat a kutyk tulajdonsgaival, kpessgeivel. Mik az objektumok Minden objektum, egy elre definilt osztly pldnya. Egy osztlyban ltalban egy feladat elvgzshez szksges kdrszleteket gyjtik ssze funkcijuk szerint, tagfggvnyekbe rendezve. Egy osztlyt ltrehozsa utn pldnyostani kell, hogy hasznlhatv vljanak a benne sszegyjttt rutinok. Az osztly pldnyt nevezzk objektumnak. Az objektum rszei adatelemek, szerkezeti sszefggsek, szelekcis mveletek, konstrukcis mveletek. Objektumok 4 f tulajdonsga: Az adat s kd egysge rklds Polimorfizmus Zrtsg Adat s kd kombincija Egy objektum adatbl s kdbl pl fel. A kd az objektum fggvnye, melyet metdusnak hvunk. Az adatot, melyeket vltozkkal runk le, az objektum egyedvltozinak, vagy attribtumainak nevezzk rkls Egy j osztly ltrehozsakor annak alapja egy msik osztly. Az j osztlyban a szl osztly metdusai s egyedvltozi is hasznlhatak, az j osztly sajt egyedvltozkat s metdusokat is tartalmazhat. Fontos kiemelni, hogy minden objektumnak van szlje a Javaban (Object class) Polimorfizmus Egy osztly leszrmazottjban a metdust jra lehet definilni. (AZ EGYEDVLTOZT NEM!!!) Hasonl osztlyok, hasonl tulajdonsgt, ugyan olyan nev metdussal kezelhetjk. A metdusok ugyan arra nvre hallgatnak, de az objektumoknak megfelel adatokat szolgltatnak. Zrtsg Az objektumok egyedvltozinak manipullsa a programban, kizrlag az objektum metdusain keresztl lehetsges. Az objektum metdusai tartjk a kapcsolatot a klvilg s az objektum kztt. Pldny Adott osztlytpussal tbb objektum pldnyt is ltrehozhatunk. A pldnyok sajt adatterlettel rendelkeznek, de a metdusokat kzsen hasznljk. Az aktulis pldnyra a this pszeudovltozval hivatkozhatunk. Az objektum diagramok UML jellsei

Szoftech. Z1/12. ttel

Forrs: JAVA 2 tikalauz programozknak 5.0


Z2/34 Az applet grafikus fellete java.awt csomag -, Swing, a HTML nyelv alapjai, applet begyazsa HTML oldalba, az applet letciklusa Az applet grafikus fellete Mivel az Applet a java.awt.Panel kzvetlen leszrmazottja, gy a grafikus megjelentsnek megvalstsa ezen fels kontnerbl kiindulva kell, hogy trtnjen. Mivel maga az Applet teljesrtk grafikus Component is egyben, gy akr mi magunk is kzbe vehetjk a megjelents megvalstst a paint, illetve update metdusainak megfelel felldefinilsval. Mivel az appletek megjelentse egy HTML oldalba begyazva trtnik, ezrt grafikus megjelentskre a kvetkez megszortsok vonatkoznak: A bngszprogram az appletbegyazs feldolgozsakor a ltrehozott appletpldnyt egybl a megadott width s height paramtereknek megfelelen mretezi. Ezen mretek megvltoztatst a bngszprogram figyelmen kvl hagyhatja. Az applet megjelentsi terletnek HTML oldalon belli koordintit nem lehet megtudni. Pontosabban minden applet a szl kontner(ei)hez kpest a (0, 0) koordintn ltja nmagt, vagyis mindig csak a szmra lefoglalt ablakterlet koordintarendszert hasznlja. Biztonsgi megfontolsok miatt nem javasolt nll ablak nyitsa. Ha egy applet mgis egy sajt ablakot jelent meg, akkor azt a bngszprogramok mindig figyelmeztet felirattal ltjk el, nehogy HTML tartalom rsznek lehessen tekinteni. Egy applet magtl nem veszi figyelembe az t tartalmaz HTML oldal szneit, se m a HTML oldal htternek belltott kpet. Ugyanakkor a sznbellts vagy httrkp sajt megjelentsi kddal egyszeren megvalsthat. AWT Abstract Window Toolkit Absztrakt Ablakoz Eszkztr. Grafikus felhasznli felletek ksztshez szksges alap API, amelyet a java.awt csomaghierarchia tartalmaz. Nevben az absztrakt jelz arra utal, hogy a felletelemek megjelentsrt nem a Java platform, hanem az azt futtat opercis rendszer grafikus ablakoz rendszere felels. Ennek htrnya, hogy emiatt a felhasznlhat grafikus komponensek halmaza a jelenlegi sszes ablakoz rendszer ltal tmogatott komponensek elg szk kzs metszetre korltozdik, s hogy a komponensek tnyleges kinzete az opercis rendszertl fgg, ami a Java platformfggetlensgi elvnek mond ellent. Elnye viszont, hogy a Java felhasznli felletek knnyen integrldnak a megszokott ablakoz -rendszer ltal megvalstott stlus munkafelletbe, valamint biztostja a klnbz ablakok tartalma kztti thzssal trtn adattvitel lehetsgt. Swing Az AWT megszortsainak kikszblsre ltrehozott igen fejlett grafikus programknyvtr. Elnevezst a JFC grafikus komponenseit fejleszt projekt kdnevrl kapta. A Swing komponensek az AWT alapjaira plnek, de szntiszta Javban rdtak s nmaguk gondoskodnak a sajt megjelentskrl, ezltal fggetlenek a grafikus felletet biztost opercis (s ablakoz) rendszertl. Ezen klnbsg hatsra lehetv vlt az AWT szolgltatsait meghalad komplex grafikus felhasznli elemek megvalstsa, valamint igen knnyen elvgezhet a mr meglv komponensek tetszleges kombinlsa s akr mdostsa is. A Swing tpusokat a javax.swing csomagok tartalmazzk. HTML nyelv alapjai A WWW alapnyelve a HTML nyelv (Hypertext Markup Language - hiperszveges jell nyelv) WWW=World Wide Web= vilghl Egyszer jellnyelv, amellyel platformfggetlen hiperszveges dokumentumokat lehet kszteni. A HTML teht egy olyan jell nyelv, amely lerja (lerkdnyelvnek is nevezik), miknt kell a fjlt (dokumentumot) megformzni. Tulajdonkppen egy ASCII-szvegfjl begyazott jellkdokkal. A hiperszveg (hypertext) elnevezs arra utal, hogy egy szveg egyes elemeihez (pl. szavakhoz) tovbbi szveget lehet rendelni. Egy ilyen szveget olvasva teht egyes szavak, mondatrszek stb. kiemelve jelennek meg, amelyeket kivlasztva a hozzjuk kapcsolt tovbbi szveg megjelenik. Ebben a szvegben is el lehet helyezni ilyen kapcsolatokat (hiperhivatkozsok, linkek), amelyek tovbbi tetszleges szvegre mutathatnak, gy szinte pkhlszer informcihlt lehet ltrehozni. Termszetesen a HTML fjlokban nem csak szveghez rendelhetnk hivatkozsokat, hanem pl. kpekhez is. Fjl helyett a tovbbiakban ltalnosan hasznljuk az objektum elnevezst. Amikor hiperhivatkozst hozunk ltre alapveten hrom krdsre kell vlaszolnunk. 1. Mi az elrend HTML fjl (objektum) neve? 2. Hol helyezkedik el? o webkiszolgl neve o elrsi t a kiszolgln bell 3. Hogyan lehet elrni azt?

Forrs: JAVA 2 tikalauz programozknak 5.0


A fenti hrom krdsre az URL ismerete adja meg a vlaszt Az applet begyazsa HTML oldalba Applet HTML oldalba val begyazsra a 4.0-s HTML vltozattl kezdve az <applet> kulcssz helyett az <object> hasznland a kvetkez attribtumokkal: codebase=url: az applet alaprtelmezett knyvtra. Alaprtelmezett rtke a begyaz HTML oldal elrsi tvonala, relatv formja is ehhez viszonytva rtend. archive=lista: az applet kdjt s erforrsait tartalmaz szkzzel elvlasztott- archvumlista. Relatvan megadott archvumhivatkozsok csak a codebase al (teht nem lphetnek onnan ki.. /hasznlatval) mutathatnak, mg teljes http://URL csak a codebase-zel azonos hosztra hivatkozhat. classid=osztlynv: a vgrehajtand applet osztlyneve java:osztlynv formban. Amennyiben az applet futtatkrnyezetnek (JRE) szksges verziszmt is el akarjuk rni, akkor azt szintn ezen attribtum kvetkez rtkvel tehetjk meg: clsid:CAFEEFAC -xxxx-yyyy-zzzzABCDEFFEDCBA, ahol az xxxx, yyyy s zzzz a f+al-, mikro- s frisstsi verziszmot jelenti. Amennyiben a classid attribtum egy JRE-re mutat, akkor az applet vgrehajtand kdjnak megadsa a code nev indtsi paramter rtkeknt trtnik. codetype=application/x-java-applet, application/java vagy application/java-archive: appletet jelz MIME tpuskdok. data=fjlnv: a futtatand szerializlt appletpldnyt jelli ki. standby=szveg: ez a szveg ltszik, mg az applet futtatsa el nem kezddik. name vagy id=azonost: a HTML oldalon belli egyedi azonostt rendel az applethez, melynek segtsgvel ugyanazon oldalba gyazott appletek elrhetik egymst. width=szm: az applet grafikus felletnek szlessge kppontban (ktelez). height=szm: az applet grafikus felletnek magassga kppontban (ktelez) align=konstans: az applet grafikus felletnek igaztst lehet vele szablyozni. vspace: az applet felett s alatt resen hagyand kppontsorok szma. hspace: az applet mellet resen hagyand kppontoszlopok szma. Egy <object> HTML blokk felptse: <object > <param name=azonost value=rtk> HTML sorok </object> A <param> HTML kulcssz segtsgvel lehet indtsi paramtereket tadni az applet szmra. A <object> blokk vgn tallhat HTML sorok csak akkor kerlnek rtelmezsre s megjelentsre, amennyiben a megjelentst vgz bngszprogram nem kpes (pl.: tl elavult) az applet vgrehajtsra. Ennek kihasznlsval akr tbb <object> blokkot is egymsba gyazva egy adott applet klnbz verziit is elrhatjuk. Az applet letciklusa Az applet futtatst vgz kln programszl a konstruktor lefutsa utn, ngy publikus metduson keresztl vezrli az applet vgrehajtst. init: az applet inicializlst vgzi. Norml esetben a konstruktor utn egybl meghvdik, kivve, ha az appletbegyazs egy szerializlt objektum megadsval trtnt, ekkor ugyanis ez a metdus nem kerl vgrehajtsra. pp ezrt itt rdemes az applet indtsi paramtereit tvenni. Csak ezen metdus vgrehajtsa utn hvdnak meg elszr az applet grafikus megjelentsi metdusai. start: az applet el-(vagy jra)indtskor kerl vgrehajtsra. Kzvetlenl a meghvsa eltt az applet aktv llapotba kerl. A kezdeti indtskor az init metdus utn, majd mindig akkor hvdik meg, amikor az appletet jra kell indtani. Ez akkor kvetkezik be, ha pldul a bngszben visszatrnk az appletet tartalmaz HTML laphoz, vagy ha a bngszprogram visszakerl eredeti mretbe ikonizlt llapot utn, vagy egyszeren csak az applet (a HTML oldal grgetsvel) lthatv vlik. Itt rdemes az applet sajt programszlait el-/jraindtani. Az applet indtsi kp egszen ezen metdus els meghvsnak befejezdsig fog ltszani! stop: az applet meglltsakor kerl vgrehajtsra. Kzvetlenl a meghvsa eltt az applet inaktv llapotba megy t. Mindig akkor hvdik meg, ha az appletnek nem kell tovbb futnia. Ez akkor kvetkezik be, ha pldul a bngszben elhagyjuk az appletet tartalmaz weblapot, vagy ha a bngszt ikonizljuk, vagy egyszeren csak az applet (grgets miatt)mr nem lthat. Itt rdemes az applet sajt programszlait lelltani.

Forrs: JAVA 2 tikalauz programozknak 5.0


destroy: az applet megszntetsekor, mg a finalize eltt kerl vgrehajtsra. Itt kell az applet ltal mg lefoglalt erforrsokat felszabadtani, pldul a kommunikcis vagy I/O vgpontokat lezrni. Ezen metdusok Applet-beli implementcii resek, ezrt nem ktelez ezek felldefinilsakor a fellrt s metdust is meghvni. Az applet llapotnak aktv mivoltt az isActive metdusval lehet lekrdezni. Megjegyzend tovbb, hogy az letciklus metdusok vgrehajtsnak kivltsa ersen fgg a tnylegesen felhasznlt futtatkrnyezet megvalststl, teht pldul klnbz bn.gszprogramok akr egymstl eltr alkalmakkor is krhetik az applet lelltst s jraindtst.

Forrs: JAVA 2 tikalauz programozknak 5.0

Z2/35 Java kisalkalmazsok (applet) ksztse s futtatsa, appletek biztonsga. Az applet -ek elnyei s htrnyai. Java kisalkalmazsok (applet) ksztse Minden applet az Applet osztly leszrmazottja kell, hogy legyen, az appletspecifikus alaptpusokat pedig a java.applet csomag tartalmazza. Alaprtelmezett osztlybetltjk a sun.applet.AppletClassLosader a keressi tvonal mentn, a gyorsttrazs figyelembe vtelvel intzi a kdbetltst. Mivel a java.net.URLClassLoader leszrmazottja, gy biztostja szksg esetn a hlzaton keresztl trtn letltst. Digitlisan alrt archvumok kezelst specializcija, a sun.plugin.security.PluginClassLoader vgzi. Mivel az appletek pldnyostsa automatikusan, a begyaz HTML oldalt megjelent bngszben fut virtulis gpen trtnik, ezrt minden applet osztlynak publikusnak kell lennie, valamint rendelkeznie kell publikus paramter nlkli konstruktorral! Futtatsa Minden egyes applet futtatsa kln programszlban, egyes megvalstsok esetn pedig mg kln programszlcsoportban trtnik. A felhasznlt bngszprogram a tartalmaz HTML dokumentum megjelentsekor az applet begyazsnak helyn kihagy az indtsi paramtereknek megfelel mret tglalapot, majd a megadott osztlynv vagy szerializlt forma alapjn pldnyostja s elindtja az appletet. Mivel ennek elvgzse elg sokig is eltarthat, ezen id alatt az applet helyn az gynevezett indtsi kp jelenik meg. Alaprtelmezett esetben az applet terletnek kzepn fehr krlapon a Java log ltszik, melyet sugrirny, aktivitst jelz animci jr krbe, alatta pedig egy llapotjelz csk mutatja a letlts elrehaladottsgt, a bngsz sttuszsorban pedig a Loading Java Applet szveg jelenik meg. Amennyiben az applet betltsekor hiba lpne fel, a kijellt terletn vagy a bngsz sttuszsorban megjelenik a hibazenet, a bal fels sarokban pedig egy figyelmeztet ikon lesz lthat. Ekkor jobb egrrel az appletre kattintva egy felbukkan men hvhat el, amely lehetv teszi a Java konzol indtst, illetve informci megjelentst az alkalmazott Java futtatkrnyezetrl. Begyaz krnyezet Az applet sikeres betltse s pldnyostsa utn a futtat krnyezet ltrehoz s a setSub metdussal bellt egy AppletStub interfszt megvalst hozzrendelt objektumot, melyen keresztl az adott applet a bngszvel tartja a kapcsolatot. A begyazsi krnyezetet, azaz magt az appletet megjelent programot egy AppletContext interfszt megvalst objektum reprezentlja, melynek elrse a getAppletContext metdussal lehetsges. Ha egy appletet nem egy bngszprogram pldnyost automatikusan, akkor ezen objektumok sem jnnek ltre, gy a bngszspecifikus lehetsgek nem llnak az ilyen appletek rendelkezsre. Ugyanez a helyzet az applet konstruktornak vgrehajtsakor is, ugyanis ekkor mg nem trtnt meg a begyaz objektum belltsa. Appletek biztonsga Az appletekre vonatkoz biztonsgi megktsek betartst egy java.lang.SecurityManager osztly appletek ltal le nem cserlhet pldnya ellenrzi az applet futsa alatt, gy megktsek minden bngszprogramban msok. Alkalmazs esetn nem kerl belltsra alaprtelmezett SecurityManager. Az aktulis SecurityManager pldnyt a java.lang.System osztly tartalmazza. Minden knyesebb Java metdus vgrehajtsa eltt a futtatrendszer ellenrzi, hogy az adott mveletet engedlyezi -e az aktulis SecurityManager. Az ellenrzs rendszerint gy trtnik: SeyurityManager security = System.getSecurityManager(); if(security!=null) security.checkXXX(argumentum, ); Ha a program nem megengedett mveletet akar vgrehajtani, akkor a SecurityManager egy java.lang.SecurityException kivtelt vlt ki. Ha a mvelet engedlyezett, akkor a megfelel ellenrzmetdus nem csinl semmit. Az albbi felsorols a jelenlegi bngszk ltal megvalstott megszortsokat illusztrlja. Az appletek nem hasznlthatnak native metdusokat nem tlthetnek be programknyvtrakat (Runtime.load Libray) a futtat gpen nem engedlyezett semmilyen fjlmvelet szmukra, erforrsfjlokat is csak a sajt codebase vagy documentbase knyvtruk alatt rhetnek el csak az applet kdjt tartalmaz gppel hozhatnak ltre hlzati kapcsolatot a vgrehajt szmtgpen nem engedlyezett semmilyen program futtatsa szmukra (Runtime.exec) nem ltjk az sszes rendszerparamtert, a java.lang.System getProperty metdusval ltalban csak a kvetkezket tudjk olvasni: os.arch, os.name, os.version, browser, browser.vendor, browser.version,

Forrs: JAVA 2 tikalauz programozknak 5.0


file.separator, line.separator, path,separator, java.class.verison, java.vendor, java.vendor.url, java.version Ezen megktsek alapjn az appletek hasznlata elvileg teljesen biztonsgosnak tekinthet, hiszen azok mindentl elszigetelve, sajt kis vgrehajtsi krnyezetkben futnak. Azonban mindez a megszortsok helye implementlstl fgg. Teht akkor mondhatjuk a biztonsgi megktsek implementlst helyesnek, ha a felhasznl tudta nlkl egy applet nem tehet semmi olyat, amibl brkinek esetleg kra szrmazhat. Az applet-ek elnyei s htrnyai. Elnyk: Az appletek klnbz platformokon futhatnak- Windows, Linux, Mac OS. Az appletek a Java Plugin tetszleges verzijval mkdnek. Appletek futtatsa biztonsgos Legtbb web bngsz tmogatja A bngsz cache-li az appleteket: az oldal jboli megtekintsekor gyorsabb a betlts. Htrnyok: Java Plugin szksges az appletek futtatshoz. Az els akalomkor a JVM (Java Virtual Machine) hosszadalmas betltse. Ha az applet nincs cache-lve, akkor annak letltse a netrl idt ignyel. Nehz a j felhasznli interfsz kialaktsa

Vous aimerez peut-être aussi