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

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

Programozási nyelvek Java

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

Programozási nyelvek Java

Java IX. telkezelés a Java-ban

é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

Java IX. telkezelés a Java-ban

Programozási nyelvek II.: JAVA

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

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?

7. K: JAVA alapok Konzultáció

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

Segédanyag: Java alkalmazások gyakorlat

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

Java Programozás 1. Gy: Java alapok. Ismétlés ++

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

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

Programozási nyelvek Java

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

Programozás I. Első ZH segédlet

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

Globális operátor overloading

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

Segédanyag: Java alkalmazások gyakorlat

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

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

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

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

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

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

Java programozási nyelv

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

Osztályok. 4. gyakorlat

Objektumorientált programozás C# nyelven

BME MOGI Gépészeti informatika 4.

OOP: Java 8.Gy: Gyakorlás

Segédanyag: Java alkalmazások gyakorlat

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

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

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

A függvények névvel rendelkező utasításcsoportok, melyeknek információkat adhatunk át, és van egy visszatérési értékük.

JAVA PROGRAMOZÁS 2.ELŐADÁS

OOP: Java 4.Gy: Java osztályok

Programozási nyelvek Java

BME MOGI Gépészeti informatika 8.

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

Java és web programozás

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

Programozási nyelvek Java

Szoftvertechnológia alapjai Java előadások

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

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

Objektumorientált Programozás VI.

Java gyakorlat feladatai e s megolda sai ( )

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

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

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

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

Pénzügyi algoritmusok

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

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

Objektumorientált programozás C# nyelven

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

Bevezetés a Java programozási nyelvbe

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

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

OOP: Java 7.Gy: Öröklődés, referenciák

Programozás II. labor

A Jáva programozási nyelv rejtelmei

OOP: Java 1.Gy: Java alapok

Informatika terméktervezőknek

Kalapácsvetés 2016 szöveges

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

Java Programozás 11. Ea: MVC modell

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

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

Bevezetés a Java programozási nyelvbe

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

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

Java VII. Polimorfizmus a Java nyelvben

Objektumorientált programozás C# nyelven III.

Alap számológép alkalmazás

Programozási nyelvek II.: JAVA

OOP #14 (referencia-elv)

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

Java VII. Polimorfizmus a Java nyelvben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Programozási alapismeretek 4.

Szoftvertechnológia alapjai Java előadások

Web-technológia PHP-vel

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

OOP és UML Áttekintés

Programozási technológia

Programozás C és C++ -ban

Objektumorientált programozás C# nyelven III.

Átírás:

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: modularizáció, névütközések feloldása, hozzáférés szabályozás Használat 1: 1. A java.lang csomagban lévő osztályok minden további nélkül használhatóak 2. Azt, hogy egy adott osztály amit használni akarunk melyik csomagban van, az import kulcsszó után kell megadni az osztály deklaráció elött. Pl.: import java.util.scanner vagy import java.util.* 3. Hivatkozás fully qualified classname-el: java.util.scanner sc =... Használat 2: package hello; /** * Hello world program. */ public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); javac hello/helloworld.java java hello.helloworld JAVA file felépítés (idáig) // package deklaráció: opcionális package package.nev; // import deklarációk: opcionális import java.util.scanner; 1

// public nélkül, akárhány lehet belole (akár egy sem) class ClassNev{ {metodusok+ // public deklarációval, pontosan egy darabnak kell lennie, // a filenévnek az osztály nevének kell lennie public class ClassNev{ {metodusok+ Metódusok: függvények, eljárások Általános prototípus: <módosítószavak> <visszatérési érték> <név>( <paraméterek listája> ) [ throws <kivétel lista> ] { <utasítás1>; <utasítás2>; Paraméter átadás érték szerint történik, az átadott paraméter a hívott metódus lokális változójaként viselkedik. A hívott metódus akár meg is változtathatja annak értékét, de a változások nem jutnak vissza a hívás helyére. Fontos: Objektumoknál referencia adódik át érték szerint. Módosítószavak: Láthatóság: public, protected, private. Ha nem definiált, akkor ún. package-private láthatóság. Lehet abstract: ekkor nincs implementáció, leszármazottban kötelezően felüldefiniálandó Lehet final: felüldefiniálhatóság letiltására Lehet static: osztály szintű függvény (Fontos: static kontextusból csak static módosítóval ellátott hivatkozás szerepelhet) Visszatérési érték szerinti csoportosítás: void: eljárás Minden egyéb: függvény Szignatúra: a függvény paramétereinek száma és típusa Overloading: lehet két azonos nevű metódus, ha eltérő a szignaturája 2

