OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek"

Átírás

1 OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető tulajdonságai 4. Mi kell egy Java program fejlesztéséhez, illetve kész program futtatásához? 5. A Java program (alkalmazás), a Java applet és a JavaScript fogalma 6. A Java alapelemei: karakterkészlet, azonosító, megjegyzés, egyszerű típusok 7. A Java alapelemei: lokális változó, tömb, vezérlő utasítások 8. Osztálydefiníció, adattag, metódus fogalma. Példányosítás 9. Hivatkozás típusú változó (referencia) fogalma, az egyszerű típusú és az osztály típusú változók közötti különbség. Hivatkozás objektum elemeire. 10. Hozzáférési kategóriák és jelentésük. Használatukra vonatkozó konvenciók. 11. A this pszeudó változó és szerepe 12. Metódusnév túlterhelés (overloading) 13. Konstruktor fogalma, definíciójának és használatának szabályai. Az implicit konstruktor. 14. Objektumok megszűnése. A szemétgyűjtő mechanizmus, A finalize metódus. 15. Java csomagok és fordítási egységek. Minősített (teljes) hivatkozás. Az import direktíva. 16. Osztályváltozó és osztálymetódus 17. A final minősítésű adattag és metódusok 18. Az öröklődés fogalma, szintaktikai szabályai. Statikus és dinamikus típus fogalma. 19. Konstruktorok az öröklődés során 20. Felüldefiniált metódusok: a definiálásra és a hívásra vonatkozó szabályok. Használatának célja. 21. Absztrakt metódus és absztrakt osztály 22. A Java interface fogalma, a definíció szintaktikája. Interface implementálása. 23. A kivétel fogalma és a kivételkezelés utasításai a Java nyelvben. Kivétel keletkezése. 24. Kivétel elkapása és lekezelése. A finally blokk szerepe 25. Előre definiált és saját kivétel osztályok 26. Az ellenőrzött és nem ellenőrzött kivétel fogalma. Kivételek specifikálása 27. Beágyazott osztályok 28. Az osztály interface fogalma és a jól tervezett osztály interface jellemzői 29. Az általánosítás/pontosítás (is-a) és a tartalmazás (has-a) kapcsolat implementálási lehetőségei a Java nyelvi eszközökkel.

2 1. TÉTEL Az objektumorientált programozás szemlélete, az objektum fogalma OOP szemlélete: a programkészítés egy absztrakciós folyamat, amelyben a valós világban létező jelenséget valamilyen programozási eszköz absztrakciós szintjén képezünk le. A munka nehézsége függ: A leképezendő jelenség/folyamat bonyolultságától A valóság és a programozási eszköz absztrakciós szintjének különbözőségétől A programozás egy másik megközelítése a program, amely a valós világ egy szeletének működő modellje. Ebben a szemléletben a valós világ egy absztrakt modelljét kell leképezni egy programozási eszközre. Ezt a folyamatot megkönnyíti, ha az analízis modell elemei könnyen leképezhetők nyelvi elemekre. Az analízis modell elkészítése során a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Az objektum: egyediséggel rendelkező diszkrét entitás. Jellemzők: Attribútum: objektum állapot, ennek időbeli változása az objektum viselkedése Műveletek: ezek modellezik az objektum viselkedését. Objektumtól objektumig 1. szint: Tanulmányozzuk a valós objektumokat és megkeressük azoknak a probléma megoldása szempontjából fontos adatait és viselkedésmintáit. Ezután megkeressük azon objektumcsoportokat, amelyek azonos adatokkal és viselkedésmintákkal rendelkeznek, és elnevezzük ezt a csoportot. 2. szint: Az előzőleg definiált fogalom leképezése egy programozási eszközre. Ez valójában egy minta a program működéséhez szükséges objektumok létrehozására. 3. szint: Akkor és annyi objektumot kell létrehozni a program futása során, amelyek együttműködve képesek a valóságot modellezni.

3 2. TÉTEL Az objektumorientált programozás alapelvei Az objektumorientált programozás alapelvei: 1. Osztály 2. Objektum 3. Egységbezárás 4. Információ rejtés 5. Üzenet 6. Öröklődés 7. Polimorfizmus Osztály: amelynek részei az adatok (az attribútumok modellezésére) és a módszerek (a műveletek modellezésére). Objektumok közös tulajdonságait definiálja. Programozás technika szempontból egy típus. Objektum: Egy osztály egy működőképes példánya. Egy adott osztályban definiált tulajdonságokkal tetszőleges számú objektum példányosítható. Minden objektum természeténél foga különbözik az összes többitől. Egy adott osztályból példányosított valamennyi objektumnak ugyanolyan lehetséges viselkedés módjai vannak, de saját állapotuk van. Egységbezárás: Az osztály az adatait és a módszereket egy egységgé teszi. Az adatok lokálisak, a módszerek hozzáférhetnek az adatokhoz. Információ rejtés: Egy objektum adatait a külvilág számára hozzáférhetetlenek. Egy objektum a külvilággal csak az interface-én keresztül tarthatja a kapcsolatot. (Interface: a külvilág számára elérhető módszerek együttese.) A módszerek implementációja rejtett. Üzenet: Az objektummal való kommunikáció módja. A módszerek aktivizálását jelenti. Öröklődés: Hierarchikus kapcsolat. A leszármazott osztály örökli az ősosztály adatait és módszereit. Az öröklött módszereket felüldefiniálhatja a maga számára. Új adatokat és módszereket definiálhat. Egy leszármazott osztály csak bővítheti, pontosíthatja az őst, de nem utasíthat el örökölt adatokat vagy módszereket. Polimorfizmus(többalakúság): Bizonyos elemek viselkedése attól a környezettől függ, amelyben alkalmazzuk. A gyakorlatban ez azt jelenti, hogy egy nyelvi elem attúl függően, hogy hol alkalmazzuk, más-más működést eredményezhet.

4 3. TÉTEL A Java nyelv története, alapvető tulajdonságai Történet: 1990-es évek eleje:a SUN belső projectje James Gosling vezetésével -> platform-független technológia szükségessége. Egyik akkora nyelv sem volt megfelelő, ezért terveztek egy újat. A projekt aztán lassan elhalt, 1990-es évek közepe: az Internet rohamos terjedése újra felvetette a platform-független technológia szükségességét. Újraéledt a project, de általánosabb célkitűzéssel. Eredménye a Java nyelv első verziója lett. 1995: Java 1 platform 1999: Java 2 platform Jelenleg J2SE 1.6 (Java 6 platform) A Java egyszerre programozási nyelv és platform. Alapvető tulajdonságok: Magas szintű programozási nyelv Platform-független Általános célú Teljesen objektumorientált Egyszerű Interpretált (de speciális módon) Elosztott Robosztus (nem okoz kárt figyelmetlenségi hiba esetén) Biztonságos Hordozható Többszálú A C++ ismeretében született, annak formalizmusát tekintette mintának A C++ hátrányait igyekezett kiküszöbölni

5 4. TÉTEL Mi kell egy Java program fejlesztéséhez, illetve kész program futtatásához? Valamennyi Java szabvány, és a SUN által implementált alapvető fejlesztőeszközök nyílt forrásúak és ingyenesek. Ezen kívül számtalan nyílt forrású, ingyenes; zárt forrású, de ingyenes; kereskedelmi termék kapható A minimális fejlesztőkörnyezet: J2SDk vagy újabban JDK(Java Development Kit) Tetszőleges szövegszerkesztő Kényelmesebb fejlesztő környezetek: NetBeans Eclipse Mindkét fejlesztőeszköz maga is Java-ban íródott, tehát sokféle platformon futtatható. JDK legfontosabb elemei: A Java API-t implementáló könyvtárak Ségedprogramok: Javac: java fordító Java: a JVM (futtatáshoz) Javadoc: automatikus dokumentáció generáláshoz a forrás szöveg és a benne található speciális kommentek alapján Jdb: debugger Minimális futtató környezet: JRE (Java Runtime Environment) Ha egy gépen csak JRE van, bármely más gépen fejlesztett Java program futtatható, ha ugyanolyan vagy korábbi verziójú JDK segítségével készült.

6 5. TÉTEL A Java program (alkalmazás), a Java applet és a JavaScript fogalma Java program: Java-fordítóval készült önálló alkalmazás. Az adott architektúrán futó JVm hajtja végre. Mindazon jogokkal rendelkezik, mint bármely más alkalmazás. A java program osztályok halmaza. Végrehajtható kód csak osztály metódusában fordulhat elő. Egy alkalmazás belépési pontja egy olyan osztály, amelyben van egy public static minősítésű main nevű metódus. Applet: HTML oldalból elérhető, végrehajtható bít kód, ami Java forrásból készült. A HTML kódba csak egy hivatkozás kerül, az applet maga bárhonnan letöltődhet. A HTML oldal ételmezője hajtja végre (a böngésző valósítja meg a JVM-et). Korlátozott jogokkal rendelkezik biztonsági okok miatt. JavaScript: Eredetileg LiveScript néven a Netscape-nél kifejlesztett script nyelv (tehát nem bináris kód). Célja weboldalak dinamikussá tétele. A (szöveges) kód része a HTML oldalnak. A Java-hoz hasonló C++ szintakszisához hasoló formalizmus. Nem objektumorientált, csak objektum alapú. Bár ezt is a böngésző értelmezi, semmi köze a Java-platformhoz.

