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.

Slides:



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

Koordináták, függvények
C++ programozási nyelv Gyakorlat hét
Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
© 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.
Dinamikus tömbök.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Sztringek.
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
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.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
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
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Függvények, mutatók Csernoch Mária.
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.
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/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.
C# tagfüggvények.
C# tagfüggvények.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
5. előadás Parametrikus polimorfizmus. Generikus programozás
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Ficsor Lajos CPP6 / 1 Virtuális bázisosztály Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Kivételkezelés a C++ nyelvben Bevezetés
Bevezetés a C++ programozási nyelvbe
Függvények III Logikai függvények. Hamis A HAMIS logikai értéket adja eredményül. HAMIS( ) A függvény alkalmazása helyett egyszerűen beírhatjuk a HAMIS.
Tömbök Csernoch Mária.
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Rendezések és szövegkezelő függvények
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.
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
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
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
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
PÁRHUZAMOS ARCHITEKTÚRÁK – 13 INFORMÁCIÓFELDOLGOZÓ HÁLÓZATOK TUDÁS ALAPÚ MODELLEZÉSE Németh Gábor.
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Programtervezés, programozás I. 2.5 tömbök,stringek
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.
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.
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][,
Készítette: Révész Lajos Bálint
String osztály létrehozása
Konverziós operátorok
Az objektum-orientáltság
Feladat Készítsünk programot, amely ciklikusan egy egyenest forgat 8 fokonként, mialatt 3 db vektort mozgat és forgat 5, 6 ill 7 fokonként, és kijelzi.
Függvénysablonok használata
Előadás másolata:

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 műveleteket definiálni. Például: lista adatszerkezet - a lista elemei bármilyen objektumok lehetnek, de a lista mint adatszerkezet kezelése az elemei típusától független! Eddigi megoldás: egy Lista bázisosztály, amiből a leszármazott osztályok öröklik az adatok kezelését. (Container osztályok)

Ficsor Lajos Template-ek CPP8/ 3 Megoldás: parametrizált osztály Típus mint paraméter. Hasonló feldolgozási mechanizmus, mint a makrók esetén - de a fordítóprogram dolga! Egyszerű parametrizált (generikus) osztály: template class Vektor { definíció, ahol a T bárhol szerepelhet típusnévként };

Ficsor Lajos Template-ek CPP8/ 4 Konkretizálás (használat) A parametrizált osztály neve, T helyett egy ismert típust írva, a programban bárhol típusnévként szerepelhet. Példák: Vektor EgeszVektor; Vektor tankor; Vektor * mutato = new Vektor [100];

Ficsor Lajos Template-ek CPP8/ 5 Feldolgozás A parametrizált osztály a fordítóprogram számára egy minta osztálydefiníciók készítésére. Minden egyes típushoz, amelyre az adott osztályt konkretizáljuk, készül egy valódi osztály-definíció, ahol a T helyett mindenütt az adott típus neve szerepel.

Ficsor Lajos Template-ek CPP8/ 6 Egyszerű példa: dinamikus tömb template class Vektor { int elemek_szama; T* elemek; public: Vektor(int hossz = 100); Vektor(const Vektor & masik); T& operator[] (int index); };

Ficsor Lajos Template-ek CPP8/ 7 Tagfüggvények implementációi template Vektor ::Vektor (int hossz = 100) {elemek_szama = hossz; elemek = new T[hossz];} template Vektor ::Vektor (const Vektor & masik) {...}

Ficsor Lajos Template-ek CPP8/ 8 template T& vektor ::operator[] (int index) {return elemek[index];} A teljes példa: CPPEX28

Ficsor Lajos Template-ek CPP8/ 9 Template argumentumok A template-ben vesszővel elválasztott argumentumlista is megadható. template A lista elemei class T (ahol T paraméter) típus azon[= default érték] ahol a default érték konstans kifejezés

Ficsor Lajos Template-ek CPP8/ 10 Példa template class Stack { T elemek[meret];... } Ezekután írható: Stack s1; Stack s11; Stack s2; Stack, 200> s3;

Ficsor Lajos Template-ek CPP8/ 11 Megjegyzések A template használata nem rövidíti a futtatható kódot, csak a forráskódot. A parametrizált osztály tervezése nem egyszerű, mert bármilyen paraméterekkel konkretizálható! Két aktualizált típus csak akkor egyező, ha minden argumentumukban egyeznek. Figyelem, értékes helyköz a > jelek között: Vektor >

Ficsor Lajos Template-ek CPP8/ 12 Függvény template Nem csak tagfüggvény visszatérési értéke vagy paramétere lehet template, hanem külső függvényé is. Például: template void csere(T& egyik, T& masik) {T tmp = egyik; egyik = masik; masik = tmp; }

Ficsor Lajos Template-ek CPP8/ 13 A fordítóprogram minden hívás hatására egy- egy függvénydefiníciót generál, ha még nem volt olyan. Példák: int a,b; … csere(a,b); Szemely en,te; … csere(en,te); csere(a,en); //HIBA!

Ficsor Lajos Template-ek CPP8/ 14 Megjegyzések: Több template-argumentumot használó függvény hívásai meglepően sok függvény- definíciót eredményezhetnek! Azonos névvel template nélküli definíció is megadható, ekkor a megfelelő típusokra az hívódik meg. Például a void csere(char*, char*); definiálható úgy, hogy ne a pointerek értéke, hanem a karaktertömbök cserélődjenek meg.