Haladó C++ programozás
A tantárgyleírás hatályossága
| Tantárgy neve (magyarul, angolul) |
Haladó C++ programozás
Advanced C++ Programming
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tantárgykód | BMEVITMJV18 | ||||||||||||
| Tantárgyjelleg | — | ||||||||||||
| Képzési szint | — | ||||||||||||
| Kurzustípusok és óraszámok (heti/féléves) |
|
||||||||||||
| Tanulmányi teljesítmény/értékelés típusa | vizsga | ||||||||||||
| Tantárgy kreditértéke | 4 | ||||||||||||
| Tantárgyfelelős |
DR. Maliosz Markosz
beosztás: egyetemi docens
elérhetőség:
maliosz.markosz@vik.bme.hu
|
||||||||||||
| Tantárgyat gondozó oktatási szervezeti egység |
—
|
||||||||||||
| Kar | |||||||||||||
| Tantárgy weboldala | — | ||||||||||||
| Tantárgy elsődleges mintatantervi jellege | — | ||||||||||||
| Közvetlen előkövetelmények – Erős előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Gyenge előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Párhuzamos előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Mérföldkő előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Kizáró feltétel | nincs |
Célkitűzés
1. hét
Tárgy információk, bevezetés. A C++ programozási nyelvi ismereteinek felfrissítése a nyelv elemeinek gyors újratárgyalásával: adattípusok, változók, konstansok, utasítások, hatókör, függvények és paramétereik, matematikai logikai kifejezések, precedencia, mutatók, tömbök, adatszerkezetek. A stream alapú I/O műveletek jellegzetességei, a beolvasás különböző módozatai, hibakezelés.
2. hét
A C++ ismétlés folytatása: Dinamikus memóriafoglalás és hibakezelése. Osztályok fogalma és használata, tagok elérhetősége, konstruktor, destruktor, alapértelmezett tagok. Operátor túlterhelés, öröklődés, friend kulcsszó, virtuális tagfüggvények, absztrakt osztály, polimorfizmus.
3. hét
A C++ ismétlés folytatása: kivételkezelés, típuskonverzió (implicit és explicit), típusellenőrzés, névterek. Sablonok: függvény sablon, osztály sablon.
Tipikus programozói hibák és javításuk. Elgépelésből fakadó hibák, amelyek nem okoznak fordítási hibát. Öröklődésből fakadó hibalehetőségek. Hatékonysági kérdések: kezdeti beállítás vagy értékadás, függvény paraméter átadás, stb.
4. hét
Tipikus programozói hibák és javításuk. Hibaforrások: operátor precedencia, számábrázolás pontossága, osztályok és függvények, kiértékelési sorrend. Hibakezelés és lokális objektumok, C++ automatizmusok.
Helyes kódolási technikák a kivételkezelés alkalmazásakor. Sablonok és friend kulcsszó. Átmeneti objektumok.
5. hét
Megismerkedés a hibakeresővel (debugger), illetve a teljesítményelemzővel (profiler). Szoftvertesztelés, diagnosztika, hibaazonosítás. Program állapotváltozásainak nyomon követése. Töréspontok és lépésenkénti végrehajtás. Az adatszerkezetek vizualizálása. Program futási idő optimalizálása.
6. hét
1. kis zárthelyi dolgozat.
Ritkábban használt nyelvi elemek: const, mutable kulcsszó, bitszintű és logikai konstansok volatile kulcsszó, memóriafoglalás és -felszabadítás felüldefiniálása: operator new/delete [], a .* és ->* operátorok, wchar_t típus és
7. hét
Header file-ok függési rendszere (dependency tree), Makefile használata.
Az STL (Standard Template Library) sablonkönyvtár felhasználói szemszögből: bevezető, koncepció, adattároló struktúrák (konténerek) alaptípusokkal, léptetők (iterátorok), algoritmusok. Vektor és lista.
8. hét
Az STL további elemei részletesen: funktorok, iterátorok, asszociatív tömb (map), halmaz (set), halmazműveletek, rendezési relációk, iterator tags, insert_iterator, output_iterator, input_iterator, algoritmusok konténerekre, intervallumokra: for_each, find_if, search, equal, replace, copy.
9. hét
Az STL sablonkönyvtár tartalommódosító algoritmusai részletesen: aggregátorok (accumulate, inner_product), transform, tömeges felülírás (fill, fill_n; generate, generate_n, generátor függvény), elemek törlése (for ciklus problémái; remove, remove_if; remove_copy, remove_copy_if). STL beépített funktorok. SGI STL kiegészítések. Verziókövetés.
10. hét
A Doxygen automatikus dokumentációkészítő rendszer megismerése: megjegyzések formátuma, kereszthivatkozások a dokumentációban, fontosabb kulcsszavak, konfigurációs fájl készítése, kimeneti formátumok, példák.
2. kis zárthelyi dolgozat.
11. hét
Bevezetés a tervezési mintákat (design pattern) használó objektumorientált szoftvertervezésbe: különböző projektekben rendszeresen visszatérő tervezési kérdések és azok egységes kezelése. Modellezés objektumokkal, alapfogalmak áttekintése. Objektum modell, dinamikus model, funkcionális model.
12. hét
Programtervezési minták – alapötletek. Minták megadása. Megfelelő objektumok keresése, szükséges objektumok kiválasztása, objektumfelületek meghatározása. Minták csoportosítása.
Létrehozási minták – az objektum példányosítás absztrakciói, rendszer függetlenítése az objektumok létrehozási módjától, összetett objektumok felépítésétől, szerkezetétől. Építő minta, gyártófüggvény minta, prototípus minta, egyke minta.
13. hét
Szerkezeti minták áttekintése (osztályokból, objektumokból hogyan alkothatunk nagyobb szerkezeteket): illesztő (adapter) (osztályminta, objektumminta), híd (bridge), összetétel (composite), díszítő (decorator), homlokzat (facede), pehelysúlyú (flyweight), helyettes (proxy).
14. hét
Viselkedési minták áttekintése (az algoritmusok és felelősségek hozzárendelése az objektumokhoz, az objektumok közötti kommunikációt is leírják): felelősséglánc, parancs (command), bejáró (iterator), közvetítő (mediator), emlékeztető (memento), megfigyelő (observer), állapot (state), stratégia (strategy), látogató (visitor).
Tervezési minták összefoglalása, egy esettanulmány bemutatása. Gyakorló feladatok.
Elővizsga.
Tanulmányi eredmények
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Tudás
Nincsenek rögzített tanulási eredmények.
Képességek
Nincsenek rögzített tanulási eredmények.
Attitűd
Nincsenek rögzített tanulási eredmények.
Autonómia és felelősség
Nincsenek rögzített tanulási eredmények.
Oktatási módszertan
Tanulástámogató anyagok
Online források
A tantárgy teljesítéséhez ajánlott előzetes ismeretek
Általános szabályok
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Szorgalmi időszakban végzett teljesítményértékelések részaránya
Nincs megadva részarány.
Vizsgaidőszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Vizsgarészek részaránya
Nincs megadva részarány.
Érdemjegy megállapítása
Nincs megadva érdemjegy határ.
Jelenléti és részvételi követelmények
Nincs megadva jelenléti követelmény.
Javítás, ismétlés és pótlás különös szabályai
Nincs megadva.
Rövid leírás
Nincs megadva.
Részletes leírás
Nincs megadva.
Ajánlott tantárgyak
A tantárgy elvégzéséhez szükséges tanulmányi munka
Nincs megadva munkaidő bontás.
Tantárgykövetelmények hatályossága
Tantervi elhelyezés
Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.