7 6. TÉTEL A Java alapelemei: karakterkészlet, azonosító, megjegyzés, egyszerű típusok A Java az Unicode karakterkészletet használja, tehát akár ékezetes azonosítókat is használhatunk. Azonosító: betűvel kezdődő és betűvel vagy számmal folytatódó karaktersorozat Az _ és a $ is a betűk közé sorolandó A betűk bármely karakterkészletből származhatnak Az azonosító hossza tetszőleges A Java a kis- és nagybetű érzékeny Kulcsszavak, valamint a const, goto, null, true, false savak nem lehetnek azonosítók Megjegyzések: 1. Mint a C-ben: /* valami*/ 2. Egysoros: // sor végéig komment 3. Dokumentációs: /** tetszőleges szöveg*/ Egyszerű típusok: Hasonlóak, mint a C-ben, de pontosan definiált helyfoglalással és ábrázolási móddal. Nincs unsigned minősítő. Konstans változó final minősítővel deklarálható. típusnév Jelentés boolean Logikai típus (true vagy false értékkel) char 16 bites Unicode karakter byte 8 bites előjeles egész short 16 bites előjeles egész int 32 bites előjeles egész long 64 bites előjeles egész float 32 bites lebegőpontos szám (IEEE 754 szerint) double 64 bites lebegőpontos szám (IEEE 754 szerint) Konstansok (literálok): Logikai értékek: true vagy false A C-vel teljesen egyező módon használandók: Egész konstans Lebegőpontos konstans Karakter konstans Szöveg konstans A szöveg konstanst a fordító automatikusan String típusként kezeli.

8 7. TÉTEL A Java alapelemei: lokális változó, tömb, vezérlő utasítások Lokális változók: definíciója csak metóduson belül. Nincs globális változó! Formája mint a C-ben, beleértve a kezdő értékadást is. Egyszerű típusú lokális változó definíciója egyben helyfoglalást is jelent. Változó definíciója egy metóduson belül bárhol lehet. Természetesen a változó csak a definíció után használható. Egydimenziós tömb: Definíciója 1. Tömb típus deklarációja Típusnév azonosító[]; vagy típusnév[] azonosító; 2. Helyfoglalás a tömb elemeinek: Azonosító = new típusnév[elemek száma] A két lépés egy utasításban összevonva: Típusnév azonosító[] = new típusnév[elemek száma] Az elemekre való hivatkozás már ugyanaz, mint a C-ben. A Java-ban többdimenziós tömbök is definiálhatók, amelyek nem feltétlenül négyzetesek. Bár nincs előre definiált osztálya, de osztályhoz tartozóként kezeli a Java. Minden tömbhöz tartozik egy length konstans, amely az elemek számát adja meg. Használata: azonosító.length Operátorok A C majdnem minden operátorát ismeri a Java (kiv mutatókhoz kapcsolódó) Az operátorok jelentése az egyszerű típusokra ugyanaz. Különbségek: Négy új operátor (>>>, >>>=, instanceof, new) Nincs vessző operátor A kifejezések kiértékelési sorrendje meghatározott. Kifejezések kiértékelődési sorrendje: Zárójelezés Operandusok prioritása Azonos prioritás esetén balról-jobbra szabály, kivétel az értékadás, amely jobbrólbalra értékelődik ki. A kifejezésekben a metódushívások sorrendje is a kiértékelés sorrendét követi. Utasítás, blokk Utasítás lehet: kifejezés utasítás, deklarációs utasítás. Az utasításokat pontosvessző zárja. Kifejezés utasítás csak a következő lehet: Értékadás ++ és operátorokkal képzett kifejezések Metódushívás Példányosítás A deklarációs és kifejezés utasítások tetszőleges sorrendben követhetik egymást. Az utasítások sorozata {} jelek közé zárva a blokk. Utasítás helyére mindig írható blokk. Vezérlő utasítások: Lényegében megegyeznek a C utasításaival. Különbségek: Az if, while, do utasításokban a feltétel csak logikai kifejezés lehet. A for utasításban a második kifejezés csak logikai kifejezés lehet A switch utasításban a szelektor csak egész kifejezés lehet Nincs goto utasítás

9 8. TÉTEL Osztálydefiníció, adattag, metódus fogalma. Példányosítás Osztálydefiníció: az Java program osztályok halmaza. Egy osztálydefiníció egyben egy teljes fordítási egység (de általában nem teljes program). Az osztály és a definícióját tartalmazó file neve meg kell egyezzen. Osztályok csomagokba rendezhetők, ezzel lehet modulokat képezni. Egy csomag tetszőleges számú osztályt tartalmazhat, de egy osztály csak egy csomagban lehet. Az osztálydefiníció fejlécből és a {} zárójelpárral határolt törzsből áll. A fejléc formája: [módosítók] class osztályneve [egyebek] Az osztály neve egy azonosító. A törzsben adattagok és metódusok és további elemek definíciói állhatnak. Adattagok: Definíciója: [módosítók] típusnév azonosítólista A típusnév valamelyik egyszerű típus, tömb típus, vagy osztálynév lehet. A névlista elemeit vesszővel választjuk el. Formájuk: azonosító[=inicializáló kifejezés]. Az inicializáló kifejezésben csak előtte már deklarált adattagok használhatók. Az inicializáló kifejezés minden példányosítás esetén kiértékelődik. Nem inicializált adattag az alábbi default értékkel inicializálódik: Boolean: false Char: \0000 Minden egész típus: 0 Minden lebegőpontos típus: 0.0 Osztály típus: null Metódusok: Formája: [módosítók] típus név(paraméterlista) [ ] A metódus osztályon belül definiált függvény. Osztályon kívül definiált függvény nincs. Osztály hatáskör: Az egységbe zárás alapelvének implementálása: minden osztály saját hatáskörrel rendelkezik. Egy osztály minden eleme tehát lokális az osztályra nézve. Következmények: Különböző osztályokban használhatjuk ugyanazt az azonosítót eltérő értelemben Az osztályon belül az elemek egymásra nevükkel hivatkozhatnak A metódusok használhatják az adattagokat és a többi metódust. Példányosítás: az osztály objektumok létrehozásához használható mintaként tekinthető. A Java programban az osztálynév típusként használható. Az objektum létrehozásának folyamata a példányosítás. Egy osztályból tetszőleges számú objektum példányosítható. A legegyszerűbb mód egy osztály típusú változó definiálása: Formája: [módosítók] osztálynév azonosító = new osztálynév([paraméterek]) A () zárójelpár a paraméterek hiányában is kötelező A folyamat: Lefoglalódik az objektumnak szükséges hely Inicializálódik az objektum A lefoglalt memóriaterületre való hivatkozás kerül a változóba

10 9. TÉTEL Hivatkozás típusú változó (referencia) fogalma, az egyszerű típusú és az osztály típusú változók közötti különbség. Hivatkozás objektum elemeire. Hivatkozás: a Java-ban kulcsfontosságú fogalom. Osztály típusú változó mindig hivatkozás, nem objektum! Hivatkozás típusú változó: Értéke cím, amely egy objektumot címez meg, vagy null Használata indirekció nélkül magát az objektumot jelenti a kifejezésekben Az értéke a programozó számára hozzáférhetetlen Következmény: objektum csak futás közben, dinamikusan hozható létre. Hivatkozással végezhető műveletek: Definíció Értékének beállítása objektum létrehozásával Értékadás hivatkozások között Értékének beállítása a null konstansra Két hivatkozás összehasonlítása ( a == művelettel) Használható objektum elemére való hivatkozásban Egyszerű típusú változó: a deklarációja egyben definíció is, hely foglalódik a memóriában, és a továbbiakban a változó az ott tárolt értéket képviseli. Osztály típusú változó: deklarációja hatására csak egy cím számára foglalódik memória. Ezt a címet egy példányosított objektum címére kell beállítani. Ezután a változó az általa hivatkozott objektumot fogja képviselni Objektum elemeire való hivatkozás: Osztályon belül névvel. Minden más esetben az objektum nevével minősítve a. (pont) operátorral. Metódusra való hivatkozásnál aktuális paramétereket is kell adni, és a hivatkozás a metódus aktivizálását jelenti.

