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

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

C++ programozási nyelv Gyakorlat hét
Programozás III KOLLEKCIÓK 2..
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)
Gyakori hibák C# programozásban
Hibakezelés és Tesztelés a Visual Studio.NET-ben
Ö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.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
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.
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.
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.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
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.
Kivételkezelés a C++ nyelvben Bevezetés
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:
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
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.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
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ú,
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
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. 7. gyakorlat.
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Programozás III KOLLEKCIÓK.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Programozás III KIVÉTEL.
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.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. 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. 4. gyakorlat.
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Kivételek kezelése, ellenőrzött adatbevitel Czigléczky Gábor 2009.
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.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. é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 Standard IO Standard input: System.in Standard output: System.out System.out.println(”Szöveg”); Standard error: System.err System.err.println(”Szöveg”); System.out és a System.err közvetlenül használhatóak 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 Beolvasás billentyűzetről java.util.Scanner Különböző típusokat olvashatunk be segítségével –Alapértelmezett bemenetről –Fájlból –Akár Stringből is Scanner sc = new Scanner(System.in); int i = sc.nextInt();//egész beolvasása String str = sc.next();//String beolvasása 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 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 (exception): egy olyan probléma, amely meggátolja a futást egy adott metódusban vagy 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ábor4

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor5Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Kivételkezelés Kivétel elkapása: –ha valahol kivétel dobódhat, akkor feltételezzük, hogy ez valahol el lesz kapva Védett régió: –a kód azon része, amely kivételeket hozhat létre, ezt try blokkal jelezzük. try { … } –hibakezelő kód követi: catch(Exception e){ … } 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 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ábor6

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor7Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Try-catch-finally Egy try blokkhoz több catch blokk is tartozhat –ezeket sorban megvizsgálja; mindegyik catch blokk adott típusú kivételt tud elkapni –a legelső catch el is kapja, amelyik képes rá át kell gondolni a catch blokkok sorrendjét catch(Exception nev) –általános kivételelkapó, ritkán használjuk! –minden kivételt elkap 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 Try-catch-finally A try-catch blokkok után még készíthetünk egy finally blokkot is 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. –Használata nem kötelező de hasznos! Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor8

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor9Szegedi 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ábor9

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor10Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Exception osztály Minden kivétel az Exception osztályból származnak néhány példa: –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ábor10

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor11Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor RuntimeException azon kivételek őse, melyeket 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ábor11

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor12Szegedi 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: kivételek, eddig ezekrő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ábor12

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor13Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor throws kulcsszó Ha egy metódus kivételt dobhat, akkor azt a throws kulcsszóval jelezhetjük Jelentése: a metódusban az adott kivétel nincs lekezelve, ezzel a hívó kódrészlet foglalkozik Több kivételt is fel lehet sorolni Sokszor kötelező (ha nincs, fordítási hiba) public void fajlbolOlvasas() throws IOException { … } 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 Saját kivétel létrehozása származtatni kell valamilyen létező kivételosztályból (pl.: Exception osztályból) public class SajatKivetel extends Exception { public SajatKivetel(String message){ super(message); } 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 throw kulcsszó Nem ugyanaz, mint a throws!!!! 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 blokkba kell tennünk a kódrészt –ha egyiket se tesszük, fordítási hibát fogunk kapni 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 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 void foo() 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ábor16 Példaprogram: SajatKivetel.java, Hiba.java

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor17Szegedi 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ábor17

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor18Szegedi 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ábor18

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor19Szegedi 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ábor19

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor20Szegedi 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ábor20 Példaprogram: Lista.java, Lmain.java

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor21Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Feladat Közösen: hozzunk létre egy láncolt lista tárolására alkalmas osztályt. Tároljuk az aktuális elem értékét (legyen egész), valamint mutassunk a következő elemre. Valósítsuk meg a beszúró és törlő műveleteket (lista elejére beszúr, lista elejéről töröl) toString() metódusban valósítsuk meg a lista elemenkénti kiíratását. Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor21

Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor22Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Önálló feladat Hozz létre egy fix méretű vermet egész számok tárolására (tömb segítségével) és valósítsd meg a push/pop műveleteket. Írj egy futtatható osztályt, mely a Main metódusban „push” vagy „pop” utasításokat vár a konzolról. Ha pop utasítást kap, hajtsa végre azt, és írja ki a konzolra a kivett elemet. Push utasítás esetén egy egész számnak kell következnie, ezt tegye be a verembe. Írj meg egy kivételosztályt, amit a fenti függvények (push/pop) akkor dobnak, ha a verem megtelt vagy üres. Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor22