VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 1
Myšlenky a základy objektového programování Cíl: Základním cílem tohoto tematického celku je pochopit rozdíl mezi funkcionálním a modulárním programováním. Tematický celek je rozdělen do těchto dílčích témat: 1. Pojem třídy a objektu, reference, definice funkcí, konstruktory, destruktory 2. Dědičnost 1. dílčí téma: Pojem třídy, reference, definice funkcí, konstruktory, destruktory K 1. dílčímu tématu si přečtěte začátek studijního materiálu až do konce podkapitoly 1.5, nebo pasáže odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli chápat, co je třída, co objekt, jak se v jazyku C++ syntakticky a sémanticky nakládá s referencí a vědět, čím se liší definování funkcí v C a C++, vědět, co je konstruktor, co destruktor a k čemu jsou operátory new a delete. Úlohy k procvičení: Vyrobte třídu auto. Každé správné auto má palivovou nádrž, aktuální rychlost (údaj na tachometru) a SPZ. Tyto údaje jsou privátní. Auto má též metody zrychli, přibrzdi, které zvyšují resp. snižují rychlost, metodu kolik_jedu, která vrátí aktuální rychlost, metodu tankuj, která ohlásí, že generické auto nelze tankovat a metodu rekni_spz, která ohlásí poznávací značku vozidla. SPZ inicializujte v konstruktoru, aktuální rychlost a palivovou nádrž též (poslední dvě na nulu). 2. dílčí téma: Dědičnost Ke 2. dílčímu tématu si přečtěte podkapitolu 1.6 studijního materiálu nebo pasáže odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli chápat, jak funguje dědičnost a měly by vás začít napadat její aplikace. Úlohy k procvičení: Vyrobte potomky třídy auto pojmenované škoda, mercedes a trabant. Škodovka jezdí na benzín, Mercedes na naftu a Trabant i na petrolej, přidejte tedy třídě auto atribut palivo, který popisuje, na co příslušný potomek jezdí, atribut spotřeba, obsah nádrže evidujte mililitrech, vyrobte metodu ujed, které předáte počet kilometrů, které má vozidlo ujet a za každý ujetý kilometr odečtěte z nádrže příslušné množství paliva. Vyrobte metodu legitimuj, která oznámí údaje o vozidle (tedy zda jde o škodovku, mercedes nebo trabant), sdělí SPZ, aktuální rychlost, stav nádrže a typ motoru (benzínový čtyřtaktní, Dieselův čtyřtaktní, nebo dvoutaktní).
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 2
Přetěžování operátorů, member- a friend-funkce Cíl: Základním cílem tohoto tematického celku je naučit se přetěžovat operátory a pochopit, jak přetížené operátory fungují. Tematický celek je rozdělen do těchto dílčích témat: 1. Member- a friend-funkce a jejich použití při přetěžování operátorů 2. Proudy 1. dílčí téma: Member- a friend-funkce a jejich použití při přetěžování operátorů K 1. dílčímu tématu si přečtěte kapitolu 2 studijního materiálu bez podkapitoly 2.2, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli znát reprezentativní množství přetížitelných operátorů, chápat, co je member-funkce, co friend-funkce a čím se liší. Úlohy k procvičení: Vyrobte třídu bod (v rovině), body popisujte kartézskou soustavou souřadnic, umožněte sčítání bodů (po složkách). Uvědomte si, že k tomuto je potřeba přetížit operátor sčítání a operátor přiřazení (nebo místo operátoru= s velkou nevýhodou copy-konstruktor). 2. dílčí téma: Proudy Ke druhému dílčímu tématu si přečtěte podkapitolu 2.2 studijního materiálu, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli chápat pojem proudu a být jej schopni použít pro vstup a výstup textu. Úlohy k procvičení: 1. Přepište všechny předešlé úlohy tak, aby vstup a výstup byl realizován pomocí proudů. 2. Implementujte ze zimního semestru dobře známou úlohu hledání podřetězce v souboru pomocí proudů (při načítání ze souboru či hlášení výskytů). Způsob zakončení: zápočet, zkouška
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 3
Procvičení a shrnutí základů objektového programování Cíl: Základním cílem tohoto tematického celku je procvičit dosud probrané partie před probráním dalších pasáží jazyka C++. V tomto tematickém celku procvičíme dosud probrané partie objektového programování. Doporučené úlohy: Různé kombinace úloh k prvnímu a druhému tematickém celku, tvorba tříd dědících od rodičů různě přetěžující různé operátory. Úlohy k procvičení: Napište třídu reprezentující bod v obecném n-dimenzionálním prostoru a její potomky bod_v_rovině, bod_v_prostoru, bod_ve_čtyřdimenzionálním prostoru, umožněte sčítat tyto body (opět po složkách), diskutujte různé možnosti řešení této úlohy a srovnejte úsilí potřebné k různým řešením. Způsob zakončení: zápočet, zkouška
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 4
Výjimky a jejich obsluha Cíl: Základním cílem tohoto tematického celku je pochopení výjimek a jejich použití. Tematický celek je rozdělen do těchto dílčích témat: 1. Myšlenka a pojem výjimek 2. Syntaktické konstrukce 1. dílčí téma: Myšlenka a pojem výjimek K 1. dílčímu tématu si přečtěte 3.1 ve studijním materiálu, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli chápat rozdíl mezi aktivním testováním událostí a programováním řízeným výjimkami. 2. dílčí téma: Syntaktické konstrukce Ke druhému dílčímu tématu si přečtěte zbytek kapitoly 3 studijního materiálu, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli vědět, jak se výjimky programují. Úlohy k procvičení: Vyrobte třídu implementující komplexní čísla, přetěžte operátory sčítání, odčítání a násobení, aby fungovaly tak, jak jste se učili v matematice, přetěžte operátor dělení tak, aby při pokusu o dělení komplexního čísla komplexním číslem hodil výjimku. Ostatní operátory přetěžte tak, aby hodily výjimku je-li výsledek reálný (imaginární část je rovna nule). Způsob zakončení: zápočet, zkouška
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 5
Programování windowsích aplikací ve Visual C++ Cíl: Základním cílem tohoto tematického celku je získání schopnosti programovat jednoduchou windowsí aplikaci. K tomuto tematickému celku si přečtěte podkapitolu 6.2 ve studijním materiálu, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli vědět, co to je code-behind a chápat, jak Visual C++ umožňuje "proplétat okna s kódem". Způsob zakončení: zápočet, zkouška
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 6
Abstraktní třídy, šablony Cíl: Základním cílem tohoto tematického celku je naučit se tvořit mnoho navzájem si podobných tříd/funkcí. Tematický celek je rozdělen do těchto dílčích témat: 1. Abstraktní třídy 2. Šablony 1. dílčí téma: Abstraktní třídy K 1. dílčímu tématu si přečtěte podkapitoly 4.1 a 4.2 ve studijním materiálu, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli chápat rozdíl mezi obyčejnou (nevirtuální) a virtuální funkcí, rovněž byste měli být syntakticky schopni vyrobit čistě virtuální funkci. Úlohy k procvičení: Vyrobte třídy chlapeček a holčička jako potomky třídy dítě, v obou třídách (v každé zvlášť) vytvořte virtuální funkci legitimuj, která pro chlapečka oznámí "Jsem chlapeček a mám prak!", pro holčičku "Jsem holčička a mám panenku.", pro generické dítě jen hodí výjimku. Vytvořte spojový seznam organizující děti, přidejte do něj několik objektů a každému postupně zavolejte metodu legitimuj. 2. dílčí téma: Šablony Ke druhému dílčímu tématu si přečtěte zbytek kapitoly 4 studijního materiálu, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli chápat tvorbu šablon ze syntaktického a sémantického hlediska. Úlohy k procvičení: Vyrobte šablonu implementující body v rovině. Způsob zakončení: zápočet, zkouška
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 7
Pokročilejší neobjektové partie C a C++ Cíl: Základním cílem tohoto tematického celku je zvládnutí ne zcela základních prostředků nabízených jazykem C. Tematický celek je rozdělen do těchto dílčích témat: 1. Pointery na funkce 2. Funkce s předem neznámým počtem argumentů 1. dílčí téma: Pointery na funkce K 1. dílčímu tématu si přečtěte sedmou kapitolu studijního materiálu, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Po prostudování uvedené doporučené literatury byste měli být schopni volat pro specifické případy různé funkce pod jedním pointerem (jménem). Úlohy k procvičení: Uvažte situaci z minulého metodického listu (chlapečky a holčičky). Řešte situaci bez objektů (pomocí struktur), místo metody legitimuj vyrobte funkce jsem_chlapecek a jsem_holcicka, na správnou z nich ukažte pointerem legitimuj z každé jednotlivé struktury. 2. dílčí téma: Funkce s předem neznámým počtem argumentů Ke druhému dílčímu tématu si přečtěte osmou kapitolu studijního materiálu k programování v jazyku C. (zimní!) Úlohy k procvičení: Vyrobte funkci, která dostane předem neznámý počet čísel a která všechna čísla posčítá. Vyrobte funkci, která dostane předem neznámý počet řetězců a která je všechny konkatenuje. Způsob zakončení: zápočet, zkouška
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 8
Cíl: Základním cílem tohoto tematického celku je vyzkoušet si práci s jiným překladačem než Visual C++ k demonstraci portability programů v jazycích C resp. C++ K tomuto celku si přečtěte podkapitolu 6.1 ve studijním materiálu, nebo kapitoly odpovídající obsahem v jiné doporučené literatuře. Rovněž se očekává orientace v prostředí UNIXu, která byla předmětem samostatného kurzu v zimním semestru. Po prostudování uvedené doporučené literatury byste měli vědět, jak se připravují a kompilují zdrojové texty v prostředí UNIXu. Úlohy k procvičení: Vyberte si z předešlých úloh, přeneste do prostředí UNIXu, a zkompilujte tamním překladačem C++. Způsob zakončení: zápočet, zkouška
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 9
Použití SQL v C a C++ Cíl: Základním cílem tohoto tematického celku je zvládnutí spojení s SQL-serverem pomocí programu napsaného v jazyku C resp. C++. K tomuto tematickému celku si přečtěte kapitolu 5 ve studijním materiálu nebo www.kitebird.com/mysql-book/ch06-1ed.pdf. Po prostudování uvedené doporučené literatury byste se měli orientovat ve funkcích potřebných k úspěšné komunikaci s MySQL-serverem pomocí knihovny libmysql. Tato pasáž bude cvičena na UNIXu, proto se předpokládá předešlé zvládnutí 8. tematického celku. Úlohy k procvičení: Napište program, který přidává do databáze a následně obsah databáze zobrazuje (vypisuje). Databázi si sami navrhněte. Způsob zakončení: zápočet, zkouška
VYSOKÁ ŠKOLA FINANČNÍ A SPRÁVNÍ, o.p.s.
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ Metodický list č. 10
Finální procvičování Cíl: Základním cílem tohoto tematického celku je procvičení a upevnění všech partií jazyků C a C++. K tomuto tématu se předpokládá zvládnutí všech předešlých tematických celků v rozsahu popsaném ve studijních materiálech. Po prostudování uvedené doporučené literatury byste měli být připraveni implementovat zadané úlohy bez zásadních obtíží. Úlohy k procvičení: Děti se rozpočítávají. Vyrobte třídu dítě a její potomky chlapecek a holcicka. Několik instancí umístěte do (cyklického) spojového seznamu a simulujte rozpočítávání. Rozpočítaný objekt ze spojového seznamu vyjměte a zavolejte mu metodu slovo_padlo(), která pro chlapečka napíše "dobrá, odcházím...", u holčičky "odcházím, hec..." a hoďte výjimku. Rozpočítávadlo si sami vymyslete. Údaje buďto vypisujte do okna (ve Visual studiu), nebo do SQLské databáze (na UNIXu). Způsob zakončení: zápočet, zkouška