11 10. TÉTEL Hozzáférési kategóriák és jelentésük. Használatukra vonatkozó konvenciók. A [módosítók] szintaktikai elem egyik feladata a hozzáférési kategóriák megadása módosító Nincs public private protected Hozzáférési kategória Félnyilvános: csak az azonos csomagban levő osztályok érthetik el Nyilvános, bármely csomagban lévő bármely osztályból elérhető Privát: más osztályból nem, de az adott osztály összes példánya számára elérhető A félnyilvános kategória kiterjesztése. Az azonos csomagban levő osztályok, egy másik csomagban definiált leszármazott osztály, ha minősítés nélkül hivatkozik rá, vagy saját, vagy leszármazottja típusának megfelelő minősítéssel hivatkozik rá Osztály csak nyilvános vagy félnyilvános lehet. Adattag és metódus bármelyik kategóriába tartozhat. Használata: az információrejtés alapelvének betartása érdekében minden elem kapja a lehető legszűkebb kategóriát. Szokásos konvenciók: Egy osztály csak akkor legyen public, ha általános használatra szántuk Az adattagok private (esetleg protected) minősítést kapjanak. Ha szükséges, metódusokon keresztül legyenek elérhetők. A public adattag hiba!!! A metódusok közül csak a külvilág számára szükségesek (az osztály interface-ét jelentők) legyenek public minősítésűek.

12 11. TÉTEL A this pszeudó változó és szerepe Minden objektumhoz: Saját adattag-készlet tartozik Az osztály összes objektumára közös a tagfüggvény-készlet. Hogyan tud a tagfüggvény az aktuális objektum adattagjaira hivatkozni? Megoldás: minden objektumhoz létezik az előredefiniált this pszeudó változó, amely az adott objektumra hivatkozik. Ezen keresztül éri el az adattagot a tagfüggvény. A this pszeudó változó explicite is használható.

13 12. TÉTEL Metódusnév túlterhelés (overloading) Egy osztályhoz több metódus is tartozhat azonos névvel, de különböző paraméterszignatúrával (a formális paraméterek száma és típus-sorrendje). A visszatérési érték típusa ebből a szempontból közömbös. A polimorfizmus egyik implementációs formája. A függvény hívásakor a fordítóprogram az aktuális paraméterek szignatúráját sorban egyezteti az összes azonos nevű definíció formális paramétereinek szignatúráival. Ennek az egyeztetésnek az alábbi eredményei lehetnek: Pontosan egy illeszkedőt talál: ilyenkor az ennek megfelelő függvény hívását fordítja le. Egetlen illeszkedőt sem talál: hibajelzést ad Több egyformán illeszkedőt talál: hibajelzést kap Korai kötés??? Az egy osztályhoz több azonos nevű metódus is tartozhat pontosabb jelentése az alábbi: Egy osztályban definiálhatók azonos nevű metódusok Ezen felül ugyanilyen nevű metódusokat örökölhet is az osztály A saját és örökölt metódusok együttesére érvényes a metódus overloading szabályrendszere.

14 13. TÉTEL Konstruktor fogalma, definíciójának és használatának szabályai. Az implicit konstruktor. Konstruktor: egy objektum adattagjai a létrehozáskor a default értékkel inicializálódnak. Ez nem mindig felel meg a programozónak. Ezen lehet változtatni például egy metódussal, amellyel a létrejött objektum adattagjai a szükséges értékekre állíthatók be. Ez azonban nem mindig a legjobb. Problémák: Ha egy ilyen metódust elfelejtünk meghívni, az objektum nem a megfelelő kezdőállapotban kezdi az életciklusát. Egy objektum működésének kezdetén az adattagjai értékének inicializálásán kívól más tevékenységekre is szükség lehet. Ezeket a problémákat lehet megoldani egy automatikusan meghívódó kódrészlettel, a konstruktorral. A konstruktor majdnem olyan mint egy metódus, az alábbi korlátozásokkal: Neve egyezik az osztály nevével Nem lehet visszatérési értéke (még void sem) Legfeljebb üres return utasítást tartalmazhat Már létező objektumra nem hívható meg közvetlenül Nem öröklődik Módosító csak hozzáférést szabályozó kulcsszó lehet. A konstruktor legtöbbször public minősítésű. Példányosítás konstruktorral: Minden példányosítás esetén az alábbi folyamat zajlik le: Helyfoglalás az adattagoknak Az adattagok inicializálása (default értékkel, vagy az inicializáló kifejezésnek megfelelően) A konstruktor meghívódása a példányosításban megadott aktuális paraméterlistával A konstruktornak szóló paraméterek a példányosítás során az osztálynév után, () zárójelpárban, vesszővel elválasztva adhatók meg. A konstruktor felhasználhatja az osztályban deklarált valamennyi adattagot. Az adattagok kezdőértéke a konstruktor számára az előzetes inicializálásnak megfelelő lesz. A konstruktor az osztály bármely metódusát használhatja. A metódusnév túlterhelés szabályainak betartásával egy osztályban tetszőleges számú konstruktor definiálható. A példányosítás utáni első metódushívás feltételezheti, hogy valamelyik konstruktor már lefutott. Egy metódus nem tudja megállapítani, hogy melyik konstruktor inicializálta az objektumot. Egy konstruktor első utasítása lehet ugyanazon osztály vagy az ősosztály egy másik konstruktorának meghívása Másik konstruktor meghívása: This(aktuális paraméterlista) Ősosztály konstruktorának megívása: Super(aktuális paraméterlista) Implicit konstruktor: egy ősosztálynak mindig van legalább egy konstruktora. Ha a programozó definiál legalább egy konstruktort, akkor azok lesznek a konstruktorok. Ha a programozó egyet sem ír, akkor az osztályhoz a fordító hozzárendeli az impilict konstruktort. Ez public, paraméter nélküli és a törzse üres. Ha egy osztálynak nincs explicite definiált konstruktora, csak paraméter nélküli példányosítás lehetséges. Ha egy osztálynak van legalább egy explicit konstruktora, akkor paraméter nélküli példányosítás csak akkor lehetséges, ha a programozó definiált paraméter nélküli konstruktort. Az implicit konstruktor ilyenkor nem rendelődik hozzá az osztályhoz.

15 14. TÉTEL Objektumok megszűnése. A szemétgyűjtő mechanizmus, A finalize metódus. Objektum megszűnése: A C programozási nyelvben a futás közben dinamikusan lefoglalt memória területek helyes felszabadításáért a programozó a felelős. A Java-ban csak dinamikusan lehet objektumot létrehozni, de nem kell megszüntetni (nem is lehet). Az objektumok automatikus megszüntetése a szemétgyűjtő mechanizmus feladata. Szemétgyűjtő mechanizmus: számon tartja, hogy egy objektumra hány referencia hivatkozik. Ha már nincs érvényes referencia, az objektum haszontalanná válik. Egy külön szálban futó szemétgyűjtő felszabadítja a felesleges objektumhoz tartozó memória területet. Hogy ez pontosan mikor történik meg, nem tudjuk. Egy objektumra hivatkozó referencia megszűnik például, ha megszűnik maga a változó, megváltozik a változó értéke, a változónak a null értéket adjuk. Finalize metódus: minden osztályhoz definiálható egy Protected void finalize() throws Throwable metódus. A szemétgyűjtő hívja meg, még az objektum tárterületének megszüntetése előtt. Feladata minden olyan mellékhatás megszüntetése, amelyet az objektum az élete során okozott.

16 15. TÉTEL Java csomagok és fordítási egységek. Minősített (teljes) hivatkozás. Az import direktíva. A Java-ban a programok tagolásának eszköze a csomag (package). (összetartozó típusok egysége). Minden csomagnak saját névtere van. Elkerülhető az egyező típusnevekből adódó problémák. A csomagok a hozzáférési kategóriák használatának eszközei. A Java-ban a csomagokban lehetnek adatcsomagok, a csomagszerkezet fastruktúrát alkot. A csomag tartalmát a fordítási egységek adják meg. A fordítási egységekben találhatók a csomaghoz tartozó kódok, azaz típusok (osztályok és interface-ek) definíciói. A csomagokra hierarchikus szerkezetű azonosítóval hivatkozhatunk. Az A csomag B alcsomagjában lévő C alcsomag: A.B:C Az egyes csomagokban található típusokra teljesen analóg módon hivatkozhatunk. Például a fenti csomagban definiált T típus: A.B.C.T Csomagok és fordítási egységek összerendelése: leképzés az operációs rendszer filerendszerére vagy tárolás adatbázisban. A fordítási egységek file-ok.java kiterjesztéssel, a csomag-alcsomag nevek pedig katalógus nevek, amelyből útvonal generálódik. A fenti példában említett A.B.C csomag T típusának megkeresése a következőképpen történik: Egy előre kijelölt katalógus A alkatalógusának B alkatalógusában a Java fordító a T.java file-t keresi. A lefordított byte-kódot ugyanoda T.class néven helyezi el. A csomagszerkezetnek több kiinduló katalógusa is lehet. A fordító a CLASSPATH környezeti változó, vagy a classpath kapcsoló alapján keresi meg a csomagok helyét a file rendszerben. A Java API előre definiált típusai is csomagokban találhatók. Egy fordítási egység az alábbi részekből áll Csomagdeklaráció Importdeklaráció Típusdeklarációk (osztály vagy interface deklarációk) Csomagdeklaráció: csomagnév megadása: package csomagnév A csomagnév teljes hivatkozás kell legyen. A fordítási egység elején szerepelhet és csak egy ilyen deklaráció lehet. Minden fordítási egység csak egy csomaghoz tartozhat. Ha elmarad, a fordítási egység egy névtelen csomaghoz fog tartozni. Egy csomag szabadon bővíthető. Import deklarációk: egy másik csomagban deklarált publikus típust a teljes azonosítójával kell megnevezni. Ezt rövidíthetjük az adott típus importálásával: import A.B.C.T Ezután a fordítási egységben elég a T típusnév megadása. A fordító mindig a teljes azonosítót használja a munkája során. Egy csomag valamennyi típusát is importálhatjuk az alábbi formában: import A.B.C.*. Minden fordítási egységbe automatikusan importálódik a java.lang csomag összes típusa. Szerepe nem azonos a C #include direktívájával, mert nem másolódik be hatására semmi, csak a hivatkozást egyszerűsíti. Csomagok és hozzáférési kategóriák: ebből a szempontból minden csomag egyenrangú. Az A csomag B alcsomagja az A csomag szempontjából ugyanolyan idegen, mint az összes többi.

