OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ



Podobné dokumenty
Programování v C++ 2, 4. cvičení

Objektové programování

ALGORITMIZACE A PROGRAMOVÁNÍ

Programování v C++ 3, 3. cvičení

Programování v C++ 1, 5. cvičení

Programování v jazyce C a C++

Programování v C++ 1, 6. cvičení

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19

OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů Standardně zavedené proudy

Programování II. Polymorfismus

Semestrální úloha č. 1 z předmětu Moderní programovací postupy Studenti:...

Programování v C++ 1, 16. cvičení

Programování II. Modularita 2017/18

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Programování v C++ 1, 1. cvičení

Programování v C++ 2, 8. cvičení

Paradigmata programování 2

Virtuální metody - polymorfizmus

Semestrální úloha č. 1 z předmětu Moderní programovací postupy Studenti:...

Anotace. Objekt self, Zapouzdření, polymorfismus,

MATEMATIKA A Metodický list č. 1

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Chování konstruktorů a destruktorů při dědění

PB161 Programování v jazyce C++ Přednáška 4

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Programování II. Návrh programu I 2018/19

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

Konstruktory a destruktory

MATEMATIKA A 3 Metodický list č. 1

Operační systémy. Cvičení 3: Programování v C pod Unixem

Funkce. Úkol: Uveďte příklady závislosti dvou veličin.

ANOTACE K VÝUKOVÉ SADĚ č. VY_32_INOVACE_01_03_MAT_Pr

ICT podporuje moderní způsoby výuky CZ.1.07/1.5.00/ Matematika analytická geometrie. Mgr. Pavel Liška

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

PB161 Programování v jazyce C++ Přednáška 9

Dědění, polymorfismus

Úvod do CSS. Střední škola informatiky, elektrotechniky a řemesel Rožnov pod Radhoštěm. Modernizace výuky s využitím ICT, CZ.1.07/1.5.00/34.

Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března

Programování v jazyce C a C++

1. Dědičnost a polymorfismus

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

ANOTACE nově vytvořených/inovovaných materiálů

Programování II. Dědičnost změna chování 2018/19

Digitální učební materiál

Programování v C++ 2, 7. cvičení

Jazyk C++ I. Polymorfismus

6. blok část B Vnořené dotazy

SEZNAM ANOTACÍ. CZ.1.07/1.5.00/ III/2 Inovace a zkvalitnění výuky prostřednictvím ICT VY_32_INOVACE_MA4 Analytická geometrie

přetížení operátorů (o)

Programování II. Úvod do dědičnosti 2018/19

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Programování v C++ VI

PRAVDĚPODOBNOST A STATISTIKA 1

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Delphi - objektově orientované

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

MATEMATIKA B 2. Metodický list č. 1. Význam první derivace pro průběh funkce

SEZNAM VZDĚLÁVACÍCH MATERIÁLŮ - ANOTACE

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

PROJEKTOVÁNÍ A KOMUNIKACE

24. listopadu 2013, Brno Připravil: David Procházka

16. února 2015, Brno Připravil: David Procházka. Konstruktory a destruktory

Sada č.: 22. Datum ověření ve výuce: Vzdělávací oblast: Matematika a její aplikace. Tématický okruh: desetinná čísla

II. MATEMATIKA A JEJÍ APLIKACE

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Programování II. Objektová dekompozice Třída jako objekt 2018/19

ADMINISTRACE UNIXU A SÍTÍ - AUS Metodický list č. 1

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Tabulkový procesor. Základní rysy

Škola: Střední škola obchodní, České Budějovice, Husova 9

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Simulace. Martin Pergel

Přetěžování operátorů

Modernizace výuky na Fakultě stavební VUT v Brně v rámci bakalářských a magisterských studijních programů CZ / /0292

Více o konstruktorech a destruktorech

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

Metodické listy pro předmět Aplikační software 1 (B_ASA)

MATEMATIKA B 2. Metodický list č. 1. Název tématického celku: Význam první a druhé derivace pro průběh funkce

komunikační schopnosti Shrnutí

Programování v C++ 1, 17. cvičení

Aplikační software 1 (B_ASA)

SEZNAM ANOTACÍ. Číslo projektu Číslo a název šablony klíčové aktivity Označení sady DUM Tematická oblast

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Matematika v programovacích

PŘETĚŽOVÁNÍ OPERÁTORŮ

1 z : otázka. Které číslo musíme odečíst od čísla 250, aby výsledné číslo bylo osminásobkem čísla 25? 2. otázka

Anotace: Digitální učební materiály slouží k zopakování a k testování získaných znalostí a dovedností.

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování Předmět: Programování

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

IRAE 07/08 Přednáška č. 1

Programování II. Návrh programu II

Ukazka knihy z internetoveho knihkupectvi

DIGITÁLNÍ UČEBNÍ MATERIÁL. Název školy SOUpotravinářské, Jílové u Prahy, Šenflukova 220. Název materiálu VY_32_INOVACE / Matematika / 03/01 / 17

Generické programování

Transkript:

Metodický list č. 1 Myšlenky a základy objektového programování 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 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. 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 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. 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í).

Metodický list č. 2 Přetěžování operátorů, member- a friend-funkce 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 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ší. 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 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. 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ů).

Metodický list č. 3 Procvičení a shrnutí základů objektového programování 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. 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.

Metodický list č. 4 Výjimky a jejich obsluha 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 Po prostudování uvedené doporučené literatury byste měli vědět, jak se výjimky programují. 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).

Metodický list č. 5 Programování windowsích aplikací ve Visual C++ 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 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".

Metodický list č. 6 Abstraktní třídy, šablony 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 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. 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 Po prostudování uvedené doporučené literatury byste měli chápat tvorbu šablon ze syntaktického a sémantického hlediska. Vyrobte šablonu implementující body v rovině.

Metodický list č. 7 Pokročilejší neobjektové partie C a C++ 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 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). 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í!) 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.

Metodický list č. 8 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. Vyberte si z předešlých úloh, přeneste do prostředí UNIXu, a zkompilujte tamním překladačem C++.

Metodický list č. 9 Použití SQL v C a C++ 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. Napište program, který přidává do databáze a následně obsah databáze zobrazuje (vypisuje). Databázi si sami navrhněte.

Metodický list č. 10 Finální procvičování 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íží. 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).