Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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,

Hasonló előadás


Az előadások a következő témára: "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,"— Előadás másolata:

1 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, absztrakt osztályok

2 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Adattagok inicializálása  Az adattagokat általában a konstruktorban szokás inicializálni.  Egyik megoldás, amikor az inicializálást a konstruktor belsejében tesszük.  Másik megoldás egy kicsit függvény szintaxist követ: private: int param_a; int param_b; public: Konstruktor( int a, int b ) : param_a(a), param_b(b){}

3 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Öröklődés  Olyan osztályok között értelmezett viszony, amely segítségével egy általánosabb típusból (ősosztály) egy sajátosabb típust tudunk létrehozni (utódosztály).  Az utódosztály adatokat és műveleteket viselkedésmódot örököl, kiegészíti ezeket saját adatokkal és műveletekkel, illetve felülírhat bizonyos műveleteket.  A kód újrafelhasználásának egyik módja.  Megkülönböztetünk egyszeres és többszörös örökítést.

4 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Öröklődés  Szintaxis: class ChildrenClass: visibility ParentClass{};  Gyerek osztály konstruktorában meg kell hívni az ős osztály konstruktorát a következőképpen: public: ChildrenClass( int param) : Parent( param){}

5 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Öröklődés  Láthatóság használatával csak szigorítani lehet az öröklődést.

6 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Többszörös öröklődés  Nem egy, hanem több osztályból örököltetünk, szintaxis: ChildrenClass: visibility Parent1, visibility Parent2, …  Gyerek konstruktorban meg kell hívni az ős osztályok konstuktorát: public: ChildrenClass( int param) : Parent1( param), Parent2( param), …

7 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Ős adattagok elérése  Minden adattagot elérünk amit az ős osztálytól örököltünk (kivéve a private).  Ezeket felül is definiálhatjuk.  Ha már felüldefiniáltunk egy metódust, és a metódust az osztályon belül bármilyen prefix nélkül használjuk, akkor a felülírt metódus fog meghívódni. Viszont ha ilyen esetben az ős osztály metódusát szeretnénk használni, akkor meg kell adni az elérési útvonalat: ParentClass::methodName(params..);

8 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Virtuális függvények  Tegyük fel, hogy egy ős osztálybeli pointerrel mutatunk egy gyerek osztálybeli objektumra. Tegyük fel, hogy a gyerek osztályban felüldefiniáltunk egy függvényt. Ha az ős pointeren keresztül meghívjuk ezt a függvényt, akkor nem a felüldefiniált fog meghívódni, hanem az ős osztályban létrehozott függvény.  Példa: Basic* basic = new Child; basic->Function();//az ős metódusa fog meghívódni

9 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Virtuális függvények  Ennek kiküszöbölésére találták ki a virtuális függvényeket.  Minden olyan objektum, mely rendelkezik legalább egy virtuális függvénnyel, rendelkezik egy ú.n. virtuális ugró táblával, melyben a virtuális függvények ugrási címe szerepel.  Ha hivatkozunk ősreferencián keresztül egy metódusra, ami virtuális, akkor a gyerek objektum ugró táblájából keresi ki a program a hívandó függvény címét.

10 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Virtuális függvények  Virtuális függvény létrehozásának szintaxisa: virtual visszatérési_típus függvénynév(paraméterek);  Csak az ősosztályban kell kiírni a virtual szót.

11 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Pure virtual függvények  Arra is van lehetőség, hogy egy újonnan létrehozott virtuális függvényt az adott osztályban nem implementáljuk.  Szintaxisa: virtual visszatérési_típus metódusnév() = 0;

12 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Absztrakt osztályok  Ha egy osztály rendelkezik legalább egy pure virtual függvénnyel, akkor azt absztrakt osztálynak nevezzük.  Absztrakt osztályból nem lehet objektumot képezni, csak pointer vagy referencia lehet.


Letölteni ppt "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,"

Hasonló előadás


Google Hirdetések