C++ programozási nyelv



Hasonló dokumentumok
Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Származtatási mechanizmus a C++ nyelvben

PHP5 Új generáció (2. rész)

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

C++ programozási nyelv Konstruktorok-destruktorok

A C++ öröklés. (Előfeltétel: 12. tétel ismerete)

Programozás C++ -ban 2007/4

Osztály és objektum fogalma

C++ programozási nyelv Konstruktorok Gyakorlat

Programozás 1. 2.gyakorlat

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Java programozási nyelv 4. rész Osztályok II.

Objektumorientált programozás C# nyelven

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Programozás I. 2. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Objektumorientált programozás C# nyelven

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Tankönyv-választás. igazgató és tankönyvfelelős kérdőív. A válaszadás önkéntes! Ki válaszol a kérdőívre? nap... óra...

C++ programozási nyelv

Kérdések és válaszok a cégeljárás változó jogi rendjével kapcsolatban

Programozás II gyakorlat. 4. Öröklődés

Objektumorientált programozás C# nyelven III.

Informatikai Kar. 4. fejezet. Giachetta Roberto

Továbbtanulási ambíciók

Objektum orientált alapelvek

OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat

Objektumok inicializálása

Tanmenetjavaslat a 6. osztályos matematika kísérleti tankönyvhöz

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Java és web programozás

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Kombinatorika

Objektumorientált programozás C# nyelven

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék


SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

PÉNZBELI ELLÁTÁSOKBAN BEKÖVETKEZETT VÁLTOZÁSOK 2015.

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Magas szintű programozási nyelvek 2 Előadás jegyzet


Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Osztályok. 4. gyakorlat

VÁZLATOK, MUNKATÉRKÉPEK

C++ programozási nyelv

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

0.2.1 Operátorok túlterhelése (műveletek definiálhatók felhaszn. típusokra) Kutya. Eb1. Eb2. Név (txt): Rex. Blöki. Német juhász 3

HÉTVÉGI HÁZI FELADAT SZABÁLYAI, ISKOLAI DOLGOZATOK

4. Öröklődés. Programozás II

A figurális számokról (I.)

1 / :35

Adatstruktúrák, algoritmusok, objektumok


Vízteres, vízbetétes és társai

Elseve Luminizer RAGYOGJ KI A TÖMEGBŐL! elnevezésű promóció részvételi és játékszabályzata

A Pure 3in1 Casting promóció játékszabálya Garnier

RELATIVITÁSELMÉLET. bevezető

A J Á N L A T K É R É S

tekintettel az Európai Unió működéséről szóló szerződésre, különösen annak 291. cikkére,

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Java programozási nyelv 8. rész Grafikus felhasználói felület

Írásbeli beadandó feladatok formai szabályzata

Programozás II. 6.Öröklés Dr. Iványi Péter

A munkanélküli-járadékot kimerítők

2. Halmazelmélet (megoldások)

Matematikai programozás gyakorlatok

I. Fejezet Bevezet rendelkezések

Elıírt lépésszámú ciklusok

Programozás II. 4. Dr. Iványi Péter

Tartalomjegyzék. Bevezetés...2

Érettségi eredmények 2005-től (Békéscsabai Andrássy Gyula Gimnázium és Kollégium)

A Taurus Reisen Utazási Iroda Kft. Tenger-Party elnevezésű nyereményjátékának részvételi, adatkezelési és játékszabályzata

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Áttekintés a magyar fagazdaságról

Strandröplabda Magyar Bajnokság Versenykiírás

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Mellékhatások és minőségi hibák kombinációs előfordulása Dr. Oláh Attila, Dr. Mészáros Márta (Magyarországi Gyógyszertörzskönyvezők Társasága)

Pápai Református Kollégium Gimnáziumának és Művészeti Szakközépiskolájának Dadi Tagintézményei

Magyar Labdarúgó Szövetség Pest Megyei Igazgatóság

Találatgaranciás Lottóvariációk gy jteménye

2.3. A C nyelv utasításai

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Keresztmetszeti megmunkálás egyengető-, vastagoló-, és kombinált gyalugépekkel

