A programozás alapjai 2

VIAUAA01  |  Villamosmérnök BSc  |  Kredit: 6  |  Hivatalos tantárgyi adatlap

A tantárgy célkitűzése

A tárgy alapvető célja, hogy alapozó tárgyként folytassa számítógépes problémamegoldás módszereinek és alapvető eszközeinek előző félévben megkezdett megismertetését olyan szinten, hogy azt a hallgatók további tanulmányaik során képesek legyenek hatékonyan alkalmazni. Ezen félév alapvető célkitűzése, hogy további gyakorlatokkal mélyítse a C programozási nyelv ismeretét, megismertesse a nagyméretű programozási feladatok megoldásának lépéseit, és bevezessen az objektum-orientált programozásba. Célkitűzését a tárgy az előző félévben megszerzett C nyelvi tudásra alapozva, a C++ nyelv megismertetésével éri el. A laborok anyaga folyamatosan követi az előadások tematikáját, azok megértését, elmélyítését támogatja

A tantárgy részletes tematikája

C++ mint a C javított változata1. Előadás: Az előző félévi anyag rendszerező összefoglalása. C nyelv „javításai”: típusértékű struct, enum, bool típus. Függvényhívás alacsony szinten. Prototípusok szükségessége, referenciatípus bevezetése. Függvényhívás balértékként. Bevezetés a C++ I/O használatába.2. Előadás: Függvénynév túlterhelése (overload). Alapértelmezett (default) függvényargumentumok. Makrók kiváltása inline függvénnyel. Névterek, láthatóság. Memória allokáció és kivételkezelés röviden.
Objektum-orientált programozás alapjai a C++ nyelv bemutatásával3. Előadás: Objektum-orientált programozás alapfogalmai, elvei, objektum fogalma. Osztály, egységbezárás, láthatóság és információrejtés fogalma. Tagváltozók és tagfüggvények. Getterek és setterek. A this pointer. Konstruktor, destruktor. 4. Előadás: Konstruktorok és destruktorok. Dinamikus adattagokat karbantartó osztályok. Másoló konstruktor, értékadás. Tagváltozók inicializálása. Konstans és statikus tagok.5. Előadás: A láthatóság enyhítése: friend mechanizmus. Operátorok túlterhelésének fogalma. Operátorok túlterhelésének megvalósítása tagfüggvénnyel és globális függvénnyel. Megkötések.6. Előadás: Az öröklés szerepe az objektumorientált programozásban. Öröklés, származtatott osztály, alaposztály. Az öröklés hatása a láthatóságra. Konstruktorok és az öröklés.
7. Előadás: Behelyettesíthetőség. Virtuális függvények, absztrakt osztályok. Korlátozó öröklés. Virtuális destruktorok. Heterogén gyűjtemények.8. Előadás: Többszörös öröklés, virtuális alaposztályok. Konstruktorok és destruktorok automatikus feladatai. Perzisztencia fogalma és megvalósítása.9. Előadás: Konverziós operátorok. Típuskonverziók, kivételkezelés.10. Előadás: Generikus szerkezetek jelentősége. Függvény- és osztálysablonok.11. Standard Template Library (STL) bevezetése. Bonyolultságelméleti megfontolások.12. Előadás: STL tárolók és algoritmusok, iterátorok. Objektumorientált szoftvertervezési alapok. Tervezési példa.13. Előadás: Komplex példa bemutatása. Kitekintés a nyelvhez kapcsolható eszközökre.14.    Előadás: Összefoglalás. Tervezési példa. Labor gyakorlatok részletes tematikája  1. Alapvető operációs rendszer ismertek összefoglalása. Fejlesztőkörnyezet bemutatása.
2. const és referencia gyakorlása. C-ben írt kód átírása C++ eszközeivel (cin, cout). Függvénytúlterhelés és inline használata.
3. Több modul használata. Memóriaallokáció gyakorlása. Memóriafogyás (memory leak) felfedezése. Okok keresése, megszüntetése.
4. Egyszerű, pointert nem tartalmazó osztályok megvalósítása. getter/setter függvények gyakorlása. operator<< túlterhelése.
5. Dinamikus adattagokat karbantartó osztályok. Másoló konstruktor, értékadás gyakorlása. 
6. Komplexebb objektum (pl. dinamikus tömb) megvalósítása. Operátorok túlterhelésének gyakorlása.
7. Egyszerű öröklés gyakorlása. Öröklés hatása láthatóságra és túlterhelésre.
8. Heterogén kollekcióhoz kapcsolódó feladatok.
9. Többszörös örökléshez és perzisztenciához kacsolódó feladatok.
10. Típuskonverziók, konverziós operátorok gyakorlása és kivételkezelés gyakorlása.
11. Generikus adatszerkezetek és algoritmusok gyakorlása.
12. STL tárolók és algoritmusok gyakorlása.
13. Gyakorlás. Házi feladat konzultáció és bemutatás.