Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
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
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
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.
Objektum-elvű programozás (OOP)
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
Kollekciók IO stream-ek Generikus kollekciók.  objektumokat tartalmaznak  nincsen előre meghatározott méretük, bármennyi objektumot pakolhatok beléjük.
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. 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,
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.
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.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban 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/10 C++ programozási nyelv Gyakorlat - 5. 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.
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.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Csomagok.
© 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.
OOP ÖRÖKLŐDÉS, INTERFÉSZ
HEFOP 3.3.1–P /1.01 Az OOP elve A programozási paradigma (vagy elv) a számítógépes programok tervezésének és programozásának módszerét jelenti.
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. 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.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
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ú,
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
Programozás III KOLLEKCIÓK.
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.
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
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. 5. gyakorlat.
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
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.
V 1.0 Programozás I. Osztályok, objektumok 1 ÓE-NIK-AII, 2014.
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][,
A szoftver mint komplex rendszer: objektumorientált megközelítés.
a programegységek között
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Programozás I. 4. gyakorlat.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Osztályok Garbage collection

 általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final] [transient] [volatile] típus változóNév ◦ metódusok megadása:  [láthatóság] [static] [abstract] [final] [native] [synchronized] visszatérésiTípus metódusNév ([paraméterek]) [throws kivételLista]

public class Alma{ private int tomeg; private String szin; public void leesik(){ System.out.println(„Potty!”); }  ezt így nem tudom futtatni, mert nincs benne main függvény! osztálynév: mindig nagy kezdőbetűvel! az osztály attribútumai az osztály metódusa

public class Program{ public static void main(String[] args){ Alma a = new Alma(); a.leesik(); }  1 fájlba általában 1 osztályt írunk (public class-ból pedig szigorúan csak 1 lehet!) meghívódik a konstruktor meghívódik az „a” objektum leesik metódusa

public class Pont { // adattagok private int x; private int y; public double tavolsag(Pont p) { double tav; // távolságot számoló kód… return tav; }

 az adattagok és a metódusok láthatóságát korlátozni kell ◦ az OO egyik fontos eleme az implementáció elrejtése: a használó használhatja anélkül, hogy pontosan ismerné, mi van benne  hogy ki mit érhet el, azt a láthatóság beállításával szabhatjuk meg  ha nem adunk meg láthatóságot, az alapértelmezett a package private/”friendly” ◦ ez csomagon belül public, egyébként private ◦ nincsen kulcsszava!

 a láthatóság lehet még: ◦ public: mindenkinek mindent megenged ◦ private: csak az az osztály használhatja, amiben létrehozták  az adattagok általában private láthatóságúak ◦ protected: az adott osztály és annak gyerekosztályai használhatják  a main függvény mindig public (különben a futtató környezet sem férne hozzá)

 különleges metódus ◦ garantálja az inicializálást az objektum létrejöttekor  neve meg kell hogy egyezzen az osztály nevével  visszatérési típusa nem lehet  új objektum létrehozásakor hívódik meg ◦ általában az adattagok inicializálásáért felelős kódot helyezzük a törzsébe  általában public láthatóságú

 ha a konstruktornak nincsen paramétere, akkor default konstruktornak nevezzük (ellenkező esetben paraméteres konstruktornak) ◦ alapértelmezett beállításokkal rendelkező objektum létrehozására használjuk  ha semmilyen konstruktort nem készítünk, akkor a fordító készít egy default-ot ◦ ha viszont akár paraméteres, akár pataméter nélküli konstruktort készítünk, akkor nem jön létre default

 Default: public Pont() { x = 0; y = 0; }  Paraméteres: public Pont(int xKoord, int yKoord) { x = xKoord; y = yKoord; }

 operáció kiterjesztése/overloading: ugyanaz a neve, de más a paraméterlista ◦ pl. a konstruktorok esetén ◦ de nemcsak konstruktorokat lehet kiterjeszteni, pl.: public void kortRajzol(){…}; public void kortRajzol(int sugar){…}; public void kortRajzol(int sugar, int x, int y){…};

 Adattag esetén: ugyanazon a helyen tárolódik az összes példány  ugyanaz lesz az adattag értéke bármely objektumpéldány esetén ◦ Pl.: Alma osztály adattagja legyen: private static int tomeg;  minden Alma típusú objektum tömege ugyanannyi lesz ◦ a static adattag objektumpéldány nélkül is létezik

