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.

Slides:



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

1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 8. rész – Grafikus felhasználói felület Nyugat-Magyarországi Egyetem Faipari Mérnöki.
C++ programozási nyelv Gyakorlat hét
Programozás III OOP ALAPOK.
Rendszertervezés GIMP.
Piacképes programozói tudás a középiskolában
EE/R adatmodell (Extended E/R) 1 Az objektum orientált szemlélet elterjedésével egyre nőtt az igény az olyan SDM (Semantic Data Model) modellek iránt,
Programozás III KOLLEKCIÓK 2..
3. A programozás eszközei, programozás-technikai alapismeretek
Az egyed-kapcsolat modell
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Ö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.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
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
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.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
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.
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 Java programozási nyelvSoós Sándor 1/4 Java programozási nyelv 12. rész – Képek kezelése Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Adatbázis-kezelés ACCESS program:
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.
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.
Ficsor Lajos CPP6 / 1 Virtuális bázisosztály Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Objektumorientált tervezés és programozás II. 3. előadá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.
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.
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.
Java programozási nyelv Adatbekérés konzolról
Programozás III KOLLEKCIÓK.
A háromszög középvonala
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Szögek, háromszögek, négyszögek és egyéb sokszögek, kör és részei.
OOP ÖRÖKLŐDÉS, INTERFÉSZ
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ó.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
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
Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs
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.
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.
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
String osztály létrehozása
ELEMI GEOMETRIAI ISMERETEK
Konverziós operátorok
Előadás másolata:

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 Soós Sándor november

A C++ programozási nyelvSoós Sándor 2/17 Tartalomjegyzék ● Házi feladatok ● Örököltetés, leszármaztatás ● Terminológia ● UML: Unified Modeling Language ● Példa: Személy-Diák ● Az igazi megoldás: örökítés ● Ugyanez kompozícióval ● Tagfüggvények örökítése ● Ugyanez kompozícióval ● Konstruktorok, destruktorok ● Tanulság ● Szintetizált konstruktor ● A default konstruktor hiánya? ● Példa kompozícióra ● Példa: Geometriai objektumok

A C++ programozási nyelvSoós Sándor 3/17 Házi feladatok ● Ezekből fog kialakulni a laborjegy, ezért is fontos, de... – a programozást nem lehet másképp megtanulni, mint hogy nekiállunk programokat írni. – meg kell szenvedni azért, hogy elkészüljenek az első önálló programjaink – becsaphatjuk saját magunkat azzal, hogy ezt megspóroljuk (nem írjuk meg a házi feladatot, vagy másolatot adunk be), de e nélkül nem lehet megtanulni a programozást. ● Mostantól életbe lépnek a múlt héten bemutatott szabályok. ● Mostantól osztályozni fogjuk a beadott házi feladatokat, minden nap késés 1 jegy levonás! ● A jövő héten itt az órán kell majd elkészíteni egy programot, amit az óra végén be kell adni osztályzásra.

A C++ programozási nyelvSoós Sándor 4/17 Örököltetés, leszármaztatás ● Az objektum-orientált nyelvek talán legfontosabb újítása. ● A hagyományos nyelvekben nem létezik hasonló fogalom. ● Különböző nyelvek és tankönyvek eltérő terminológiát és jelölésmódot használnak. ● Ezek mind hasonló elveket takarnak. ● Ezeket egyszer kell alaposan megérteni, ezután a különböző nyelvekben jól felhasználhatjuk ezt a tudást. ● Tehát most nem csak C++ -t tanulunk, hanem objektum- orientált programtervezést és gondolkodásmódot is. ● Ha ezt jól elsajátítottuk, visszatekintve nagyon nehéz lesz elképzelni, hogy korábban hogyan programoztunk és gondolkoztunk másképp!

A C++ programozási nyelvSoós Sándor 5/17 Terminológia ● Elnevezések: – örököltetés, öröklés, örökítés, leszármaztatás, inheritance, kiterjesztés, extends (Java) – A: alap, bázis, ős, szülő osztály, base class, parent – B: leszármaztatott, gyerek, örököltetett, leszármazott osztály, child – Ezek alatt ugyanazt értjük! – B egy bizonyos fajta A ● Jelölés: UML Tutorial: – ML_tutorial/class.htm

A C++ programozási nyelvSoós Sándor 6/17 UML: Unified Modeling Language