Elemi Alkalmazások Fejlesztése II.

Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal.

Szám: 35970/1941-5/2015. ált. Tárgy: A MEZEI-VILL Kft. (4100 Berettyóújfalu, Puskin u. 12.) tűzvédelmi bírság ügye

1087 Budapest, Könyves Kálmán krt II. emelet 209. szoba

A J Á N L A T K É R É S

K I V O N A T. Kerekegyháza Város Önkormányzat Képviselő-testületének február 10-én megtartott rendkívüli ülése jegyzőkönyvéből.

500. AA Megoldó Alfréd AA 500.

a villamos energiáról szóló évi LXXXVI. törvény módosításáról


Matematika 9. nyelvi előkészítő évfolyam. 1 óra/hét (37 óra) Kiselőadások tartása, interjúk készítése (matematikatörténeti

OOP #14 (referencia-elv)

Budapest 2012/2013. évi Mini felkészülési tornáinak keretében szervezett verseny Leány szupermini-2 és fiú szupermini-2 versenyszám

1. sz. melléklet A HSE HUNGARY KFT. ÁLTAL DECEMBER 9-ÉN A TARTANDÓ VILLAMOSENERGIA-ÉRTÉKESÍTÉSI ÁRVERÉS SZABÁLYZATA 1 / 14

Tánc és dráma évfolyam

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

NÁLAD A NYERŐ KOMBINÁCIÓ? ELNEVEZÉSŰ NYEREMÉNYJÁTÉK RÉSZVÉTELI ÉS JÁTÉKSZABÁLYZATA


Átírás:

C++ programozási nyelv Gyakorlat - 7. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/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 nyelv Soós Sándor 2/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 nyelv Soós Sándor 3/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 objektumorientá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 nyelv Soós Sándor 4/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: http://pigseye.kennesaw.edu/~dbraun/csis4650/a&d/u ML_tutorial/class.htm A C++ programozási nyelv Soós Sándor 5/17

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

Példa: Személy-Diák class Szemely { intkor; double Suly; 1. megoldás: class Diak { intkor; double Suly; double TanAtlag; 2. megoldás: class Szemely { intkor; double Suly; double TanAtlag; //ezt nem használjuk, ha nem diák A C++ programozási nyelv Soós Sándor 7/17

Az igazi megoldás: örökítés 3. megoldás: class Diak : public Szemely { double TanAtlag; 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! int main() { Szemely sz; sz.suly = 75; Diak d; d.suly = 63; d.kor = 22; d.tanatlag = 3.8; return 0; A C++ programozási nyelv Soós Sándor 8/17

Ugyanez kompozícióval class Diak { Szemely SzemelyiAdatok; doubletanatlag; 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. int main() { Diak d; d.szemelyiadatok.suly = 63; d.tanatlag = 3.8; return 0; A C++ programozási nyelv Soós Sándor 9/17

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

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

Konstruktorok, destruktorok class Szemely { Szemely() { printf( "Szemely konstruktor\n" ); } ~Szemely() { printf( "Szemely destruktor\n" ); } class Diak : public Szemely { Diak() { printf( "Diak konstruktor\n" ); } ~Diak() { printf( "Diak destruktor\n" ); } int main() { Diak d; return 0; } Mit ír ki? Szemely konstruktor Diak konstruktor Diak destruktor Szemely destruktor A C++ programozási nyelv Soós Sándor 12/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 nyelv Soós Sándor 13/17

Szintetizált konstruktor Mi történik akkor, ha én nem definiálom a szükséges konstruktorokat? class Szemely { Szemely() { printf( "Szemely konstruktor\n" ); } class Diak : public Szemely { int main() { Diak d; 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 nyelv Soós Sándor 14/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 { Szemely( int K, double S) { Kor = k; Suly = S; } int Kor; double Suly; class Diak : public Szemely { 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 nyelv Soós Sándor 15/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 { void Eltesz() { db.eltesz(); } Adatbazis db; 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 nyelv Soós Sándor 16/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 A C++ programozási nyelv Soós Sándor 17/17