A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat - 12. 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.
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.
Gyakori hibák C# programozásban
Ö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.
Fájlkezelés, IO Kivételkezelés Belső osztályok
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,
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
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
Függvények, mutatók Csernoch Mária.
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
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 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.
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.
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.
A Java programozási nyelvSoós Sándor 1/24 Java programozási nyelv 9. rész – Kivételkezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
C# tagfüggvények.
C# tagfüggvények.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
Kivételkezelés.
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.
Kivételkezelés a C++ nyelvben Bevezetés
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Objektumorientált tervezés és programozás II. 3. előadás
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
A PHP 5 újdonságai Az OOP terén. Miről lesz szó? Osztályok kezelése – Új direktívák – Konstruktor – Destruktor Interfészek Kivételkezelés.
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.
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.
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
Java programozási nyelv Adatbekérés konzolról
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.
Programozás III KIVÉTEL.
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ú,
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Ficsor Lajos A C++ programozási nyelv I. CPP1/ 1 Osztály és objektum fogalma.
Típuskonverzió a C++ nyelvben
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
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.
Programozás III ÖTLETEK A FELADATMEGOLDÁSHOZ. A HF-EK APROPÓJÁN Néhány javaslat: 1. Jó lenne, ha a feladatmegoldás előtt átnéznék az előadás-anyagokat.
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.
a programegységek között
A C++ programozási nyelv
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Dependency Injection Tesztduplikátumok, Mock-ok, Fake-ek Feladat
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Konverziós operátorok
Előadás másolata:

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

A C++ programozási nyelvSoós Sándor 2/15 Tartalomjegyzék ● Kivételek használata ● Paraméterátadás - Visszajelzés ● A külvilággal való kapcsolat ● Saját programhiba jelzése ● Külső program hibáinak kontrollálása ● Külső adatok hibáinak kivédése ● Mi írunk egy függvényt, amit valaki más fog használni ● Kivételek használata speciális esetekre ● Csomagoló, wrapper függvények ● Konstruktorok fajtái, értékadó operátor ● A this pointer ● Mikor hívódnak meg? ● Automatikusan létrehozott konstruktorok, ill. operator=

A C++ programozási nyelvSoós Sándor 3/15 Kivételek használata ● A múlt órán megtanultuk a kivételkezelés technikáját. – Hogyan kell használni a kivételkezelést ● Most arról lesz szó, hogy mire használhatjuk ezt az eszközt, a kivételkezelést. – Erre fogunk látni különböző példákat

A C++ programozási nyelvSoós Sándor 4/15 Paraméterátadás - Visszajelzés ● A paraméterátadásról sokat szoktunk beszélni, a visszafelé irányú kommunikációról viszont szinte egyáltalán nem. Pedig nagyon fontos dolog. Vissza kell jelezni a sikeres, vagy a sikertelen eredményt is. ● A hívott függvény visszaadhat információt: – visszatérési értékként – cím szerint átadott paraméterekben – esetleg globális változóban ● Az eddigi három esetben a programozó gondosságán múlik, hogy figyel-e a visszajelzésre – kivétel kiváltásával ● Ha a programozó nem kezeli le a hibát, akkor véget ér a program. ● Alaposan meg kell tervezni a visszajelzések rendszerét, éppen úgy, mint a paraméterek átadását!

A C++ programozási nyelvSoós Sándor 5/15 A külvilággal való kapcsolat ● Milyen módokon kerülhetünk kapcsolatba a külvilággal? – Külső függvény meghívása – Adatok beolvasása – Az én függvényemet fogják meghívni kívülről ● Mindhárom esetben fel kell készülni a lehetséges hibákra.

A C++ programozási nyelvSoós Sándor 6/15 Saját programhiba jelzése // except_alk0.cpp class ProgramHiba{ public: ProgramHiba(int K) { Kod = K; } int Kod; }; void f(int Par) { switch(Par){ case 1: printf("Csinalunk valamit\n"); break; case 2: printf("Itt is\n"); break; default: // programhiba throw ProgramHiba(-1234); break; } int main() { try{ f(3); } catch(ProgramHiba& p){ printf("Programhiba %d\n",p.Kod); } catch(...){ printf("Egyeb kivetel\n"); } return 0; } Felkészülünk a hibás paraméter értékekre Felkészülünk a hibás paraméter értékekre

