UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.

Slides:



Advertisements
Hasonló előadás
AZ OOP ALAPJAI.
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)
Ö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. 7. Gyakorlat Operator overloading.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 8. Gyakorlat Operator overloading II.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
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.
Fejlett Programozási Technikák 2.
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.
Csomagok.
© 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:
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:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
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.
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.
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
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
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.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. Követelmények.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. 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.
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.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
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:

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Standard IO  Standard input: System.in  Standard output: System.out  Standard error: System.err  System.out és System.err közvetlenül használhatóak

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Beolvasás billentyűzetről  java.util.Scanner  Különböző típusokat olvashatunk egy adott forrásból (pl. alapértelmezett bemenetről) Scanner sc = new Scanner(System.in); int i = sc.nextInt(); //primitív típusok támogatva String str = sc.next(); //String beolvasása

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Kivételkezelés  A fordítás során nem derülhet ki minden hiba (IO műveletek, felhasználói interakciók, stb.)  Kivétel (exception): egy olyan probléma, amely meggátolja a futást egy adott metódusba, vagy blokkban  Pl. null referenciára hivatkozás  Kivétel keletkezésekor:  Az adott kódrész végrehajtása megáll, kivétel dobódik  A kivételkezelő mechanizmus megpróbál keresni egy megfelelő kivételkezelőt  Ha található, az lekezeli a hibát, a program futhat tovább. Különben a program teljes végrehajtása megállhat.

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Kivételkezelés  Kivétel elkapása:  Ha valahol kivétel dobódhat, az jó esetben máshol el is lesz kapva  Védett régió:  A kód azon része, mely kivételeket hozhat létre. try blokkal jelezhetjük  try { … }  Hibakezelő kód követi:  catch(Exception e) { … }

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Kivételkezelés  Pl: 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(); }

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Kivételkezelés  Egy try blokkhoz több catch blokk is tartozhat  Ezeknél jelezzük, hogy az adott blokk milyen típusú kivételt tud elkapni  catch (Exception e) – általános (bármely) kivételt elkapja, használata nem ajánlott!  try blokk végére finally blokkot is helyezhetünk. Ennek tartalma mindenképp lefut (akár volt hiba, akár nem).  Itt érdemes lezárni kapcsolatokat, nyitt fájlokat…  Nem kötelező a használata, de általában ajánlott

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Kivételkezelés try {... } catch (ArithmeticException ae) { … } catch (IOException ioe){ … } catch (Exception e){ … } finally { }

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Exception osztály  Minden kivétel az Exception osztályból származik  Pl:  ArithmeticException (pl. 0-val osztás)  ArrayIndexOutOfBoundsException (tömb indexelés)  IllegalArgumentException  IOException  NullPointerException  ClassNotFoundException

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS RuntimeException  Azon kivételek őse, melyeket a virtuális gép dobhat működés közben.  Az ebből származó kivételeket nem szokás elkapni. Ha ilyet kapunk, az jó eséllyel programozási hiba következménye.  NullPointerException  ArrayIndexOutOfBoundsException

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS RuntimeException  Azon kivételek őse, melyeket a virtuális gép dobhat működés közben.  Az ebből származó kivételeket nem szokás elkapni. Ha ilyet kapunk, az jó eséllyel programozási hiba következménye.  NullPointerException  ArrayIndexOutOfBoundsException

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Throwable  Object osztályból származik (mint minden…)  Két leszármazottja:  Exception: eddig ezekről volt szó (kivételek)  Error: fordítási időbeni és rendszerhibák. Ezeket általában nem kell lekezelni (fordítási hibát pl. a program kijavításával kezelhetjük le, nem kivételkezeléssel).

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Throws  Ha egy metódus kivételt dobhat, throws kulcsszóval jelezhetjük ezt.  Jelentése: az adott kivétel a metódusban nincs lekezelve, a metódust hívó programrésznek kell vele foglalkoznia.  Több kivételt is fel lehet sorolni  Sokszor kötelező (fordítási hibát okozhat, ha nem írjuk ki) public void fajlbolOlvasas() throws IOException { … }

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Sajtát típusú kivétel  Származtatni kell egy kivételből. Bármely (általában az Exception) osztályból származhat. public class SajatKivetel extends Exception { public SajatKivetel(String message){ super(message); }

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Throw  Nem ugyanaz, mint a throws!!!  Kivételt dobhatunk vele „manuálisan”  Pl. if (x < 0) { throw new SajatKivetel(„X negatív szám”); }  Ha throw segítségével kivételt dobhat a metódusunk, azt vagy kötelezően jelezni kell a throws kulcsszóval…  Vagy try-catch blokkba tehetjük az adott kódrészletet (ez ritkább eset)  Különben fordítási hiba

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS throw vs. throws  Throws: metódus fejlécében jelezzük, milyen hibákat dobhat.  Throw: a kódrészletben valahol konkrétan dobunk egy kivételt. 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); } } Példaprogram pubban: SajatKivetel.java, Hiba.java

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Belső osztályok  Osztályon vagy metóduson belül is létrehozhatunk osztályokat.  Célja, hogy az egyedileg használt algoritmusokat elrejtsük más osztályok elől.  A belső osztályból elérhetőek a külső osztály elemei, kivéve ha a belső osztály static!  Egy külső osztály láthatósága csak public vagy package private lehet. A belső osztályé viszont bármi, sőt, akár statikus is lehet!  Nem kell külön fordítani a belső osztályokat.

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Belső osztályok  Osztályon belüli osztály: public class Kulso {.. private class Belso{ … } … }

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Belső osztályok  Metóduson belüli osztály: public void ezEgyMetodus() {.. private class Belso{ … } … }

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Belső osztály példányosítása  A tartalmazó osztályon belül ugyanúgy, mint eddig.  A tartalmazón kívül (ha elérhető az osztály láthatóság alapján): Kulso.Belso peldany = new Kulso.Belso();  Ha nem statikus a belső osztály, objektum példányon keresztül hozható létre: Kulso peldanyKulso = new Kulso(); Kulso.Belso peldanyBelso = peldanyKulso.new Belso();

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Feladat (közösen)  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 (egyelőre csak egész számokat, jövő órán kiegészítjük generikus megoldással), 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.

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Feladat (plusz pontért)  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. D Í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.