1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat.

Slides:



Advertisements
Hasonló előadás
4. alkalom – Hálózat Kezelés
Advertisements

1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 5. gyakorlat Adatmodellezés III/IV – Funkcionális függés,
Osztály leszármaztatás
C++ programozási nyelv Gyakorlat hét
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 8. gyakorlat SQL alapok.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
Öröklődés 2..
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
© Kozsik Tamás Be- és kimenet kezelése.
Bevezetés a Java programozásba
Fájlkezelés, IO Kivételkezelés Belső osztályok
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A Java programozási nyelvSoós Sándor 1/28 Java programozási nyelv 10. rész – Input/output kezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 5. rész – Osztályok III.
A Java programozási nyelvSoós Sándor 1/24 Java programozási nyelv 9. rész – Kivételkezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
© Kozsik Tamás Kivételek A program végrehajtása során ritkán bekövetkező események Nem a „fő végrehajtási ág”; logikailag alacsonyabbrendű feladat.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Kivételkezelés.
Operációs rendszerek gyakorlat 9. Gyakorlat Vakulya Gergely.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
Programozási nyelvek összehasonlító elemzése
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
J.Zs.Cs.: Vizuális programozás (c) 2010 Vizuális programozás Fájl- és állományrendszer kezelés Névtér: System.IO.
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
A PHP 5 újdonságai Az OOP terén. Miről lesz szó? Osztályok kezelése – Új direktívák – Konstruktor – Destruktor Interfészek Kivételkezelés.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 10. gyakorlat SQL SELECT, Összekapcsolás, Nézettáblák.
Adatbázisok gyakorlat
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 8. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Java programozási nyelv Filekezelés
Java programozási nyelv Adatbekérés konzolról
Programozás III KIVÉTEL.
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Programozás I. 3. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 5. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 8. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Be- és kimenet kezelése
Hálózatkezelés Java-ban
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 7. gyakorlat

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor2Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Fájlkezelés, IO Adatfolyam alapú megközelítés (amíg van adat olvassuk/amíg van adat írunk, adatfolyam bezárása) InputStream/OutputStream: byte-orientált IO - 8 bites karakter –InputStream: adatforrás-folyam –OutputStream: adatnyelő-folyam Reader/Writer osztályok: karakter-orientált IO (unicode támogatással) - 16 bites karakter Konvertáló osztályok (pl.: InputStreamReader) Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor2

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor3Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Standard IO Standard input: System.in Standard output: System.out Standard error: System.err System.out és a System.err közvetlenül használhatók (ahogyan eddig is használtuk őket) Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor3

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor4Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Importálás IO-hoz A java.io csomag tartalmazza az íráshoz/olvasáshoz szükséges osztályokat import java.io.*; Amiket használunk belőle: (API) –BufferedReader –InputStreamReader –FileReader –FileWriter Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor4 Bővebben:

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor5Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Beolvasás billentyűzetről BufferedReader: szöveget olvas a karakter inputstreamről InputStreamReader: byte-okat olvas be, majd karakterré alakítja őket BufferedReader be = new BufferedReader(new InputStreamReader(System.in)); be.read(); be.readLine(); Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor5

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor6Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Beolvasás billentyűzetről read() - egyetlen karaktert olvas be, és a karakter ASCII kódjával tér vissza. –int c = be.read(); //q = 113 –char karakter = (char) c; //újra q lesz readLine() - egy sort olvas be, és a beolvasott sztringgel tér vissza –String beolvas = be.readLine(); Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor6

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor7Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Beolvasás fájlból BufferedReader FileReader: karakteres fájlokat olvas –konstruktorában egy File objektumot vár –File f = new File(”fajlnev.txt”); readLine() - egy sort olvas be a fájlból BufferedReader be = new BufferedReader(new FileReader(new File(”fajlnev.txt"))); String beolvas = be.readLine(); Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor7

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor8Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Kiíratás fájlba FileWriter: karakteres fájlokat ír, egy fájl objektumot vár, ahová ír –megadhatjuk, hogy csak hozzáfűzzön a jelenlegi fájlhoz FileWriter ki = new FileWriter(new File(”textfajl.txt”)); ki.write(”szöveg”); Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor8 Példaprogram: Fajlkezeles.java

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor9Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Megjegyzések Új File objektum létrehozásakor \ helyett \\- t kell használni Windows esetén Kiírásnál sortörés \n helyett operációs rendszer specifikusan: –String s = System.lineSeparator(); IO műveletek végén a streameket le kell zárni minden esetben a close() metódus segítségével Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor9 Példaprogram: Fajlkezeles.java

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor10Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Kivételkezelés nem derül ki minden hiba a fordítás folyamán (IO műveletek, felhasználói interakció, stb) kivétel: egy olyan probléma, amely meggátolja a futást egy adott metódusban/blokkban –pl.: null referencia Kivétel dobása: –a program végrehajtása megáll, kivétel dobódik –a kivételkezelő mechanizmus keres egy megfelelő kivételkezelőt –a kivételkezelő lekezeli a hibát, a program fut tovább Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor10

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor11Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Kivételkezelés kivétel elkapása: –ha valahol kivétel dobódik, akkor feltételezzük, hogy ez valahol el lesz kapva védett régió: –a kód azon része, mely kivételeket hozhat létre try { … } –hibakezelő kód követi: catch(Exception e){ … } Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor11

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor12Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Kivételkezelés try { //Veszélyes kódrészlet, amely kivételt dobhat int a = 500; int b = 0; int c = (a/b)*5; }catch(ArithmeticException ae) { //Elkaptuk a kivételt, mi történjen? ae.printStackTrace(); } Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor12

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor13Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Try-catch-finally Egy try blokkhoz több catch blokk is tartozhat ezeket sorba nézzük, mindegyiknél az adott típusú hibát tudjuk elkapni catch(Exception nev) - általános kivételelkapó a finally blokk tartalma mindenképpen lefut, függetlenül attól, hogy keletkezett-e hiba, vagy sem –Itt érdemes lezárni adatbázis kapcsolatot, megnyitott fájlokat, stb. –nem kötelező de hasznos! Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor13

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor14Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Try-catch-finally try {... }catch(ArithmeticException ae) { … }catch(IOException ioe){ … }catch(Exception e){ … } finally { } Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor14

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor15Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Exception osztály A kivételek mind az Exception osztályból származnak néhány példa kivételekre: –ArithmeticException (pl.: nullával való osztás) –ArrayIndexOutOfBoundsException (tömbindexelés) –IllegalArgumentException –IOException (IO műveletekkel kapcsolatos) –SQLException –NullPointerException –ClassNotFoundException Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor15

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor16Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor RuntimeException azon kivételek őse, amiket a virtuális gép dobhat a normál működése közben ezen osztályból származó kivételeket nem feltétlen kell elkapni, mert ha bekövetkeznek, akkor se tudunk sok mindent kezdeni velük (a program meghal) ilyen pl. a NullPointerException, ArrayIndexOutOfBoundsException Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor16

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor17Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Throwable osztály az Object osztályból származik ez az osztály is két leszármazottja van –Exception: eddig erről volt szó –Error: fordítási időbeni és rendszerhibák, ezekkel általában nem kell foglalkozni Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor17

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor18Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor throws kulcsszó Jelezhetjük, hogy egy adott metódus milyen kivételeket dobhat –de ezeket a kivételeket (itt) nem kapom el több kivételt is fel lehet sorolni sok esetben kötelező (ha nincs, fordítási hiba) public void fajlbolOlvasas() throws IOException { … } Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor18

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor19Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Saját kivétel létrehozása származtatni kell valamilyen létező kivételosztályból public class SajatKivetel extends Exception { public SajatKivetel(String message){ super(message); } Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor19

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor20Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Throw kulcsszó kivételt dobhatunk vele manuálisan –pl.: if( x < 0 ) { throw new SajatKivetel(”X negatív szám”); } Ha saját kivételt dobunk, akkor jeleznünk kell a throws kulcsszóval, vagy try-catch blokk segítségével –ha egyiket se tesszük, fordítási hibát fogunk kapni Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor20

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor21Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Throws vs. throw throws: –metódus fejlécében jelezzük, hogy az adott metódus milyen hibákat dobhat throw: –a kódban egy helyen konkrétan dobunk egy hibát public static void main(String args []) throws SajatKivetel { int a=3; int b=0; if (b==0){ throw new SajatKivetel("Nulla az osztó"); } else{ System.out.println((double)a/b); } } Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor21 Példaprogram: SajatKivetel.java, Hiba.java

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor22Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Belső osztályok osztályon vagy metóduson belüli osztályok cél: máshol nem használt algoritmusok teljes elrejtése a belső osztályból elérhetőek a „körülvevő” osztály elemei: –kivéve ha a belső osztály static egy (nem belső) osztály láthatósága csak public vagy package private lehet, a belső osztály viszont ezen felül lehet private, protected, sőt static is nem kell őket külön fordítani Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor22

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor23Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Belső osztályok Osztályon belüli belső osztály: public class Kulso {.. private class Belso{ … } … } Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor23

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor24Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Belső osztályok metóduson belüli belső osztály: public void csinalValamit() { … private class Belso() { … } … } Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor24

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor25Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Belső osztály példányosítása a tartalmazón belül ugyanúgy, mint eddig a tartalmazón kívülről: Kulso.Belso peldany = new Kulso.Belso(); csak nem statikus belső osztály esetén: Kulso peldanyKulso = new Kulso(); Kulso.Belso peldanyBelso = peldanyKulso.new Belso(); Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor25 Példaprogram: Lista.java, Lmain.java

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor26Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Feladatok Feladat (A megoldáshoz használjuk fel a PrivatEmber, Superman és SMMain osztályokat) –Készíts egy abstract Ember osztályt. –Vidd át a toString metódust az Ember osztályba, majd módosítsd úgy a programot, hogy abstract legyen a toString metódus. –A PrivateEmber osztály öröklődjön az Ember osztályból. –Probáld ki mit csinál az SMMain program, ha a toString metódust kikommentezed! –Definiálj egy Szuperkepessegek interfészt, amelynek van egy void kriptonittalSugároz() függvény osztályban, –Implementáld ezt az interfészt a PrivatEmber osztályban, ahol nem csinál semmit (esetleg kiír valamit a konzolra), de definiáld felül a Superman osztályban úgy, hogy az csökkentse a szupererőt. (Az SMMain futtatóosztály is érdemes módosítani, hogy hívja ezt a függvényt valamilyen módon.) –Helyezd csomagba a privatEmber és a Superman osztályokat. Az SMMain maradjon csomagon kívül.)