Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:

Slides:



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

Krizsán Zoltán iit 1.1.  Aszinkron történésről értesítés egy vagy több objektum számára.  Delegátumok segítségével valósítja meg a C#.  event típus,
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
AZ OOP ALAPJAI.
C++ programozási nyelv Gyakorlat hét
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..
RMI = Remote Method Invocation
© 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.
Objektum-elvű programozás (OOP)
Szabó Tamás Károly G6HT12 A Ruby programozási nyelv.
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.
Öröklődés Polimorfizmus Csomagok Absztrakt osztályok, interfészek
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]
Vizuális modellezés Uml és osztálydiagram UML eszközök
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Fejlett Programozási Technikák 2.
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. 5. Gyakorlat Öröklődés, virtuális függvények,
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.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Tömbök ismétlés Osztályok Java-ban Garbage collection
Az objektum-orientált tervezési alapelvek kritikai vizsgálata
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/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 5. rész – Osztályok III.
C# tagfüggvények.
C# osztályok Krizsán Zoltán 1.0.
C# tagfüggvények.
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
OOP ÖRÖKLŐDÉS, INTERFÉSZ
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
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:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
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.
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.
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
OOP ÖRÖKLŐDÉS, INTERFÉSZ
Programozás III OOP ALAPOK.
Programozás III OOP ÖRÖKLŐDÉS.
Programozás III KOLLEKCIÓK.
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Ficsor Lajos A C++ programozási nyelv I. CPP1/ 1 Osztály és objektum fogalma.
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.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 5. 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.
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][,
Programozás I. 5. gyakorlat.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:

Objektum orientált programozás I. eddig: imperatív programozás függvények, műveletek adatokon OO alapja: objektum = adat + kód objektum jellemzői: állapot: tagváltozók értékei viselkedés: metódusok

Objektum orientált programozás II. osztály: minta a generáláshoz tagváltozók és metódusok leírása absztrakt: nem generálható, de a minta felhasználható (öröklődés)‏ egyazon osztály objektumai: saját adat (állapot)‏ közös metódusok (viselkedés)‏ egyszeres öröklődés interface: többszörös öröklődés bonyodalmai elkerülve

Objektumok I. minden objektumnak meghatározott típusa van minden változó objektum-hivatkozás (referencia)! (kivéve primitív típusok)‏ objektum létrehozásának fázisai: Point origin_one = new Point(23, 94); Rectangle rect_one = new Rectangle(origin_one, 100, 200); Rectangle rect_two = new Rectangle(50, 100); int terulet = rect_one.area(); int szelesseg = rect_one.width; Példányosítás: „new” operátorDeklarálás Inicializálás

Objektumok II. objektumok metódusait, változóit az objektumon keresztül érhetjük el: „.” operátor nem célszerű változókhoz közvetlen hozzáférést engedélyezni Point origin_one = new Point(23, 94); Rectangle rect_one = new Rectangle(origin_one, 100, 200); Rectangle rect_two = new Rectangle(50, 100); int terulet = rect_one.area(); int szelesseg = rect_one.width; tagváltozó elérése metódus hívása

Objektumok III. public class Point { public int x; // 0 public int y; // 0 public Point(int x, int y) { this.x = x; this.y = y; } class teszt { public static void main(String[] args) { Point eredeti = new Point(23, 94); Point masik = eredeti; masik.x=1000; System.out.println(eredeti.x); // 1000 } if (x instanceof Point) System.out.println("x egy pont!"); minden változó referencia:

Osztályok I. egy fájlban egy (public) class lehet! tagváltozók metódusok Konstruktor speciális metódus, létrehozza a példányt nincs visszatérési értéke cél: adat inicializálás default konstruktor: a szülőé this, super kulcsszó Destruktor ritkán használjuk finalize()‏ explicit felszabadítás: =null, gc()‏

Konstruktorok public class Rectangle { public int width = 0; public int height = 0; public Point origin; Rectangle() { origin = new Point(0, 0); } public Rectangle(Point p) { origin = p; } public Rectangle(int w, int h) { this(new Point(0, 0), w, h); } public Rectangle(Point p, int w, int h) { origin = p; width = w; height = h; }

System.gc()‏ Az objektumok felszabadításával a program futása után nem kell foglalkoznunk. A szemét gyűjtő megteszi ezt helyettünk finalize metódus (a szemétgyűjtő meghívja ezt mielőtt megszüntetné)‏ Gyakori hibák (lehetnek): System.gc() hívás (Minden generációt ellenőriz)‏ finalize metódus szükségtelen alkalmazása: ez esetben a szemét gyűjtőnek regisztrálni kell a metódust úgy létrehozáskor mint megsemmisítéskor Objektum referencia NULL értékre állítás

Osztályok létrehozása: Osztály deklaráció public – alapértelmezés szerint csak az azonos csomagban lévő osztályok használhatják, így mindenki abstract – az osztály nem példányosítható final – az osztályból nem származtatható másik class osztálynév – az osztály neve extends ősosztály – az osztály őse (mindenképpen kell egy ős)‏ implements interface – a megvalósított egy, vagy több interfész Osztály törzs a változókat és a metódusokat tagoknak nevezzük Konstrutor (null konstruktor)‏ private – más osztály nem példányosíthatja az osztályunkat default – csomagon belüli osztályok példányosíthatják protected – csak alosztályok és az egy csomagban lévő osztályok példányosíthatják public – bármely osztály példányosíthatja Osztályok II.

Tag változók tag változók: hozzáférési szintek: private – csak az osztály default – osztály, csomag protected – osztály, csomag, alosztály public – mindenki static – ez osztály változó (pl. példány számlálás)‏ final – nem változtatható (csak a konstruktorban adhatunk értéket)‏

Metódusok Módosító (mutator) setXXX Hozzáférő (accessor) getXXX Argumentum nélküli

Metódusok public Object push(Object item) throws … { items.addElement(item); return(item); } törzs deklaráció Hozzáférési szint Visszatérési érték Paraméterek Kivétel kezelés

Metódusok I. Hozzáférési szintek: private – osztály default – osztály, csomag protected – osztály, csomag, alosztály public – mindenki static – osztályhoz kötött, így akkor is el lehet érni amikor nincs példányosítva, de csak static tagok érhetőek el! public class teszt { public static int x; public static void pelda() { System.out.println(x); } class teszt1 { public static void main(String[] args) { System.out.println(teszt.x); }

Metódusok II. abstract – nincs implementálva, csak absztrakt osztály tagja lehet (csak a koncepciót vázoljuk, a megvalósítás az alosztályok feladata lesz)‏ final – nem írható felül (biztonsági okok (string - final), tervezés)‏ native – más nyelven írt függvény (a JNI segítségével kapcsolható implementáció)‏ synchronised – párhuzamosan futó szálak metódusokat használhatnak, hogy hozzáférjenek a változókhoz. Ezzel oldhatjuk meg a zárolást.

Metódusok III. throws exceptions – segítségével tudunk kivételeket kezelni az argumentumokat érték szerint adja át, a visszatérési értéket is. polimorfizmus overloading: több metódusnak lehet egy neve, ekkor az argumentumok alapján dől el melyik hívódik meg operator overloading nincs overriding: az alosztályokban lévő azonos nevű metódusok felülírják az ős metódusait

Öröklődés I. az alap objektum az Object belőle származik minden objektum közvetlenül vagy közvetve az alosztály örökli az ős metódusait, változóit (az összes elődét) melyek public vagy protected láthatóságúak örököl mindent aminél nincs specifikálva a láthatóság (default) és egy csomagban vannak mivel a konstruktor-ok nem tagok azok nem öröklődnek

Öröklődés II. superclass – ősosztály az egyforma nevű változóknál, metódusoknál az alosztályé érvényes final metódust nem lehet felülírni abstract metódust kötelező felülírni (vagy az alosztálynak absztraktnak kell lennie)‏ super.valtozonev – az ős változója super.metodusnev() – az ős metódusa super() – ős konstruktor

Object minden osztály belőle származik közvetve vagy közvetlenül felülírható metódusai: clone (klónozás)‏ equals / hashCode (összehasonlítás, int)‏ finalize (memória felszabadítás, super.finalize())‏ toString végleges metódusai: getClass notify notifyAll wait