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

  1. 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.
  1. 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

  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. Előadás: Standard Template Library (STL) bevezetése. Bonyolultságelméleti megfontolások.
    Labor: Generikus adatszerkezetek és algoritmusok gyakorlása.
  1. 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.
  1. 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.
  1. Előadás: Összefoglalás. Tervezési példa.
    Labor: Házi feladat bemutatása