A C++ programozási nyelvSoós Sándor 7/17 Példa: Személy-Diák class Szemely { public: intKor; doubleSuly; }; 1. megoldás: class Diak { public: intKor; doubleSuly; doubleTanAtlag; }; 2. megoldás: class Szemely { public: intKor; doubleSuly; doubleTanAtlag; //ezt nem használjuk, ha nem diák };

A C++ programozási nyelvSoós Sándor 8/17 Az igazi megoldás: örökítés 3. megoldás: class Diak : public Szemely { public: double TanAtlag; }; int main() { Szemelysz; sz.Suly = 75; Diakd; d.Suly = 63; d.Kor = 22; d.TanAtlag = 3.8; return 0; }; ● A leszármazott tartalmazza az ős tulajdonságait. ● Fontos: A gyerekben nem kell külön minősíteni, hogy honnan származik egy adott tulajdonság!

A C++ programozási nyelvSoós Sándor 9/17 Ugyanez kompozícióval class Diak { public: Szemely SzemelyiAdatok; doubleTanAtlag; }; int main() { Diakd; d.SzemelyiAdatok.Suly = 63; d.TanAtlag = 3.8; return 0; }; ● A két megoldás hasonlít egymáshoz. ● Valószínűleg majdnem minden feladat megoldható mindkét módon. ● Hogy mikor melyik célszerűbb, az egy megvizsgálandó kérdés.

A C++ programozási nyelvSoós Sándor 10/17 Tagfüggvények örökítése class Szemely { public: void Beszel() { printf( "beszélek\n" ); } }; class Diak : public Szemely { public: void Vizsgazik() { printf( "jaj\n" ); } }; int main() { Diakd; d.Beszel(); d.Vizsgazik(); return 0; };

A C++ programozási nyelvSoós Sándor 11/17 Ugyanez kompozícióval class Szemely { public: void Beszel() { printf( "beszélek\n" ); } }; class Diak { public: SzemelySzemely_Resz; void Vizsgazik() { printf( "jaj\n" ); } }; int main() { Diakd; d.Szemely_Resz.Beszel(); d.Vizsgazik(); return 0; };

A C++ programozási nyelvSoós Sándor 12/17 Konstruktorok, destruktorok class Szemely { public: Szemely() { printf( "Szemely konstruktor\n" ); } ~Szemely() { printf( "Szemely destruktor\n" ); } }; class Diak : public Szemely { public: Diak() { printf( "Diak konstruktor\n" ); } ~Diak() { printf( "Diak destruktor\n" ); } }; int main() { Diakd; return 0; } Mit ír ki? Szemely konstruktor Diak konstruktor Diak destruktor Szemely destruktor

A C++ programozási nyelvSoós Sándor 13/17 Tanulság ● Különböző objektum-orientált nyelvek eltérően rendezik a konstruktorok és destruktorok kérdését: ● C++ – automatikusan lefut az ős konstruktora, ill. destruktora – nem is tudom én magam meghívni az ős konstruktorát – A sorrend logikája: ● Az őst inicializálom előbb, mert a gyerek már felhasználhat ebből valamit. ● Például a diák évfolyama függhet az életkorától ● Delphi (Pascal) – nekem kell gondoskodnom az ős konstruktorának, ill. destruktorának meghívásáról – ha akarom el is hagyhatom

A C++ programozási nyelvSoós Sándor 14/17 Szintetizált konstruktor ● Mi történik akkor, ha én nem definiálom a szükséges konstruktorokat? class Szemely { public: Szemely() { printf( "Szemely konstruktor\n" ); } }; class Diak : public Szemely { }; int main() { Diakd; return 0; } Mit ír ki? Szemely konstruktor Ez akkor is így van, ha a Diakban definiálok egy üres konstruktort. A destruktornál ugyanez a helyzet.

A C++ programozási nyelvSoós Sándor 15/17 A default konstruktor hiánya? ● Mi történik akkor, ha a fordító nem képes szintetizálni a default konstruktort? class Szemely { public: Szemely( int K, double S) { Kor = k; Suly = S; } intKor; doubleSuly; }; class Diak : public Szemely { public: double TanAtlag; }; int main() { Diak d; return 0; }; Mi történik ekkor? Mi történik akkor, ha a Diaknak definiálok default konstruktort? Tanulság: Ha definiálunk valamilyen konstruktort, akkor definiáljunk default konstruktort is!

A C++ programozási nyelvSoós Sándor 16/17 Példa kompozícióra ● Van olyan eset, amikor egyértelmű, hogy inkább a kompozíciót választjuk az örökítés helyett: class Szemely { public: void Eltesz() { db.Eltesz(); } Adatbazisdb; }; – Ebben az esetben nem jut eszünkbe a Szemelyt örökíteni az Adatbazisból – Az Adatbazis egy szolgáltatást nyújt a Szemelynek – Nem pedig a Szemely bővíti ki az Adatbazist!

A C++ programozási nyelvSoós Sándor 17/17 Példa: Geometriai objektumok ● Tervezzük meg és készítsük el egy geometriai oktató program alaposztályait! – Pont – Szakasz – Egyenes – Kör – Körcikk – Ellipszis – Négyszög – Téglalap (a tengelyekkel párhuzamos állású) – Négyzet (a tengelyekkel párhuzamos állású) – Rombusz (két oldala a tengelyekkel párhuzamos állású) – Háromszög – Speciális háromszögek