17 16. TÉTEL Osztályváltozó és osztálymetódus Példányváltozó: az eddig megismert adattagokból minden objektumnak saját készlete van. Ezeket ezért szokás példányváltozónak is nevezni. Az adattagok deklarációja elé kitehető a static minősítő. Osztályváltozó: a statikus adattag az osztály valamennyi objektuma számára egy példányban létezik, azok osztottan használják. Miután az osztály egészére vonatkoznak, szokás osztályváltozóknak is hívni. Nem a this pszeudó változó segítségével történik az elérése. Az objektumok előtt kell létrejönnie. Inicializálása az osztály inicializálás során történik. (A JVM akkor inicializál egy osztályt, amikor először történik rá aktív hivatkozás.) Az osztályon belül a nevével hivatkozhatunk. Hivatkozhatunk rá bármely objektum példányával. Az osztály bármely metódusa használhatja. Mivel egyetlen példány létrehozása nélkül is létezik, a hivatkozásban osztálynevet is használhatunk. Osztálymetódus: bár az eddigi metódusok csak egy példányban léteznek minden példány számára, de működésükhöz egy aktuális példány szükséges. Ezeket hívhattuk volna példánymetódusoknak is. Metódus is kaphat static minősítést: osztálymetódus. Az ilyen metódus a példányváltozókhoz és a this pszeudó változóhoz nem férhet hozzá. Következmény: csak osztályváltozókat és más osztálymetódusokat használhat. Akkor is végrehajtható, ha az osztálynak nem léteznek példányai Hivatkozás: Osztályon belül nevével Minősített hivatkozásnál bármely példány vagy az osztály nevével Egy program indulásakor nincs, ami példányt hozzon létre, ezért a main metódusnak static minősítésűnek kell lennie.

18 17. TÉTEL A final minősítésű adattag és metódusok A final minősítő többféle célra is használható a Java nyelvben. Jelentése mindig valami olyasmi, ami később nem változtatható meg. Final adattagok: deklaráció: final típus azonosító=inicializáló kifejezés Az inicializáló kifejezés csak olyan elemeket tartalmazhat, amelyek az addigi deklarációk ismeretében feldolgozhatók. Miden példányosítás során végrehajtódik, tehát a változó értéke objektumként egyedi lehet. Egyetlen metódus sem változtathatja meg az értékét. Static final adattagok: deklaráció: static final típus azonosító=inicializáló kifejezés. Az inicializáló kifejezések csak konstansokat és olyan static adattagokat tartalmazhat, amelyek már deklaráltak. Csak egyszer, az osztály inicializálása során hajtódik végre, tehát a változó értéke az osztály miden példánya számára ugyanaz. Egyetlen metódus sem változtathatja meg az értékét. Az egyszerű típusú final adattagok egy konstans értéket képviselnek. Az osztálytípusú final adattagok egy konstans referenciát képviselnek: Nem változtatható meg az értéke, hogy egy másik példányra hivatkozzon Semmi sem akadályozza azonban azt, hogy a hivatkozott objektumot megváltoztassuk A Java-ban egy objektum nem deklarálható konstansnak Kezdőérték nélküli final adattag: másik elnevezése üres konstans. A deklarációból az inicializáló kifejezés elhagyható (az = jellel együtt). Az adattag az első használata előtt inicializálandó. Veszélyes lehet, ezért ne használjuk, vagy ha mégis, akkor minden konstruktor állítsa be az értékét. Final metódus: egy metódus kaphat final minősítést. A final minősítésű metódust nem definiálhatja felül egyetlen leszármazott osztály sem. Szerepe, hogy megakadályozza bizonyos viselkedés formák megváltoztatását, ha az veszélyezteti a helyes működését.