A C++ programozási nyelvSoós Sándor 7/15 Külső program hibáinak kontrollálása // except_alk1.cpp void MasEmberFuggvenye() { int x,y; x = 0; y = 1 / x; } void main() { try{ MasEmberFuggvenye(); } catch(...){ // minden kivételt elkapunk printf("Ejnye, MasEmber.\n"); }

A C++ programozási nyelvSoós Sándor 8/15 Külső adatok hibáinak kivédése ● Kivételkezelés nélkül – Lásd except_alk2.cpp ● Kivételkezeléssel – Lásd except_alk3.cpp

A C++ programozási nyelvSoós Sándor 9/15 Mi írunk egy függvényt, amit valaki más fog használni ● Nem lehetünk biztosak abban, hogy a függvényünk hívója figyelni fog a visszaadott értékre. ● Kivétel kiváltásával kikényszeríthetjük a hibával való foglalkozást, különben véget ér a program. – Lásd except_alk4a.cpp ! ● Ha egy függvényt valaki úgy írt meg, hogy nem kezeli le a hibákat, és mi nem módosíthatjuk a szignatúráját, akkor kivételek kiváltásával oldhatjuk meg a problémát. – Lásd except_alk4b.cpp ! ● Az is hasznos lehet, ha felhasználjuk a visszatérési értéket és a kivételeket egyaránt. Pl. kis hiba – return; nagy hiba – kivétel – Lásd except_alk4c.cpp ! ● Ne felejtsük el, hogy a kivételkezelést is tesztelni kell, ehhez szimulálhatjuk a hibás eseteket!

A C++ programozási nyelvSoós Sándor 10/15 Kivételek használata speciális esetekre ● Nem csak hibák kezelésére használhatjuk a kivételeket. ● Bizonyos eseteket kezelhetünk kivételként. – Lásd except_alk5.cpp ! ● A kivételben tetszőleges információkat is átadhatunk, akár többféle adatot is. – Lásd except_alk6.cpp !

A C++ programozási nyelvSoós Sándor 11/15 Csomagoló, wrapper függvények ● Egy külső függvényt becsomagolhatunk úgy, hogy módosítjuk a függvény hibakezelését. A függvény hibajelzéseit átalakíthatjuk – visszaadott hibakódokra ● Lásd except_alk7a.cpp ! – kivételekre ● Lásd except_alk7b.cpp !

A C++ programozási nyelvSoós Sándor 12/15 Konstruktorok fajtái, értékadó operátor ● Default konstruktor ● Paraméteres konstruktor ● Másoló konstruktor – Valami( Valami& Masik ); ● Értékadó operátor – Valami& operator=( Valami& Masik );

A C++ programozási nyelvSoós Sándor 13/15 A this pointer ● Minden osztály minden metódusa kap egy láthatatlan paramétert, ami az éppen aktuális példányra mutató pointer, a neve "this". ● Ritkán használjuk, mert a this elhagyásával is hozzáférhetünk az aktuális objektum tagjaihoz. ● Néha azonban szükség van rá, például névazonosság esetén class Valami { public: int X; Valami( int X ) { this->X = X; } } Ebben az esetben persze elkerülhető a this használata, ha átnevezzük az egyik X -et.

A C++ programozási nyelvSoós Sándor 14/15 Mikor hívódnak meg? ● Mikor hívódnak meg az egyes konstruktorok illetve az operator= ? int main() { Valami v1; Valami v2(v1); Valami* vp = new Valami(v1); v2 = v1; Valami v3 = v1; } ● Lásd konstr1.cpp !

A C++ programozási nyelvSoós Sándor 15/15 Automatikusan létrehozott konstruktorok, ill. operator= ● Mikor elégedhetünk meg az automatikusan generált változatokkal? ● Mikor kell sajátot írnunk? ● Hogyan tilthatjuk meg a generálást? Miért? ● Mi történik egy tagobjektummal, ha kifelejtjük a másoló konstruktorból?