Programozási nyelvek Java

Hasonló dokumentumok
C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Programozási nyelvek II.: JAVA

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

Osztályok. 4. gyakorlat

Programozási nyelvek Java

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

Programozási nyelvek II.: JAVA

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?

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

Programozási nyelvek Java

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

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

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

Programozási nyelvek Java

é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

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

Globális operátor overloading

Szoftvertechnológia alapjai Java előadások

C#, OOP. Osztályok tervezése C#-ban

A Java és a C++ összehasonlítása

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

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

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

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

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

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

Objektumorientált programozás C# nyelven

Java és web programozás

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

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Java és web programozás

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

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

Objektumorientált programozás C# nyelven

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

Java IX. telkezelés a Java-ban

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

Java IX. telkezelés a Java-ban

Programozási technológia

Segédanyag: Java alkalmazások gyakorlat

Java programozási nyelv

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

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

Java és web programozás

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

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

Generikus Típusok, Kollekciók

7. K: JAVA alapok Konzultáció

Objektumorientált programozás C# nyelven III.

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

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

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

JAVA PROGRAMOZÁS 3.ELŐADÁS

A Jáva programozási nyelv rejtelmei

Informatika terméktervezőknek

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

Szoftvertechnológia alapjai Java előadások

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

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

Programozás I. Első ZH segédlet

Objektumorientált programozás Java-ban

ELTE SAP Excellence Center Oktatóanyag 1

Algoritmusok és adatszerkezetek II.

Programozási nyelvek II.: JAVA, 4. gyakorlat

Az új be- és kimenet könyvtár

C# osztályok. Krizsán Zoltán

Delegátumok C#-ban Krizsán Zoltán iit

Programozási nyelvek II.: JAVA, 4. gyakorlat

Programozási nyelvek Java

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

Programozási technológia

OOP: Java 8.Gy: Gyakorlás

3. Osztályok II. Programozás II

C++ programozási nyelv Konstruktorok-destruktorok

Segédanyag: Java alkalmazások gyakorlat


Programozási nyelvek II.: JAVA, 11. gyakorlat

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Programozási nyelvek Java

Adatbázisok webalkalmazásokban

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Bevezetés, a C++ osztályok. Pere László

ZH mintapélda. Feladat. Felület

Újdonságok a Java nyelvben

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

Alkalmazott modul: Programozás 9. előadás. Strukturált programozás: dinamikus adatszerkezetek

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

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

BME MOGI Gépészeti informatika 4.

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

I. 288.: Utcai WiFi térkép

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

BME MOGI Gépészeti informatika 8.

Web-technológia PHP-vel

Bánsághi Anna

Generikus osztályok, gyűjtemények és algoritmusok

Java Programozás 11. Ea: MVC modell

Átírás:

Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked Exceptions) Ellenörzött kivételek class Stack<T> { public void pop() throws StackException{ public class StackException extends Exception{ public class StackException extends Exception{ public StackException(String message){ super(message); public StackException(){

Előfeltétel ellenörzés: - nyilvános metódusok - IllegalArgumentException Belül: assert - ki-be kapcsolható Object osztály public class Object{ public String tostring(){ public int hashcode(){ public boolean equals(object other){ public Class getclass(){ public void finalize(){ protected Object clone() throws CloneNotSupportedException public class Date{ private int y,m,d; //public String tostring(){ return y+ / +m+ / +d; //Kevésbé hatékony, mivel minden egyes + művelet után új //String objektum keletkezik, ovábbá az összefűzésekből is új //String objektum lesz és az összefűzést megvalósításához is új //objektumok keletkeznek. public String tostring(){ StringBuilder sb = new StringBuilder(); return sb.append(integer.tostring(y)).append( / )..append(integer.tostring(d)); public boolean equals(object other){ if(other == this) return true; if(other == null) return false; if(getclass().equals(other.getclass())){ Date date = (Date) other; return y == date.y && m == date.m && d == date.d; else return false;

public int hashcode(){ return d+32*m+512*y; Fontos kiegészítések: - Ha egy általunk létrehozott objektumban felüldefiniáljuk az equals( ) metódust, akkor kötelező felüldefiniálnunk az objektumunk hashcode() metódusát is. - Az object osztály finalize() függvényét nem szoktuk használni. Ez a függvény lényegében destruktor szerű szerepet tölt be, viszont nem tudjuk pontosan, hogy a garbage-collector mikor fogja felszabadítani az allokált objektumunkat. Ignoráljuk! - Az equals( ) metódus alapértelmezett definíciója: return this == other; - Két adat egyenlő, ha a hashcode() egyenlő - hashcode() fontos szerepet játszik az adatszerkezeteknél is. Például: HashSet, HashMap protected Object clone() throws CloneNotSupportedException if(this instanceof Clonable){DO_MAGIC else throw new CloneNotSupportedException(); DO_MAGIC: Alapértelmezetten sekély másolás (Shallow copy) Clonable: üres interfész, melyre szükség van a clone() használatához Minden osztály, amely implementálja a Clonable interfészt másolható lesz a clone() segítségével. Azonban mivel sekély másolást biztosít, így a referencia típusú mezők esetében a másolást követően nem keletkezik új objektum, hanem ugyan arra a helyre fog mutatni a referencia, mint ahova a lemásolandó példányban mutat. tomb tomb

Első sorban primitív típusú mezőket tartalmazó objektumok esetén hasznos, vagy ha azt szeretnénk, hogy a másolt objaktumban levő referenciák is ugyan oda mutassanak, ahova az eredeti objektumban mutattak. Az előző minta kibővítve:: public class Date implements Clonable{ be: public Date clone(){ try{ return (Date) super.clone(); catch(clonenotsupportedexception e){ assert false; // ide sose fog ráfutni a program. return null; Újra deklarálás: Eredetileg protected Object clone() volt a metódusunk. Amit tudni kell: - a láthatóságot szabad bővíteni, de szűkíteni nem! - a visszatérési érték csak specializálódhat! (Object-ből származik a Date!) - a paraméterlista típusilag nem változhat, de a formális paraméter nevek, amennyiben vannak változhatnak! - szerepelhet kevesebb ellenörzött kivétel, de több nem! Miért? Azért, mert nem sérti meg a helyettesítési elvet! Mély másolás (Deep copy): public class Date implements Clonable{ private int[] values; public Date(int y, int m, int d){ values = {y,m,d; public Date clone(){ try{ Date other = (Date) super.clone(); other.values = { values[0], values[1], values[2]; catch

Döntés: Amennyiben asszociációs kapcsolat áll fenn két objektum között, úgy sekély másolást használunk. Amennyiben aggregáció kapcsolat áll fenn két objektum között, úgy mély másolást, használunk.