19 18. TÉTEL Az öröklődés fogalma, szintaktikai szabályai. Statikus és dinamikus típus fogalma. Egy osztály deklarálható valamely más osztály leszármazottjaként. A leszármazott osztály rendelkezik: A szülő osztály tagjaival A saját tagjaival Az ős osztály elemeinek az elérése a leszármazott osztályból nem feltétlenül garantált. Az öröklődési hierarchia tetszőleges lehet. Egyetlen korlátozás: egy osztály még közvetett módon sem lehet saját maga őse. Az ős osztály továbbra is használható önmagában is. Ha egy Java osztálynak nincs megadva őse, automatikusan az Object osztály leszármazottja lesz. Minden osztálynak van tehát egy közös őse. Szintaktika: [módosító] class név extends ősosztály { // a saját tagok deklarációja } Hivatkozás a leszármazottra: mivel egy leszármazott az őse minden tulajdonságával rendelekzik, bármikor használható ős típusú objektumként is. Ezért egy ős típusú hivatkozás használható leszármazott típusú objektumhoz is. Következmény: bármely objektumra hivatkozhatunk Object típusú hivatkozással. Egy változónak van statikus és dinamikus típusa. Statikus és dinamikus típus: egy változó statikus típusa az, amelyet a deklarációjában megadtunk. Ez a változó teljes élete alatt változatlan. Egy változó dinamikus típusa az általa éppen hivatkozott objektum tényleges típusa. Ez a program futása során bármikor változhat. A változó dinamikus típusa csak a statikus típus vagy annak leszármazottja lehet. Hozzáférés a leszármazottból: a leszármazott osztály az ős osztályból örökölt tagokra hozzáférés szempontjából ugyanolyan jogokkal rendelkezik, mint bármely más osztály. Például az örökölt private adattagot nem érheti el közvetlenül. Mivel azonban az örökölt adattagok a részét képezik, az örökölt public metóduson keresztül használhatják. A leszármazottra vonatkozó speciális minősítő a protected.

20 19. TÉTEL Konstruktorok az öröklődés során A konstruktor nem öröklődik. Mind az s osztály, mind a leszármazott osztály rendelkezhet konstruktorral (akár többel is). Egy leszármazott objektum példányosításánál tisztázni kell: A konstruktorok végrehajtási sorrendjét Azt, hogy hogyan választhatjuk ki az ősosztály konstruktorai közül a végrehajtandót Végrehajtási sorrend: először mindig az ősosztály, majd a leszármazott osztály konstruktora hajtódik végre. A pontos sorrend: Az ős osztály adattagjainak inicializálása Az ős osztály konstruktorának végrehajtódása A gyermek osztály adattagjainak inicalizálása A gyermek osztály konstruktorának végrehajtódása Ős osztály konstruktorának kijelölése: A gyermek osztály első sorában szerepelhet egy super(paraméterek) konstruktorhívás. A paraméterlistának az ős osztály valamelyik konstruktorára illeszkednie kell. Ha ilyen hívás nem szerepel a gyermek osztály konstruktorában, akkor egy implicit super() hívással kezdődik a konstruktor végrehajtása. Következmények: ha a gyermek osztálynak van olyan konstruktora, amelyben nincs explicit ős konstruktor hívás, a szülő osztálynak kell legyen paraméter nélküli konstruktora. Ha a gyermek osztálynak csak implicit konstruktora van, az is, az ős osztály paraméter nélküli konstruktorát hívja meg. A szabályok megsértésénél hibajelzés.

21 20. TÉTEL Felüldefiniált metódusok: a definiálásra és a hívásra vonatkozó szabályok. Használatának célja. Metódusnév túlterhelés: a már ismert mechanizmus: egy osztályon belül azonos nevű függvények, eltérő paraméter szignatúrával. A saját és az örökölt függvények együttesen tekintendők. Korai kötés: a fordítóprogram az aktuális paraméterek statikus típusa alapján dönteni tud Polimorfizmus, mert a név nem egyedi, további információkat kell felhasználni. Metódus felüldefiniálás: Az előzőnél még hatékonyabb implementációs forma A leszármazott osztály az ős osztálytól örökölt metódust felüldefiniálhatja Egy ilyen metódus hívásánál dönteni kell, hogy az örökölt vagy a saját változat hívódjon meg polimorfizmus A döntés alapja a hivatkozás dinamikus típusa Mivel a dinamikus típus fordítási időben nem ismert, a felüldefiniált metódusok közötti választást futásidőre kell halasztani késői kötés. Egy ős osztálybeli metódus felüldefiniálásához a következő feltételeknek kell teljesülnie: A felüldefiniálandó metódus visszatérési típusának, nevének, és paraméter szignatúrájának meg kell egyeznie az ős osztálybeli metóduséval A felüldefiniálandó metódus hozzáférési kategóriája nem lehet szűkebb az eredeti metódusénál A felüldefiniálandó metódus csak olyan ellenőrzött kivételeket válthat ki, amilyeneket az eredeti is kiválthat Felüldefiniálandó metódus hívása: a hívásban szereplő valamennyi információ illik minden metódus változatra ez alapján nem lehet dönteni. A döntés alapja a hivatkozás dinamikus típusa. A döntés csak futás időben történhet. A felüldefiniálandó metódus az ős osztály metódusát elérheti a super.metódusnév( ) formájú hivatkozással. Késői kötés használata: a leszármaztatás lehetőséget teremt, hogy viselkedésformákat örököljön egy osztály. Bizonyos esetekben a változatlanul öröklődő viselkedés nem felel meg a leszármazottnak. A felüldefiniálás lehetősége ezt a problémát tudja megoldani. A késői kötés automatizmusa a használatot kényelmessé teszi. Metódus felüldefiniálási további szabályok: nem kötelező a leszármazás minden szintjén felüldefiniálni a metódust. Egy osztály örökölheti a felüldefiniált metódust. Statikus metódus nem definiálható felül. Ugyanolyan nevű statikus metódus a leszármazott osztályban elfedi az ős osztály metódusát.

22 21. TÉTEL Absztrakt metódus és absztrakt osztály Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus szükséges lesz a leszármazottakban, de még nem lehet megadni az implementációját. Ezért a Java nyelv megengedi törzs nélküli metódus definiálását. Az ilyen metódust az abstract minősítővel kell ellátni. Ha az osztály tartalmaz absztrakt metódust, az osztályt is az abtract minősítővel kell ellátni. Formai szabályok: Absztrakt egy metódus, ha nincs törzse, megvalósítást, csak a felüldefiniálás során kap. Absztrakt metódusnak nem lehet azonosítója a private, final, static hiszen az ilyen metódusokat nem lehet felüldefiniálni. Absztrakt egy osztály, ha van legalább egy absztrakt metódusa Absztrakt osztályt nem lehet példányosítani Egy absztrakt osztály arra szolgál, hogy ős osztálya legyen további osztályoknak A leszármazott osztály(ok) feladata az absztrakt metódusok felüldefiniálása Absztrakt osztály gyermeke lehet absztrakt, ha nem minden absztrakt metódust valósít meg Az absztrakt osztály is használható referencia statikus típusaként Az absztrakt metódusok szerepe: rögzít egy tervezési döntést (szüksége metódusok halmaza), kényszeríti a leszármazott osztály(ok) programozóját meghatározott metódusok definálására. Hibalehetőségek: törzs nélküli metódus, abstract minősítő nélkül, absztrakt metódust tartalmazó osztály abstract minősítő nélkül.

23 22. TÉTEL A Java interface fogalma, a definíció szintaktikája. Interface implementálása. Egy osztály interfészén a nyilvános elemeinek összességét értjük, ami a használatához szükséges. Az információ rejtés elve miatt, általában csak metódusokból áll. Specifikáció, tervezés során készül. Kényszeríti az osztály késztőjét a megfelelő elemek implementálására. Protokollok az objektumok között. Interfészek a Java-ban: mivel nincs globális változó, konstans, ezért lehetnek adat részei is. Szintaktikája hasonló az osztályhoz, de a class kulcsszó helyett interface. Kiterjeszthet más interfészeket (extends), létezik többszörös interfész öröklés. Az interfész nem tartalmaz végrehajtható kódot, azt a megvalósító osztályban (implements) kell megadni. Megállapoidás, hogy I -vel kezdődik a neve. Szintaktika: [módosító] interface Iazonosító [extends Ios1[,Ios2]] { [elemek deklarációja] } Módosító lehet: public vagy abstract Interfészek kiterjesztése: minden interfész kiterjeszthet egy vagy több interfészt. Fontos, hogy önmagát nem terjesztheti ki sem közvetve, sem közvetlen. Nem alakulhat ki körkörös lánc. Interfészek láthatósága: Public: nyilvános: ebben az esetben az interfész azonos nevű fájlba kell írni, 1 interfész w fájl -: csomagszintű: ilyenkor csak abban a csomagban lehet használni, de több is lehet egy forrájsfájlban Interfész implementálása: [módosító] class osztálynév [extends ősosztály] [implements Iint1[,Iint2[, ]]] Szabályok: Ha egy osztály implementál egy interfészt, akkor köteles annak minden metódusát implementálni Az implementált elemeket nem módosíthatja Metódusok esetében a fejlécnek teljesen egyeznie kell Azonos nevű elemet az öröklődés során és az implementálás során nem kaphat meg Interfész használata: egy interfész új referencia típust vezet be -> mindenhol használható, ahol egy osztály. Változó deklarációban szerepelhet. Bármelyik osztállyal helyettesíthető, amely implementálja.

24 23. TÉTEL A kivétel fogalma és a kivételkezelés utasításai a Java nyelvben. Kivétel keletkezése. Kivételes helyzetek a jól megírt programokban is előfordulnak (pl: erőforrsáhiány, valamilyen funkció hibás vagy hiányos adatok miatt nem hajtható végre). Ezeket a szituációkat kezelni kell. A szükséges teendők elvégzése után általában a program folytatni tudja a munkát. Kivétel: futás idejű hiba, nem normális eset. Általában valamiyel hibához kötődik. Számos beépítést igényel. Saját kivétel definiálható. A Java szemléletében a kivétel egy objektum, ami a kivétel bekövetkezésekor jön létre. Saját kivétel kiváltása: throw objektum. A kivétel keletkezésekor szokásos teendők: Értesíteni a felhasználót, vagy naplózni Valamilyen plusz művlete után folytatni az alkalmazást, esetleg kilépni, súlyos hiba esetén. Ellenőrzött kilépés lehetséges A kivétel objektum tartalmazhat információkat a kivétel keletkezéséről, amelyet felhasználhatunk Kivételkezelés utasításai: try: védett kód kijelölése throw: kivétel dobása, generálása catch: kivétel elkapása, a blokkban definiált utasítások végrehajtása finally: végül, akár volt kivétel, akár nem, lefut. Try blokk: a védett kód try blokkban helyezzük el Try {utasítások} A blokkban keletkezett kivételt mi kezelhetjük le. A blokkok egymásba ágyazhatók. Érdemes minél kisebb blokkot definiálni. Kivétel keletkezik, ha a try blokkban egy throw utasításra fut a vezérlés. Formája: throw new kivételtípus(konstruktor paraméterek) A throw paramétere nem maradhat el Kivétel keletkezése: Implicit módon: a JAVA rendszerből indul ki, azaz valamely utasítás vagy API elem végrehajtása során keletkezik A programozó kódjában keletkezik, közvetlenül egy throw utasítás végrehajtásával Aszinkron kivétel, amely a program egy másik szálán lépett fel. A kivétel keletkezése esetén: Az első kivételt kiváltó utasítással befejeződik a try blokk végrehajtása. Kilép a blokkból a vezérlés, rendcsinálással, verem visszaállítása, lokális objektumok megszüntetése, védett változók megszüntetése Létrejön a throw utasításban megjelölt objektum egy példánya

25 24. TÉTEL Kivétel elkapása és lekezelése. A finally blokk szerepe Kivétel elkapása és lekezelése: a kivétel objektumot minden esetben a virtuális gép hozza létre. A kivétel lekezelését szolgáló utasítások catch blok(ok)ban helyezkednek el. Formája: catch(típus paraméterek) {utasítások}. A catch minden esetben a try blokkot követi, nem lehet közöttük más utasítás. Egy try blokkhoz tartozhat több catch is. A virtuális gép megkeresi a sorrendben első illeszkedő blokkot, és annak végrehajtásával folytatódik a program. Az illeszkedés feltétele: a kivétel objektum típusa megegyezik a catch blokk fejében megadott típussal, vagy annak leszármazottja. A kiválasztott blokk végrehajtása során a paramétere úgy használható, mint a függvények esetén a formális paraméter. Így lehet felhasználni a kivétel objektumban tárolt információkat. A futás az utolsó catch utáni sorral folytatódik. Minden ellenőrzött kivételt kezelni kell. Ha a catch blokk végrehajtása során újabb kivétel keletkezik, az eredeti kivétel kezelése megszakad, és az új kivétel lekezelése kezdődik el. Ha egyetlen catch blokk sem illeszkedik kivételre, a keresés a beágyazó try blokk catch blokkjaival folytatódik, amíg sikeres nem lesz. Ha a keresés belülről kifelé minden try blokkot megvizsgált, és nem talált egyezést, a program terminálódik, és kiíródik a kivétel stack (lekezeletlen kivétel). Finally blokk: nem kötelező. A catch(ek) után szerepelhet. Az utolsó catch blokk és a finally blokk között nem lehet más utasítás. Nem lehet paramétere. Minden esetben lefut. Ha kivétel keletkezett a try blokkban, egy catch blokk végrehajtása után. Ha nem volt kivétel, a try blokk uzolsó utasítása után. Alkalmas például fájlok, adatbázis kapcsolatok lezárására.

26 25. TÉTEL Előre definiált és saját kivétel osztályok Kivétel objektum: mivel objektum, valamely definiált osztály példánya kell legyen. Minden kivétel osztály a Java.lang.Throwable osztály leszármazottja kell legyen, de ez általában közvetve valósul meg. A Java.lang.Throwable osztálynak van számos előre definiált leszármazottja. Kivétel osztályok: az Error és a RunTimeException osztályú kivételek nem ellenőrzött kivételek. Az összes többi ellenőrzött kivétel. Ajánlott minden programozó által definiált kivétel az Exception osztályból származzon. Valamennyi ilyen kivétel ellenőrzött kivétel, kötelező lekezelni. Konvenció: minden kivételosztály neve: ValamiException legyen, ahol a valami a kivétel jellegére utal. Az Exception osztály: van egy String paraméterű konstruktora, amellyel egy leírás definiálható a kivételhez. Számos hasznos metódust definiál, amely öröklődik és szükség esetén felüldefiniálható: String tostring(): visszaad egy sztringet, amely az osztály azonosítójából és a konstruktorban megadott sztringből áll String getmessage(): visszaadja a konstruktorban megadott sztringet printstack(): kiírja a keletkezett kivételeket, a keletkezésük sorrendjében és megadja a keletkezésük helyét (hasznos lehet hibakezeléshez, paraméter nélkül a standard hibacsatornára ír, de paraméterben megadható, hogy hova írjon) Saját kivétel osztály: az Exception osztály leszármazottja legyen. Fontos a névkonvenció. A konstruktorának a paraméterei között legyen egy String, amivel az ős osztály konstruktorát hívja meg. A további paraméterek a hibára jellemző adatokat fogadhatnak. A metódusai a catch blokkban használhatók a kivétel lekezelése során. A kivételek csoportosítására célszerű leszármazási hierarchiát létrehozni a saját kivételosztályok között is.

27 26. TÉTEL Az ellenőrzött és nem ellenőrzött kivétel fogalma. Kivételek specifikálása Nem ellenőrzött kivételek: az Error és a RunTimeException osztályból származó kivételek Error: rendszerszintű hiba a JVM működésében RunTimeException: a program számos pontján keletkezhetnek, ezért nem célszerű kötelezővé tenni a lekezelésüket. A programozó, ha akarja, lekezelheti. Lekezeletlen kivétel esetén a program terminálódik, és kiíródik a kivétel stack. Ellenőrzött kivételek: a fordítóprogram hibát jelez, ha nincs lekezelve. A kivétel keletkezésének módjai: A try blokk után valamelyik catch blokk elkapja, és teljes mértékben lekezeli. A metódus futása folytatódik a catch blokkok utáni első utasítással. A try blokk utána valamelyik catch blokk lekapja, és részben lekezeli. A lekezleés egy olyan throw utasítással fejeződik be, amely a paraméterül kapott kivétel objektumot tartalmazza. A metódus futása befejeződik. A metódus fejlécében ezt a kivételt specifikálni kell. A metódus nem kezeli le a kivételt, de specifikálja azt a fejlécében. A metódus futása befejeződik. Ez akkor szükséges, amikor az adott metódus nem, csak a hívó tudja értelmesen lekezelni a kivételt. A hívó is tovább adhatja a kivétele lekezelését, így a kivétel tetszőleges hívási mélységből is eljuthat oda, ahol lekezelhető. Kivételek specifikálása: ha egy metóduson belül kivétel keletkezhet, de nem tartalmaz catch utasításokat annak kezelésére. Ilyenkor a metódus hívójának kell azokat lekezelni. Erre számítani kell, ezért az ilyen kivételeket a metódus fejlécében specifikálni kell. Formája: metódusnév([paraméterlista]) [throws kivetelosztály1 [, kivetelosztaly2, ] ]

28 27. TÉTEL Beágyazott osztályok Osztálydefiníció a programon belül:a Java-ban egymás mellé rendelt osztály és interface definíciókon kívül lehetőség van definíciók beágyazására: Osztály hatáskörbe (tagosztályok) Utasításblokkba (lokális osztályok) Egy utasításba (névtelen osztályok) Tagosztály: osztálydefiníció egy osztály hatáskörében. A befoglaló és a tagosztály kölcsönösen hozzáférnek egymás tagjaihoz (a private tagokhoz is). A nevek minősítése nem szükséges. A tagosztályok is öröklődnek. A befoglaló osztályon kívüli hozzáférés a tagosztály hozzáférési kategóriájának megfelelően lehetséges. A tagosztály tagjaira való hivatkozáshoz a nevet minősíteni kell. Statikus tagosztály: static módosítóval. Emellett még public, protected, private módosítója lehet. A program csomagon belüli tagolásához: egy típus, amely a befoglaló osztály hatáskörében van. Használható a befoglaló osztályon belül típusként. Ha nem private, a programban ugyanúgy használható, mint bármely más osztály. Alkalmazási területei: Egy segédosztályt el akarunk rejteni a külvilág elől Egy osztály megvalósításakor egy olyan segédosztályra van szükség, amelynek hozzá kell férnie az osztály privát tagjaihoz Ki akarjuk fejezni, hogy egy osztály vagy interface egy másiknak logikai alárendeltje. Nem statikus tagosztály: a befoglaló és a tagosztály példányainak kapcsolatát implementálhatjuk vele. A tagosztály egy adott példányához a befoglaló osztály pontosan egy példánya tartozik. Ellenkező irányban: a befoglaló osztály egy példányához a tagosztály tetszőleges számú példánya tartozhat (nulla is). A fenti kapcsolat automatikusan rögzítődik és fennáll mindaddig, amíg a befoglaló osztály példánya él. Ha például egy külső osztály egy metódusa példányosít egy beágyazott típusú objektumot, az a befoglaló objektumhoz kapcsolódik, és túléli a metódust.

29 28. TÉTEL Az osztály interface fogalma és a jól tervezett osztály interface jellemzői Osztály interface: A public metódusok összessége: ezeket el kell ismernie az osztály használójának. Használatukhoz nem szükséges ismerni az osztály implementációs részleteit Protected metódusok és adattagok: kibővíti az interface-t a leszármazott osztályok számára. Használata veszélyeket rejt magában, mert implementációs függést hoz létre az ős és a leszármazott osztály között. Technika iszempontból az interface részét képezik az esetleges public minődítésű adattagok is, de használatuk nem ajánlott. Ellentmond az információrejtésnek. A jó osztály interface: Teljes: Minden funkciót tartalmaz, ami az osztálytól elvárható Nem az adott alkalmazás szempontjai határozzák meg Újrafelhasználható egységet alkot az osztály Minimális: Nem tartalmaz a felhasználó számára érdektelen elemeket Belső felhasználású funkciók private vagy prtoected minősítésűek A belső áttervezés nincs rá hatással Kezelhető méretű: Általában legfeljebb néhány metódus A sok funkció között nagyobb valószínűséggel lesznek hasonlóak A terjedelmes interface általában tervezési hibára utal: az interface része belső funkció is. Az osztály határait nem jól állapítottuk meg, és túl sok feladatot akarunk rábízni. A helyes architektúra kialakítása érdekében az eredetileg tervezett osztályt több osztályra kell bontani, és ezek között leszármaztatással vagy más mechanizmussal megteremteni a kapcsolatot Az osztály interface részei: Kezelő tagok és metódusok: konstruktorok, örökölt kész metódusok. Sokszor nem is a programozós, hanem a program implicite hívja meg Elérési függvények: az adattagok értékének elérésére vagy azok értékének módosítására Munkavégző függvények: az osztály lényegi funkcióit aktivizál függvények

30 29. TÉTEL Az általánosítás/pontosítás (is-a) és a tartalmazás (has-a) kapcsolat implementálási lehetőségei a Java nyelvi eszközökkel. Osztályok közötti kacsolatok: Általánosítás/pontosítás (is-a) Tartalmazás (has-a) Használat (use) Az általánodítás/pontosítás implementációja: Leszármaztatási mechanizmus (öröklődés) segítségével. A leszármazott osztály objektuma egyben ős objektum is Tartalmazás implementálása: Aggregáció: a rész az egészhez tartozik, de önállóan is létező entitás Kompozíció: a rész önmagában nem létezhet, csak valaminek a részeként. Aggregáció: A tag objektum referenciája a tartalmazó osztályban Ez adattag, tehát általában private Az egy több kapcsolat megvalósítása különböző adatszerkezetekkel lehetséges (tömb, vektor stb.) A referenciák beállítása általában a befoglaló osztály konstruktorának feladata, már létező objektumok referenciáinak felhasználásával. Kompozíció: A tartalmazó osztályban osztálydefiníció a tartalmazott számára, private hozzáférési kategóriával A tartalmazó osztály konstruktorának vagy valamelyik metódusának a feladata a rész példányosítása (Kívülről nem lehet a private minősítés miatt) Öröklődés vagy tartalmazés? Mindkét esetben egy objektum más objektumot tartalmaz. Az öröklődés esetén ez implicit módon történik. Technikai különbségek: A leszármazott objektum pontosan egy ősobjektumot tartalmaz Tagobjektumok tetszőleges számú típussal, típusonként tetszőleges számmal definiálhatók Tervezési különbségek: Más logikai kapcsolatot fejeznek ki(is-a, has-a) Az öröklés az interface újrafelhasználása: a leszármazott osztály interface-ének része lesz az ősosztály interface-e. A private tag objektumnak az osztályának a funkcióit használjuk fel a befoglaló osztály implementációjához. A tagosztály interface.e nem képezi részét a befoglaló osztály interface-ének. A public tag objektummal a befoglaló osztály interface-ét kiegészítjük a tag objektumok osztályainak interface-eivel. Nem mindig szerencsés megoldás: rontja a program áttekinthetőségét. Erős függőséget hoz létre az osztályok között. Készítette: Galán Mihály

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv Java I. A Java programozási nyelv története,, alapvető jellemzői Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 02. 12. Java I.: Történet, jellemzők, JDK JAVA1 / 1 Egy kis történelem

Részletesebben

JAVA PROGRAMOZÁS 3.ELŐADÁS

JAVA PROGRAMOZÁS 3.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 3.ELŐADÁS 2014-2015 tavasz Polimorfizmus, absztrakt osztályok, interfészek 2 Példa - Hengerprogram 3 Példa - Hengerprogram 4 Példa - Hengerprogram

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. Programozás III CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van a fejlesztő környezet és az osztálykönyvtárak is: rt.jar fájl

Részletesebben

Magas szintű programozási nyelvek 2 Előadás jegyzet

Magas szintű programozási nyelvek 2 Előadás jegyzet Magas szintű programozási nyelvek 2 Előadás jegyzet 1. Rendszerfejlesztés 0. lépés: Elemzés (analízis) 1. lépés: Tervezés a, technológia független rész b, technológia függő rész 2. lépés: Megvalósítás

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv Java I. A Java programozási nyelv története,, alapvetı jellemzıi Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 02. 12. Java I.: Történet, jellemzık, JDK JAVA1 / 1 Egy kis történelem

Részletesebben

3. Gyakorlat Ismerkedés a Java nyelvvel

3. Gyakorlat Ismerkedés a Java nyelvvel 3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az

Részletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

Osztály és objektum fogalma

Osztály és objektum fogalma Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Objektum-orientált szemlélet - Egységbe zárás (incapsulation) - Információ elrejtés - Öröklődés altípusosság dinamikus kötés Öröklődés Programozási nyelvek Java - kiterjesztem, kibővítem, megváltoztatom

Részletesebben

PHP5 Új generáció (2. rész)

PHP5 Új generáció (2. rész) PHP5 Új generáció (2. rész)...avagy hogyan használjuk okosan az osztályokat és objektumokat PHP 5-ben. Cikksorozatom elõzõ részében képet kaphattunk arról, hogy valójában mik is azok az objektumok, milyen

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C++ programozási nyelvbe Oktatási segédlet Összeállította: Ficsor Lajos 2001. 1. A C++ programozási nyelv története A C++ programozási nyelv

Részletesebben

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string Resource Objects Adatforrás elemeket hivatkozás (referencia, mutató) segítségével használhatunk, ezek karakterláncok (stringek), képek, azonosítók vagy akár fájlok is lehetnek A mappastruktúra egységesen

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Láthatósági szintek Névterek és hatókörök Osztály szintő tagok Beágyazott osztályok

Részletesebben

15. Programok fordítása és végrehajtása

15. Programok fordítása és végrehajtása 15. Programok fordítása és végrehajtása Programok fordítása és végrehajtása. (Fordítás és interpretálás, bytecode. Előfordító, fordító, szerkesztő. A make. Fordítási egység, könyvtárak. Szintaktikus és

Részletesebben

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1 Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Java adattípusok Java programozás alapjai Egyszerű adattípusok (int, float) Osztályokkal objektumok Nincs külön mutató, referencia, címe operátor, helyette: objektumok csak dinamikusan hozhatok létre és

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 PHP II. WEB technológiák Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 Tartalomjegyzék Objektum Orientált Programozás 1 Objektum Orientált Programozás Öröklődés 2 Fájlkezelés

Részletesebben

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás: Java V. szint lyszintű ű tagok A final minősítő Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 05. Java V.: szintű tagok JAVA5 / 1 Példányváltozó Az eddig megismert adattagokból

Részletesebben

Származtatási mechanizmus a C++ nyelvben

Származtatási mechanizmus a C++ nyelvben Származtatási mechanizmus a C++ nyelvben Miskolci Egyetem Általános Informatikai Tanszék CPP2 / 1 Az öröklődés s fogalma 1. Egy osztály deklarálható valamely más osztály(ok) leszármazottjaként. Az deklaráció

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

Programozás I. Első ZH segédlet

Programozás I. Első ZH segédlet Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett

Részletesebben

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási

Részletesebben

A C++ öröklés. (Előfeltétel: 12. tétel ismerete)

A C++ öröklés. (Előfeltétel: 12. tétel ismerete) Az öröklés fogalma: A C++ öröklés (Előfeltétel: 12. tétel ismerete) olyan alapvető programozási technika, amely lehetővé teszi, hogy a már meglévő osztályainkból újakat tudunk származtatni, valamint az

Részletesebben

Bevezetés a Java programozási nyelvbe

Bevezetés a Java programozási nyelvbe Bevezetés a Java programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a Java programozási nyelvbe JAVABEV / 1 Egy kis történelem 1. 1990-es évek eleje: a SUN belső project-je

Részletesebben

Bevezetés a Java programozási nyelvbe

Bevezetés a Java programozási nyelvbe Bevezetés a Java programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a Java programozási nyelvbe JAVABEV / 1 Egy kis történelem 1. 1990-es évek eleje: a SUN belső project-je

Részletesebben

Java programozási nyelv 5. rész Osztályok III.

Java programozási nyelv 5. rész Osztályok III. Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok

Részletesebben

Objektumorientált programozás C# nyelven III.

Objektumorientált programozás C# nyelven III. Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA PROGRAMOZÁS 2.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,

Részletesebben

Előzmények 2011.10.23.

Előzmények 2011.10.23. Előzmények Dr. Mileff Péter A 80-as évek közepétől a szoftverek komplexitása egyre növekszik. Megjelentek az OO nyelvek. Az OO fejlesztési módszerek a rendszer különböző nézőpontú modelljeit készítik el.

Részletesebben

Abstract osztályok és interface-ek. 7-dik gyakorlat

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

C# gyorstalpaló. Készítette: Major Péter

C# gyorstalpaló. Készítette: Major Péter C# gyorstalpaló Készítette: Major Péter Adattípusok Logikai változó Egész szám (*: előjel nélküli) Lebegőponto s szám Típus Típusnév másképpen (egyenértékű) Helyigény (bit) Példa bool Boolean 8 (!) true,

Részletesebben

117. AA Megoldó Alfréd AA 117.

117. AA Megoldó Alfréd AA 117. Programozás alapjai 2. (inf.) pót-pótzárthelyi 2011.05.26. gyak. hiányzás: kzhpont: MEG123 IB.028/117. NZH:0 PZH:n Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,

Részletesebben

A Jáva programozási nyelv rejtelmei

A Jáva programozási nyelv rejtelmei Page 1 of 20 A Jáva programozási nyelv rejtelmei Tartalomjegyzék: Az alapok Egy példaprogram A program szerkezete Változók és értékek Megjegyzések a programban A fôprogram Vezérlési szerkezetek Kivételkezelés

Részletesebben

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 5. gyakorlat 1 Objektumorientáltság Egységbezárás és információ elrejtése (absztrakt adattípus) Adatok és rajtuk végzett műveletek egységbezárása (osztályok írása, múlt hét) Öröklődés Polimorfizmus

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64

Részletesebben

Programozás II. labor

Programozás II. labor Programozás II. labor 1. rész Programozási tételek Öröklődés Interfészek Eseménykezelés Kivételkezelés Visszalépéses keresés Programozás II. Programozási tételek OOP alapok ismétlése Öröklődés Öröklődés

Részletesebben

A Java nyelv. Bevezetés, alapok Elek Tibor

A Java nyelv. Bevezetés, alapok Elek Tibor A Java nyelv Bevezetés, alapok Elek Tibor A Java nyelv jellemzıi Interpreteres Forrás file fordítás Bytekódú file-ok (class fileok, nem gépikód, nem futtatható, egy új forrásnyelv) Interpreter: betölti,

Részletesebben

Bevezetés a C++ programozásba

Bevezetés a C++ programozásba Bevezetés a C++ programozásba A program fogalma: A program nem más, mint számítógép által végrehajtható utasítások sorozata. A számítógépes programokat különféle programnyelveken írhatjuk. Ilyen nyelvek

Részletesebben

Szervlet-JSP együttműködés

Szervlet-JSP együttműködés Java programozási nyelv 2007-2008/ősz 10. óra Szervlet-JSP együttműködés Kérés továbbítás technikái legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Szervlet-JSP együttműködés Témakörök Osztálykönyvtár

Részletesebben

C# osztályok. Krizsán Zoltán

C# osztályok. Krizsán Zoltán C# osztályok Krizsán Zoltán Fogalma Önálló hatáskőrrel rendelkező, absztrakt adattípus, amely több, különböző elemet tartalmazhat. Minden esetben a heap-en jön létre! A programozó hozza létre, de a GC

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 1. ELŐADÁS - C# ÁTTEKINTÉS - 1 2015 Bánsághi Anna 1 of 84 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 84

Részletesebben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

A NYELV NEVE. Kezdetben: Oak. James Gosling. Java: Sun Mycrosystems védjegyev

A NYELV NEVE. Kezdetben: Oak. James Gosling. Java: Sun Mycrosystems védjegyev JAVA A NYELV NEVE Kezdetben: Oak James Gosling Java: Sun Mycrosystems védjegyev EGY KIS FÖLDRAJZF Indonézia egyik szigete Jakarta: az ország g fővárosaf Föld 13. legnagyobb szigete Mit egyszerű csinálni?

Részletesebben

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Programozás I. 3. előadás Tömbök a C#-ban Metódusok C#-ban Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Szoftvertechnológia

Részletesebben

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)

Részletesebben

Programozási Paradigmák és Technikák

Programozási Paradigmák és Technikák Programozási Paradigmák és Technikák Öröklődés Interfészek Kivételkezelés Rekurzió Eseménykezelés Programozási Paradigmák és Technikák Öröklődés Öröklődés a C# nyelvben Öröklődés feladatok Gyakorló feladatok

Részletesebben

4. Programozási nyelvek osztályozása. Amatőr és professzionális

4. Programozási nyelvek osztályozása. Amatőr és professzionális 4. Programozási nyelvek osztályozása. Amatőr és professzionális programozási nyelvek. Számítási modellek (Neumann-elvű, automataelvű, funkcionális, logikai). Programozási nyelvekkel kapcsolatos fogalmak

Részletesebben

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere 2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda

Részletesebben

Fizika InfoRmatika Kémia Alapok. Az Erdélyi Magyar Műszaki Tudományos Társaság kiadványa. Megjelenik kéthavonta (tanévenként 6 szám)

Fizika InfoRmatika Kémia Alapok. Az Erdélyi Magyar Műszaki Tudományos Társaság kiadványa. Megjelenik kéthavonta (tanévenként 6 szám) Fizika InfoRmatika Kémia Alapok Az Erdélyi Magyar Műszaki Tudományos Társaság kiadványa Megjelenik kéthavonta (tanévenként 6 szám) 8. évfolyam 2. szám Felelős kiadó ÉQLY JÁNOS Főszerkesztők DR. ZSAKÓ JÁNOS

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia A C programozási nyelv (Típusok és operátorok) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 szeptember

Részletesebben

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18 C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi

Részletesebben

Java programozási nyelv 6. rész Java a gyakorlatban

Java programozási nyelv 6. rész Java a gyakorlatban Java programozási nyelv 6. rész Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október A Java programozási nyelv Soós Sándor 1/16 Tartalomjegyzék

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás. Emlékeztető: a fordítás lépései Forrás-kezelő (source handler) Szimbólumtábla-kezelés Fordítóprogramok előadás (A, C, T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus elemző

Részletesebben

Java programozási nyelv

Java programozási nyelv Szoftvertechnológia sáv Java programozási nyelv Dirk Louis-Peter Müller: Java (Belépés az internet világába) Panem kiadó, Budapest, 2002. Webvilág sorozat Készítette: Gregorics Tibor Vázlatos áttekintés

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 1. Előadás Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu A tantárgyi

Részletesebben

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek

Részletesebben

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség A JAVA TECHNOLÓGIA LÉNYEGE Programozás III Többlépcsős fordítás JAVA ALAPOK Platformfüggetlenség A JAVA TECHNOLÓGIA LÉNYEGE JAVA PLATFORM Két komponense: Java Virtual Machine (JVM) Java Application Programming

Részletesebben

Elôszó a magyar kiadáshoz A Kiadó Elôszó

Elôszó a magyar kiadáshoz A Kiadó Elôszó Elôszó a magyar kiadáshoz A C programnyelvet eredetileg a Bell Laboratóriumban az UNIX operációs rendszerhez, az alatt fejlesztették ki PDP-11_ számítógépen. A kifejlesztése óta eltelt évek során bebizonyosodott,

Részletesebben

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Szimuláljuk különféle élőlények túlélési versenyét. A lények egy pályán haladnak végig, ahol váltakozó viszonyok vannak. Egy lénynek

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv A nyelv alapjai Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/34 Java információ források

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:

Részletesebben

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

A meteorológia az időjárás tudománya

A meteorológia az időjárás tudománya Ismerd meg! A meteorológia az időjárás tudománya A meteorológia a légkörben végbemenő folyamatok, jelenségek vizsgálatával foglalkozó tudomány, amelyen belül különös hangsúlyt fektetnek az időjárási és

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char

Részletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

Programozás C++ -ban 2007/4

Programozás C++ -ban 2007/4 Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos

Részletesebben

Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal.

Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal. Objektumorientált programozás Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal. Ez a nem művészi értékű, de idillikus kép azt a pillanatot mutatja,

Részletesebben

RIA Rich Internet Application

RIA Rich Internet Application Áttekintés RIA Rich Internet Application Komplex felhasználói felülettel rendelkező web-alkalmazások Bevezető Flex áttekintés ActionScript Felhasználói felület tervezése Események Szerver oldali szolgáltatásokkal

Részletesebben

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat:

Karbantartás. Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat: Karbantartás Az ESZR Karbantartás menüjébentudjuk elvégezni az alábbiakat: Jelszó módosítása: A felhasználói jelszavunkat módosíthatjuk ebben a menüpontban, a régi jelszavunk megadása után. Általánosan

Részletesebben

4. Öröklődés. Programozás II

4. Öröklődés. Programozás II 4. Öröklődés Programozás II Mielőtt belevágunk Egy Tárgy típusú objektumokat tároló tömb i. elemében tároljunk el egy új tárgyat Rossz módszer: tomb[i].setnev( uj.getnev() ); tomb[i].setertek( uj.getertek()

Részletesebben

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title; PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is

Részletesebben

A C# PROGRAMOZÁSI NYELV

A C# PROGRAMOZÁSI NYELV A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 11. előadás 2014.05.12. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Adatszerkezetek

Részletesebben

A SZOFTVERTECHNOLÓGIA ALAPJAI

A SZOFTVERTECHNOLÓGIA ALAPJAI A SZOFTVERTECHNOLÓGIA ALAPJAI Objektumorientált tervezés 8.előadás PPKE-ITK Tartalom 8.1 Objektumok és objektumosztályok 8.2 Objektumorientált tervezési folyamat 8.2.1 Rendszerkörnyezet, használati esetek

Részletesebben

Alap számológép alkalmazás

Alap számológép alkalmazás Első Androidos programom - Egyszerű műveleteket használó számológép elkészítése Android Developer Tools (ADT) segítségével Alap számológép alkalmazás Android programfejlesztés Tompos Szabolcs Tartalom

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke

Részletesebben

Java programozás alapjai A Java nyelv C++ szintaktikára épít, számos különbséggel Hello, World (alkalmazás, parancssorból indítható): A HelloWorldApp.java fájl: A főosztály: neve = fájlnév, van benne main

Részletesebben

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010 Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 Előadás tematika 1. Pascal ismétlés, kiegészítések 2. Objektum orientált programozás (OOP) 3. Delphi környezet 4. Komponensek bemutatása

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben