Ficsor Lajos CPP6 / 1 Virtuális bázisosztály Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.

Slides:



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

ADATBÁZISOK.
Access Adatbáziskezelés
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..
Programozás alapjai.
Bevezetés a Java programozásba
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.
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.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
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.
A C++ programozási nyelvSoós Sándor 1/14 C++ programozási nyelv Gyakorlat 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/15 C++ programozási nyelv Gyakorlat 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.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
A virtuális technológia alapjai Dr. Horv á th L á szl ó Budapesti Műszaki Főiskola Neumann János Informatikai Kar, Intelligens Mérnöki Rendszerek.
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 Miskolci Egyetem Általános Informatikai Tanszék
Kivételkezelés a C++ nyelvben Bevezetés
Bevezetés a C++ programozási nyelvbe
1Objektumorientált elemzés és tervezés - Alapfogalmak Gyurkó György Objektumorientált elemzés és tervezés Alapfogalmak.
III. Témakör MISKOLCI EGYETEM LOGISZTIKA ANYAGMOZGATÁSI ÉS LOGISZTIKAI TANSZÉK III./1.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
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 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ú,
Objektumorientált programozás
UML Unified Modelling Language Szabványos jelölésrendszer elemeivel írja le diagramok formájában a rendszer működését a különböző modell-nézetek szempontjából.
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.
Adatbázis-kezelés.
1 Objektum orientált programozás Modellezés objektumokkal Nagy Szilvia.
1 Objektum orientált programozás Struktúrák és objektumok gyakorlat Nagy Szilvia.
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor.
Objektumvezérelt rendszerek tervezése 4.óra – Composite, Decorator © Fülöp Lajos.
Objektumvezérelt rendszerek tervezése
OOP ÖRÖKLŐDÉS, INTERFÉSZ
Programozás III OOP ALAPOK.
Programozás III OOP ÖRÖKLŐDÉS.
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.
Típuskonverzió a C++ nyelvben
Programozás I. 3. gyakorlat.
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Programozás III SWING. SWING ALKALMAZÁSOK (ISM.) Swing felületű, eseményvezérelt alkalmazás létrehozása: 1.JFrame alapú osztály létrehozása Szerepe: vezérlés.
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.
Programozás II. labor 1. rész Programozási tételek Öröklődés Interfészek Eseménykezelés Kivételkezelés Visszalépéses keresés.
Strukturális tervezési minták
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Öröklés bemutatása Hozzunk létre egy Dolgozó adatbázist C++-ban!
3. osztályban.
Öröklődés Objektumok közötti speciális kapcsolat.
Előadás másolata:

Ficsor Lajos CPP6 / 1 Virtuális bázisosztály Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék

Ficsor Lajos Virtuális bázisosztály CPP6 / 2 Többszörösen örökölt bázisosztály Egy osztály származtatási listájában csak egyszer szerepelhet egy bázisosztály Ennek ellenére a többszörös öröklődés lehetősége miatt egy bázisosztály többször is előfordulhat egy leszármazott osztályban. Egyszerű példa: "gyémánt" öröklési szerkezet

Ficsor Lajos Virtuális bázisosztály CPP6 / 3 Példa Egy fuvarozó vállalkozó járművei:

Ficsor Lajos Virtuális bázisosztály CPP6 / 4 Példa (folyt.) A járműszerelvény modellje:

Ficsor Lajos Virtuális bázisosztály CPP6 / 5 Példa (folyt.) A teljes osztálydiagram:

Ficsor Lajos Virtuális bázisosztály CPP6 / 6 Egy szerelvény objektum szerkezete Tulajdonos rész Teherautó saját rész Pótkocsi saját rész Szerelvény saját rész Tulajdonos rész Tulajdonos Teherauto Potkocsi Tulajdonos Szerelvény

Ficsor Lajos Virtuális bázisosztály CPP6 / 7 Felmerülő kérdések A tulajdonos rész kétszer épül be az objektumba. Szemantikailag indokolt-e? Jelen példánkban nem indokolt => fölösleges helyfoglalás Kétértelmű hivatkozás - feloldható a SCOPE operátorral A nev vagy Tulajdonos::nev azonosító kétértelmű A Teherauto::nev vagy Potkocsi::nev egyértelmű

Ficsor Lajos Virtuális bázisosztály CPP6 / 8 Virtuális bázisosztály Ha szemantikailag nem indokolt az ismétlődés: virtuális bázisosztály Előírása: a virtual kulcssszó az öröklődés módját előíró kulcssszó előtt. Példa: class Tulajdonos {…}; class Teherauto: virtual public Tulajdonos {…}; class Potkocsi: virtual public Tulajdonos {…}; class Szerelveny: public Teherauto, public Potkocsi {…};

Ficsor Lajos Virtuális bázisosztály CPP6 / 9 Virtuális öröklődés implementálása A virtuális bázisosztályból egy (megosztva használt) objektum keletkezik valamennyi leszármazott osztály számára. Az osztott objektum nem érhető el közvetlenül. A virtuális bázisosztály tagjaira bármely leszármazott osztály objektuma hivatkozhat. Az egyes leszármazott osztályok az osztott objektumot pointeren keresztül érik el.

Ficsor Lajos Virtuális bázisosztály CPP6 / 10 Virtuális öröklődés implementálása (példa) Pointer Teherautó saját rész Pótkocsi saját rész Szerelvény saját rész Tulajdonos Teherauto Potkocsi Tulajdonos Szerelvény Pointer Tulajdonos rész

Ficsor Lajos Virtuális bázisosztály CPP6 / 11 Virtuális bázisosztály konstruktora Először mindig a virtuális bázisosztály konstruktora hajtódik végre. Mindig az utolsó leszármazott osztály inicializálhatja a virtuális bázisosztályt. Ezért az ilyen leszármazott - kivételesen - nem csak a közvetlen ősét inicializálhatja! Példa: Szerelveny::Szerelveny(...) : Tulajdonos(...) {…}