1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.

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,
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..
© 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.
Szabó Tamás Károly G6HT12 A Ruby programozási nyelv.
Programozás alapjai.
Öröklődés Polimorfizmus Csomagok Absztrakt osztályok, interfészek
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
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. 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.
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 C++ programozási nyelvSoós Sándor 1/17 C++ programozási nyelv Gyakorlat - 7. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
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# osztályok Krizsán Zoltán 1.1.
C# tagfüggvények.
© 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
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.
Ficsor Lajos CPP6 / 1 Virtuális bázisosztály Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
ELTE IK Informatika Doktori Iskola Programozási nyelvek összehasonlító elemzése Nyékyné Gaizler Judit INFPHD035-K
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:
Absztrakt adattípusok kAkAÓ Objektumorientált programozás. In: Nyékyné Gaizler Judit (szerk.): Programozási nyelvek, Kiskapu, Budapest, pp
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.
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ú,
Java programozási nyelv Metódusok
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
1 Objektum orientált programozás Struktúrák és objektumok gyakorlat 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ó.
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.
Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
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.
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
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][,
LA C++ programozási nyelv Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 19./0. lRokonok, barátok lÚj műveletek hozzárendelése az.
A C++ programozási nyelv
Hernyák Zoltán Programozási Nyelvek II.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
String osztály létrehozása
Öröklődés Objektumok közötti speciális kapcsolat.
Konverziós operátorok
Feladat Készítsünk programot, amely ciklikusan egy egyenest forgat 8 fokonként, mialatt 3 db vektort mozgat és forgat 5, 6 ill 7 fokonként, és kijelzi.
Előadás másolata:

1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia

2 Mezőhozzáférés struct : egység van, de alapértelmezésben nincs egységbezárás: minden mező publikus class : egységbezárás van: alapértelmezésben minden mező privát private: csak az osztály elemei érhetik el és az esetleges barátok protected: az osztály és leszármazottainak mezői érik el public: kívülről hozzáférhető

3 Mezőhozzáférés öröklése publikus : a mezőhozzáférés változatlanul öröklődik. struct öröklődés esetén ez az alapértelmezés. védett : minden mező védett lesz, kivéve a privát privát : minden mező privátra módosul az öröklődés során, amihez hozzá szeretnénk férni annak módosítani kell a mezőhozzáférését. A class alapértelmezése. Célszerű nem hagyatkozni az alapértelmezésre, hanem explicite megadni az öröklődés módját.

4 Öröklött mezőhozzáférés felülbírálata Az örökölt hozzáférési típus elfedhető: a származtatott osztályban: ugyanazzal a névvel a kívánt elérhetéssel deklarálunk egy változót a származtatott osztályban: private/protected/public: eredetiváltozónév; a kívánt elérhetésű változók között felsoroljuk az öröklött változót hatókör operátorral: private/protected/public: alaposztály::változó;

5 Virtuális tagfüggvények Virtuális tagfüggvények : olyan öröklött (public v. protected) tagfüggvényei az alaposztálynak, melyeket a származtatott osztályokban újradefiniálunk így az osztály viselkedését megváltoztatjuk: a polimorfizmus egy megtestesülése. Általában az alaposztály referenciáján keresztül hívódik meg, de csak a futáskor rendelődik az aktuális függvény a referenciához: ez a késői kötés v. dinamikus összerendelés

6 Virtuális tagfüggvények példa: class alap { … public: virtual int fvnév (); }; tisztán virtuális, ha egyáltalán nem szerepel a virtuális függvény definíciója az alaposztályban: virtual int fvnév ()=0;

7 Virtuális tagfüggvények A tagfüggvények virtuális mivolta öröklődik: a leszármazott osztályokban nem szükséges kiírni, hogy virtuális tagfüggvényről van szó. A virtuális tagfüggvények típusa megegyezik az alap-függvény típusával: ugyanolyan neve és ugyanolyan bemeneti és kimeneti paraméterlistája kell, hogy legyen. Ha nem egyezik pontosan túlterhelés ről avagy operator overloading ról beszélünk.

8 Túlterhelés operátorfüggvény: legalább egy paraméterük osztály vagy struktúra típusú. Általában osztályokon belül adjuk meg őket vagy friend mechanizmussal. Ugyanahhoz a névhez többféle paraméterlistával is definiálunk függvényt, más és más tartalommal; pl. attól függően, hogy milyen típussal hívjuk meg, más és más lesz a kimeneti típus is.

9 Többszörös öröklődés class Alap_i { private: privát változók _i; protected: védett változók _i; public: publikus változók _i; tagfüggvények _i; }; i=1,2,…

10 Többszörös öröklődés class Származtatott: public Alap_1, public Alap_2, … { private: privát változók _újak/felülírtak; public: publikus változók _újak/felülírtak; tagfüggvények _újak/felülírtak; };

11 Többszörös öröklődés class Származtatott: public Alap_1, public Alap_2, … { private: privát változók _újak/felülírtak; public: publikus változók _újak/felülírtak; tagfüggvények _újak/felülírtak; };

12 Konstruktor class osztálynév { private: privát változók ; public: publikus változók ; típus tagfüggvények ; osztálynév(típusok,változók); }; Nincs típusa a konstruktornak és ugyanaz a neve, mint az osztálynak

13 Konstruktor class osztálynév { private: privát változók ; public: publikus változók ; típus tagfüggvények ; osztálynév(típusok,változók); }; Hivatkozás: osztálynév::osztálynév()…

14 Destruktor Felszabadítja az adattípus álltal elfoglalt területet: class osztálynév { private: privát változók ; public: publikus változók ; típus tagfüggvények ; konstruktor; ~osztálynév(void); };

15 Destruktor Felszabadítja az adattípus álltal elfoglalt területet: class osztálynév { private: privát változók ; public: publikus változók ; típus tagfüggvények ; konstruktor; ~osztálynév(void); };

16 Mezőhozzáférés struct : egység van, de alapértelmezésben nincs egységbezárás: minden mező publikus class : egységbezárás van: alapértelmezésben minden mező privát private: csak az osztály elemei érhetik el és az esetleges barátok protected: az osztály és leszármazottainak mezői érik el public: kívülről hozzáférhető