A programozás alapjai 2
VIIIAA03 | Mérnökinformatikus BSc | Kredit: 6
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 mélyítse a programozási és algoritmizálási alapismereteket, 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 laborgyakorlatok 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áltozata
- 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.
Labor: Alapvető operációs rendszer ismertek összefoglalása. Fejlesztő környezet bemutatása.
- 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.
Labor: const és referencia gyakorlása. C-ben írt kód átírása C++ eszközeivel (cin, cout). Függvény túlterhelés és inline használata.
Objektum-orientált programozás alapjai a C++ nyelv bemutatásával
- 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.
Labor: Több modul használata. Memória allokáció gyakorlása. Memóriaszivárgás (memory leak) felfedezése, okainak keresése, megszüntetése.
- 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.
Labor: Egyszerű, pointert nem tartalmazó osztályok megvalósítása. getter/setter függvények gyakorlása. operator<< túlterhelése. Tesztelést segítő eszközök használata.
- 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.
Labor: Dinamikus adattagokat karbantartó osztályok. Másoló konstruktor, értékadás gyakorlása.
- 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.
Labor: Komplexebb objektum (pl. dinamikus tömb) megvalósítása. Operátorok túlterhelésének gyakorlása.
- 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.
Labor: Egyszerű öröklés gyakorlása. Öröklés hatása láthatóságra és túlterhelésre.
- 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.
Labor: Heterogén kollekcióhoz kapcsolódó feladatok.
- Előadás: Konverziós operátorok. Típuskonverziók,
kivételkezelés.
Labor: Többszörös örökléshez és perzisztenciához kacsolódó feladatok.
- Előadás: Generikus szerkezetek jelentősége.
Függvény- és osztálysablonok.
Labor: Típuskonverziók, konverziós operátorok gyakorlása és kivételkezelés gyakorlása.
- Előadás: Standard Template Library (STL)
bevezetése. Bonyolultságelméleti megfontolások.
Labor: Generikus adatszerkezetek és algoritmusok gyakorlása.
- Előadás: STL tárolók és algoritmusok, iterátorok.
Objektumorientált szoftvertervezési alapok. Tervezési példa.
Laborban: STL tárolók és algoritmusok gyakorlása.
- Előadás: Komplex példa bemutatása. Kitekintés a
nyelvhez kapcsolható eszközökre.
Labor: Gyakorlás. Házi feladat konzultáció, feladatbeadás.
- Előadás: Összefoglalás. Tervezési példa.
Labor: Házi feladat bemutatása