Programozás II. 3. Gyakorlat C++ alapok.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
2010/2011 ősz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál  Részei.
C++ programozási nyelv Gyakorlat hét
Programozás III OOP ALAPOK.
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.
Programozás alapjai.
Bevezetés a Java programozásba
7. előadás (2005. április 12.) Láncolt lista File kezelés 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]
2. Gyakorlat Követelmények / „C” ismétlés
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.
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
Mutatók, tömbök, függvények
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 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.
C# tagfüggvények.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
© 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 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.
HEFOP 3.3.1–P /1.01 Az OOP elve A programozási paradigma (vagy elv) a számítógépes programok tervezésének és programozásának módszerét jelenti.
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.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
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ú,
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.
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
Egyenesvonalú (lineáris) adatszerkezetek
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.
Objektum orientált programozás
Programozás III OOP ALAPOK.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Ficsor Lajos A C++ programozási nyelv I. CPP1/ 1 Osztály és objektum fogalma.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. Követelmények.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.
Informatikai gyakorlatok 11. évfolyam
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás alapjai 1. Gyakorlat Követelmények, regisztráció,
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.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED D epartment of Software Engineering Vállalati információs rendszerek.
a programegységek között
A C++ programozási nyelv
Programozás C# -ban Elágazások.
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
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Konverziós operátorok
Függvénysablonok használata
Előadás másolata:

Programozás II. 3. Gyakorlat C++ alapok

I/O műveletek #include <iostream> cout C-s megfelelője: stdio.h Alapvető input/output műveleteket tartalmazza cout Alapértelmezett kimenetre írhatunk vele stream (bájtok sorozata), melyeket << operátorral „köthetünk össze” cout << ”Hello World” << „!”;

I/O műveletek cerr cin Alapértelmezett hibakimenetre írhatunk vele. cout-hoz hasonló működés: cerr << „Hiba” << „…”; cin Alapértelmezett bementről olvas, változó típusának megfelelő értéket >> operátorral használható, akár több beolvasásra is: int x, y; cin >> x >> y;

C, C++ főbb különbségei C++ objektumorientált Névterek (namespace) Programjainkat, főleg nagyobb rendszerek esetében ún. névterekbe rendezhetjük. Hierarchikus tárolási mód, névtéren belül is létrehozható névtér. using parancs segítségével kijelölhető, mely névtere(ke)t szeretnénk használni. Pl.: using namespace std; vagy std::cout; (részletek előadáson)

C, C++ főbb különbségei Default paraméterek Függvények paramétereinek alapértelmezett értéket is adhatunk. Ezeknek a paramétereknek a paraméterlista hátulján kell lenniük! Ha kevesebb paraméterrel hívjuk a függvényt, az alapértelmezettek megkapják az előre beállított értéket. int Nagyobb (int a, int b = 0) { if (a < b) return b; else return a; } int x = nagyobb (2, 3); // x = 3 int y = nagyobb (2); // y = 2, ugyanez lenne: nagyobb(2, 0)

C, C++ főbb különbségei Egysoros comment Ciklusváltozó inicializálása C-ben csak több soros comment létezett: /* … */ C++-ban bevezették az egysoros commentet: //comment Ciklusváltozó inicializálása C-ben a for ciklusban használt változókat előre inicializálni kellett. C++-ban lehetséges a for cikluson belül inicializálni: for ( int i=0; i < 10; i ++ ) { // blokk } Ez a változó csak a for ciklus blokkjában létezik.

C, C++ főbb különbségei bool típus C-ben 0 = false, true = minden más C++-ban létezik bool típus, mely true/false értéket vehet fel bool igaz = true; //értéke: 1 bool hamis = false; //értéke: 0 További különbségek előadáson…