Kivételkezelés Figure 1: Exception hierarhia Általános forma: try { // Kritikus utasitasok catch (Exception1 e1) { catch (Exception2 e2) { finally { Alapvetően három típusú kivétel: 1. Felügyelt kivételek: definiálni kell őket a függvényben, és ha definiáltak, le is kell őket kezelni (ősosztály: java.lang.exception, pl. java.lang.classnotfoundexception, java.io.ioexception) 2. Nem felügyelt kivételek: nem kötelező sem difiniálni, sem lekezelni őket (ősosztály: java.lang.runtimeexception, pl. ArrayIndexOutOfBoundsException, NumberFormatException, DivisionByZeroException) 3. Léteznek még Error-ok, ezek a Throwable leszármazottai. Kritikus esetben fordulnak elő, a legtöbb esetben a lekezelésük is felesleges (pl. OutOfMemoryError, StackOverflowError) 3

Egyszerű kivételkezelés (ismétlés) public static void main(string[] args) { try { int res = Integer.parseInt(args[0]); // catch (NumberFormatException nfe) { System.err.println("Hibas input: " + args[0]); nfe.printstacktrace(); Összetett példa // Egyszerubb forma, ha nem akartok uzeneteket //class ZeroParameterException extends Exception { class ZeroParameterException extends Exception { public ZeroParameterException() { super(); public ZeroParameterException(final String msg) { super(msg); public class ExExample { static double divide(int a, int b) throws ZeroParameterException { if (0 == b) { throw new ZeroParameterException("b erteke nem lehet 0!"); return (double) a / b; public static void main(string[] args) { try { double res = divide(1, 0); catch (ZeroParameterException e) { System.err.println(e.getMessage()); catch (Exception e) { System.err.println(e.getMessage()); finally { 4

System.err.println("vege"); Részletesen exceptions/ http://download.oracle.com/javase/tutorial/essential/ File Input // A következo két import helyett lehet: // import java.io.* import java.io.file; import java.io.filenotfoundexception; import java.util.scanner; public class FileInput{ public static void main(string[] args) throws FileNotFoundException { File f = new File("filename"); Scanner sc = new Scanner(f); +/- Feladatok Készítsünk egy egyszerű l33t5p34k (leetspeak) generátort! A program 1 parancssori argumentumot kapjon: egy input fájl elérési utat. A program olvassa be az inputot fájlt, és minden szón végezze el a következő módosításokat, majd írja ki a képernyőre a módosított szöveget: Minden 2. karakter esetén a kisbetűből csináljon nagyot, a nagybetűből kicsit! a -> @ e -> 3 i -> 1 o -> 0 5

u -> v f -> ph s -> $ g -> 9 y -> j t -> +! -> 1 Ha az utolsó karakter: s -> z ck -> x Legyen teljes hibakezelés (fájl nem található, nem kap fájlnevet a parancssorban, stb.)! A megoldás legyen a LeetSpeak osztályban a leet csomagban. Gyakorló feladatok 1. Feladat Készítsünk egy új osztályt PerfectNumbersChecker névvel. Az osztály kerüljön a perfect csomagba. Írjunk az osztályban egy függvényt isperfectnumber névvel, ami elvégzi az első órai tökéletes szám feladatot. Ezután hívjuk meg ezt a függvényt a main fv-ből, majd írassuk ki az általa visszaadott eredményt. Amennyiben a függvény paramétere <= 1, akkor a függvény dobjon egy kivételt a következő üzenettel: Az intervallum felső határa nagyobb kell, hogy legyen, mint 1!. 2. Feladat Készítsetek egy függvényt, amely megadja egy másodfokú egyenlet gyökeit! A függvény definíciója legyen a következő: private static double[] sqroots(double a, double b, double c) { // A függvény dobjon nem ellenőrzött és ellenőrzött kivételeket is (pl. IllegalArgumentException és egy saját), ha a == 0, vagy a diszkrimináns negatív! A függvény által dobott kivételeket kezeld is le a main() függvényben! 6

3. Feladat Készítsünk egy Sudoku ellenörző programot! A program inputja egy fájl, amelynek soraiban pontosan 81 karakter található, és egy-egy Sudoku sorfolytonos ábrázolását jelenti. A program írja ki a képernyőre az érvényes kitöltést tartalmazó sorokat! Példa input fájl sorok: 123456789123456789123456789123456789123456789123456789123456789123456789123456789 123456789234567891345678912456789123567891234678912345891234567891234567912345678 Sudoku: Egy 9 x 9 négyzetből álló nagy négyzetben kell elhelyezni a számokat 1-től 9-ig úgy, hogy egy tetszőleges sorban, oszlopban és háromszor hármas négyzetben mindegyik szám csupán egyszer forduljon elő. http://hu.wikipedia.org/wiki/sz%c3%badoku 7