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

Hasonló dokumentumok
Java programozási nyelv 9. rész Kivételkezelés

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

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

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 jelzése

7. K: JAVA alapok Konzultáció

Objektumorientált programozás C# nyelven

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

Osztályok. 4. gyakorlat

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

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?

Globális operátor overloading

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

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

Objektumorientált programozás C# nyelven

és az instanceof operátor

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

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Java és web programozás

Programozási nyelvek Java

Pénzügyi algoritmusok

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

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

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

Programozási technológia

Objektumorientált programozás C# nyelven III.

Kivételkezelés, naplózás. Exception handling, logging

Osztályszintű elérés, kivételkezelés, fájlkezelés

OOP és UML Áttekintés

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

JAVA PROGRAMOZÁS 2.ELŐADÁS

Kivételkezelés a C++ nyelvben Bevezetés

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozás I. Második ZH segédlet

Java és web programozás

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

Programozási nyelvek II.: JAVA

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

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

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Objektumorientált programozás C# nyelven III.

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

Kivételek, kivételkezelés a C++ nyelvben

JAVA PROGRAMOZÁS 3.ELŐADÁS

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

Java és web programozás

C++ programozási nyelv

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Segédanyag: Java alkalmazások gyakorlat

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

Programozás I. Második ZH segédlet

Java és web programozás

Programozási alapismeretek 4.

Segédanyag: Java alkalmazások gyakorlat

Java Programozás 5. Ea: OOP alapok. Abstract Javaságok

S ha kettészelik is: balfelöl belőle Valamivel mindig - Valamivel mindiq több marad. (Nyugat )

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Visual C++ 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.

Informatika terméktervezőknek

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

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

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

OOP #14 (referencia-elv)

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

Programozási nyelvek Java

Szoftvertechnológia alapjai Java előadások

Segédanyag: Java alkalmazások gyakorlat

C++ programozási nyelv

Programozási nyelvek II.: JAVA

Programozási nyelvek Java

Öröklés és Polimorfizmus

Bánsághi Anna

Gábor Dénes Főiskola (IAI) Programozási technológia (Java) - I. / 1

Programozási nyelvek Java

Programozási nyelvek (ADA)

Osztálytervezés és implementációs ajánlások

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

Osztálytervezés és implementációs ajánlások

Java programozási nyelv

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

Programozás módszertan p.1/46

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Imperatív programozás

OOP: Java 4.Gy: Java osztályok

Objektumorientált programozás C# nyelven

Java osztálykönyvtár és használata

Objektumok inicializálása

Adatbázisok webalkalmazásokban

Web-technológia PHP-vel

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

Concurrency in Swing

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

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

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

Interfészek. PPT 2007/2008 tavasz.

Sikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

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

JavaServer Pages (JSP) (folytatás)

Átírás:

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 adott vissza, amit a hívó félnek kellett (volna) ellenőrizni Java-ban jobb megoldás: nyelvi szinten beépítették a hibakezelést Jobban elkülönül az igazi kód a hibakezeléstől

Kivételkezelés Tegyük fel, hogy valamilyen objektumon szeretnénk műveletet végrehajtani (pl. meghívni egy metódusát). Ha valami miatt a referencia nem mutat objektumra (null az értéke), akkor a programunk elszáll. Ilyen esetben érdemes kivételt dobni, amit majd valahol el is kell kapni! Kivétel dobása a throw kulcsszóval történik: if (p == null) throw new NullPointerException();

Kivételkezelés Kivétel dobásakor egy kivétel objektum jön létre a heap-en, a program végrehajtása megáll (az esetleges további utasítások végrehajtására nem kerül sor), majd a kivételkezelő mechanizmus veszi át az irányítást és keres egy megfelelő kivételkezelőt, amely lekezeli a hibát.

Kivételkezelés Védett régió a kód olyan része, amelyben kivétel keletkezhet (jelölése try kulcsszóval) Kivétel elkapása a catch kulcsszóval, megadva utána a kivétel típusát és a hibakezelő kódot Mivel a védett régióban több különböző kivétel dobására is sor kerülhet, több catch blokkot is meg lehet adni a védett régió után Az első alkalmas fogja lekezelni a kivételt Előírhatunk olyan kódot is, ami mindig lefut, akár volt kivétel a védett régióban, akár nem - finally

Kivételkezelés

Kivételkezelés Java-ban a throws kulcsszóval meg kell adni, hogy egy metódus milyen kivétel(eke)t dobhat amennyiben a kivételeket nem kezeljük le a metódus törzsében try-catch blokkban Ez része a metódus-deklarációnak void f() throws NullPointerException, ClassCastException { // }

Saját kivétel írása Származtatni kell az Exception osztályból Két konstruktora van (a default és ami egy String-et vár) Utóbbinál a String paramétert fel lehet használni egy üzenet átadására, amiből később kideríthetjük a hiba okát public class SajatKivetel extends Exception { public SajatKivetel(String uzenet) { super(uzenet); } } Üzenet lekérdezése a kivétel-objektum getmessage() metódusával lehetséges» SajatKivetel.java

Gyakoribb kivételek ArithmeticException Aritmetikai műveletek során fellépő hiba (pl. nullával való osztás) ArrayIndexOutOfBoundsException Tömb olyan indexére próbáltunk hibatkozni, ami nincs (negatív index vagy >= tomb.length) ClassCastException Objektumot olyan leszármazott típusra próbáltunk kényszeríteni, amelynek valójában nem példánya IndexOutOfBoundsException Olyan indexre próbáltunk hivatkozni, ami nincs (tömb, String vagy Vector objektumon) NullPointerException Objektum helyett null-ra mutatott egy referencia

RuntimeException Olyan kivétel, melyet nem kell megadni a kivétel specifikációban (és nem kötelező try blokkba tenni sem) Azon kivételek őse, melyeket a virtuális gép dobhat normál működés közben Leszármazottai pl.: ClassCastException, IndexOutOfBoundsException, NullPointerException, stb.

» Hiba.java Kivételkezelés példa

Beágyazott osztályok(nestedclass) Más osztályon belül definiált osztályok Miért? Logikailag nagyon szorosan összetartozó osztályok csoportosítása Ha egy osztály csak egyetlen másik osztály számára hasznos, így a két osztályt szorosan együtt tarthatjuk Magasabb szintű egységbezárás megvalósítása Ha B osztálynak el kell érnie A osztály adattagjait (amelyek egyébként privát láthatóságúak kellene hogy legyenek), így B-t is elrejtjük a külvilág elől Olvashatóbb, karbantarthatóbb kód Ha a kisebb osztályokat beágyazzuk, a kód közelebb kerül ahhoz a helyhez, ahol felhasználjuk

Beágyazott osztályok típusai A beágyazott osztályok lehetnek statikusak (ezeket egyszerűen statikus beágyazott osztályoknak nevezzük) és lehetnek nem statikusak (ezek neve belső osztályok) A belső osztályok elérik a körülvevő osztály adattagjait és metódusait, a statikus beágyazott osztályok viszont hasonlóan a statikus metódusokhoz nem érik el ezeket

Beágyazott osztályok A beágyazott osztályoknak ugyanúgy megadhatjuk a láthatóságát, mint bármi másnak private, package private, protected, public A beágyazott osztályokból keletkező.class fájl neve mindig a következő formájú: KülsőOsztályNeve$BelsőOsztályNeve.class

Beágyazott osztályok példa» 08.PNG» Lista.java» LMain.java