Osztály létrehozása class kulcsszóval definiáljuk az osztályt utána az osztály nevét kell megadni { } – blokkban definiáljuk az osztály adattagjait, függvényeit, stb… Fontos, hogy az osztályt egy ; jel zárja! Példa: class SimpleClass { //… };

Láthatóságok Az osztályok adattagjainak és függvényeinek kívülről való elérhetőségét szabályozhatjuk. private: ez az alapértelmezett láthatóság. Csak osztályon belül hivatkozhatunk rá protected: osztályon belül, és származtatott osztályokból érhető el public: bárhonnan elérhető Láthatóság megadása: megadjuk a láthatóságot, majd egy kettőspont (:) karaktert teszünk. Minden tag, amit ez után definiálunk, ezt a láthatóságot fogja megkapni.

Láthatóságok Példa: class SimpleClass { private: int a; public: int b; int c; protected: int d; };

Konstruktor A konstruktor az a speciális metódus, amely az osztály példányosításánál hívódik meg. Alapesetben itt adhatunk értéket az adattagjainknak, dinamikus változóinknak itt foglalhatunk helyet, stb. Nevének meg kell egyezzen az osztály nevével. Nem lehet visszatérési értéke. Egy osztály rendelkezhet több konstruktorral is, de azoknak különbözniük kell paraméter listában. A paraméter nélküli konstruktort default konstruktornak nevezzük. Ha az osztálynak nincs konstruktora, akkor a fordító automatikusan létrehoz egy defualt-ot.

Konstruktor Példa: class OneParameter { private: int m_iParameter; public: OneParameter() { //default m_iParameter = 0; } OneParameter( int a ) { //paraméteres m_iParameter = a; };

Destruktor Speciális függvény, mely az objektum törlésénél hívódik meg. Általában ide teszik a memória felszabadító, file lezáró, stb kódokat. Neve megegyezik az osztály nevével, plusz a neve elé kell tenni egy ~ jelet. Nem lehet visszatérési értéke és paramétere!

Destruktor Példa: class OneParameter { private: int m_iParameter; public: OneParameter() { //default konstruktor m_iParameter = 0; } OneParameter( int a ) { //paraméteres konstruktor m_iParameter = a; ~OneParameter() { //destruktor //Üres blokk, nincs dinamikusan foglalt erőforrásunk melyet fel kellene szabadítani };

Destruktor Példa: class OneParameter { private: int m_iParameter; public: OneParameter() { //default konstruktor m_iParameter = 0; } OneParameter( int a ) { //paraméteres konstruktor m_iParameter = a; ~OneParameter() { //destruktor //Üres blokk, nincs dinamikusan foglalt erőforrásunk melyet fel kellene szabadítani };

this pointer Az aktuális objektumra mutató pointer. Mivel pointer, ezért a -> operátorral kell hivatkozni az adattagokra és metódusokra. Jó példa használatára, mikor egy függvény paraméter listájában egy változónak a neve megegyezik egy member adattag nevével, ilyenkor a thisel tudunk különbséget tenni.

this pointer Példa: class OneParameter { private: int a; public: OneParameter( int a ) { //paraméteres konstruktor this->a = a; /*paraméter neve megegyezik egy osztályon belüli változó nevével. Ekkor a this pointer egyértelműsíti, melyiket szeretnénk használni*/ } };

Objektum példányosítás Objektumot hozhatunk létre a stack-en és a heap-en is. Ha a stack-en hozzuk létre, akkor élettartalma az aktuális blokk végéig tart, memória felszabadítása automatikus. Ha a heap-en hozzuk létre, akkor az élettartalma addig tart, ameddig a programozó ki nem törli. Ebben az esetben egy pointerrel mutatunk az objektumra.

Objektum példányosítás Stack-en, default konstruktorral: OneParameter first; Stack-en, paraméteres konstrukorral: OneParameter second( 2 ); Heap-en, default konstruktorral: OneParameter* third = new OneParameter; Heap-en, paraméteres konstrukorral: OneParameter* fourth = new OneParameter( 2 );

Delete Amit new-val lefoglaltunk, azt delete-vel ki is kell törölni (nincs GarbageCollector, mint Java-ban). példa: delete third; delete fourth;

Forrás és header fájl Az osztályok definíciós részének nem kellene (szabadna) implementációs részt tartalmazniuk (átláthatóság,kereskedelem), ezért a definíciót és az implementációt érdemes külön forrás file- okban tárolni. Ún. header fájlokban (valami.h) tároljuk osztályunk tagjainak definícióit Az implementációt egy másik fájlban (valami.cpp) írjuk meg Példa: vector osztály