 Metódus esetén: nem kell objektumpéldányt létrehozni ahhoz, hogy meg tudjuk hívni  Pl.: public static void main(), Integer.parseInt()  nem lehet felüldefiniálni!  Statikus környezetből csak statikus adattagok érhetők el

 adattag esetén: nem változtathatja meg az értékét (adnunk kell neki kezdőértéket!)  Pl.: private static final int tomeg = 10;  metódusok esetén: gyerekosztályban nem lehet felüldefiniálni  Pl.: public final leesik(){…}  minden private metódus impliciten final

 osztály esetén: nem lehet gyerekosztálya  Pl.: final class Alma{…}  minden metódusa impliciten final  nem primitív típusra használva nem az objektum lesz konstans, hanem a referencia

 valódi konstans létrehozása: static és final kulcsszavakkal ◦ kezdőértékük nem változtatható meg ◦ nevüket csupa nagy betűvel kell írni, szóhatáron aláhúzásjellel elválasztva ◦ Pl.: public static final int TOMEG = 10;  elérése: public class Ember { public static final boolean FERFI = true; } … //elérés az osztályon kívülről: Ember.FERFI

az adattagok későbbi (konstruálás utáni) beállítására (setter) illetve lekérdezésére (getter) szolgálnak elnevezésre vonatkozó szabályok: getter: getAdattagNeve setter: setAdattagNeve

 az Alma osztály tömeg adattagjához tartozó getter és setter: public int getTomeg(){ return tomeg; } public void setTomeg(int ujTomeg){ tomeg = ujTomeg; }

 A Kutya osztály fajtiszta adattagjához tartozó getter és setter (az adattag logikai típusú): public boolean isFajtiszta(){ return fajtiszta; } public void setFajtiszta(boolean fajtiszta){ this.fajtiszta = fajtiszta; }

 hivatkozás az aktuális objektumra  mikor használjuk? ◦ ha egy metódus formális paraméterének neve megegyezik egy attribútum nevével ◦ Pl.: public Pont(int x, int y) { this.x = x; this.y = y; }

 Objektumok élete Javában: ◦ heap-en keletkeznek (ellentétben a primitív típusokkal) ◦ létrehozás (new kulcsszó) ◦ Felszabadítás: automatikus, a garbage collector (szemétgyűjtő) végzi  null kulcsszó: azt jelöli, hogy az adott referencia nincs beállítva semmilyen objektumra

Pont p1 = new Pont(6, 15); Pont p2 = new Pont();... p1 = null; … P2 = null;

 egységbezárás és információ elrejtése (absztrakt adattípus) ◦ adatok és a rajtuk végzett műveletek egységbezárása  osztályok írása  öröklődés  polimorfizmus (többalakúság)

 Ember.java (pub)  Alma.java (honlapom)  PrivatEmber.java (pub, 5. hétnél)  PEMain.java (pub, 5. hétnél)

 pub: feladat.txt (4. gyakorlat könyvtára)

 szerda éjfélig küldhető el 2 pluszpontért nekem ben  feladat: ◦ Írj olyan osztályt, ami egy szobát reprezentál, a szobáról legyen eltárolva a területe és a belmagassága. ◦ Írj paraméteres konstruktort, ami a mezőket inicializálja. ◦ Írj getter és setter metódusokat az adattagokhoz. ◦ Írj az órai minta alapján „info” metódust a Szoba osztályhoz. ◦ Írj újabb osztályt, ami futtatható, és a parancssori paramétereknek megfelelően létrehoz egy objektumot a Szoba osztályból.

 Pl.: java Szoba 15 2  15 m 2 területű, 2 m belmagasságú szobát hozunk létre ◦ Emellett a futtatható osztályban hozz létre egy „lakas” nevű tömböt is, ami 10 szobát tartalmaz  a 10 szoba területe egy véletlen szám 5 és 15 között, a belmagasságuk pedig 50-50% eséllyel 2 ill. 3 méter ◦ A létrehozott Szoba objektumok jellemzőit az „info” metódus segítségével írasd ki a konzolra.