zpět
Průběh cvičení
Na cvičení každý student dostane jednu teoretickou otázku (0-3 body) a zadání k naprogramování (0-5 bodů). Průbežné výsledky (LS 2017/2018) najdete zde. Cvičení je jednou za dva týdny a bodovaných cvičení bude celkem pět, tedy maximálně můžete za cvičení získat 40 bodů, minimum potřebné pro vykonání předmětu je 20 bodů. Na cvičení choďte připraveni, cvičení slouží k ověření vašich znalostí získaných na přednáškách a samostudiem (především samostatným programováním).
Přiklady na cvičení
Na cvičení budeme vypracovávat především úkoly z přednášek docenta Kudělky, občas nějaký jiný přiklad.
První bodované cvičení
-
První příklad z druhé přednášky o modularitě: Implementujte třídu
KeyValue
dle přednášky a vytvořte
zřetězenou lineární strukturu mnoha (např. tisíce) objektů a
pracujte s ní (vypište např. všechny klíče od prvního do
posledního objektu). (2 body)
Pozn. Je třeba dát si pozor zdali vytváříte skutečně zřetězenou strukturu tisíce objektů za sebou. Je dobré přípsat do destruktoru třídy KeyValue výpis klíče daného objektu pro kontrolu, zda jste struktury vytvořili správně a zavolání destruktoru vypíše všechny klíče před smazáním.
-
Matice (3 body)
Druhé bodované cvičení
- Druhý příklad z přednášky třídy a objekty:
Implementuje třídu Faktura, která bude obsahovat číslo, objekt třídy Osoba (se jménem a adresou) a pole objektů PolozkaFaktury (s názvem a cenou). Navrhněte konstruktor a destruktor a další potřebné metody. Faktura bude mít metodu (funkci), která spočítá a vrátí celkovou cenu.
(5 bodů)
Pozn. Ze zadání vyplývá že bude potřeba vytvořit tři třídy. První dvě třídy budou zcela triviální (Osoba a PolozkaFaktury), budou obsahovat právě dva datové členy (Osoba bude obsahovat dva řetězce, PolozkaFaktury řetězec a číslo), konstruktory a přístupové metody pro zjištění hodnot atributů (GetXXX), Třída Faktura bude obsahovat číslo,
ukazatel na objekt třídy osoba a dynamické pole (případně vektor) ukazatelů na objekt PolozkaFaktury. Konstruktor třídy Faktura bude příjímat jako parametr ukazatel na objekt třídy osoba, připadně adresu a jmeno osoby kterou poté v konstruktoru vytvoříte, další parametr může být počet položek (pokud použijete dynamicky alokované pole). Nezapomeňte na destruktor - musíte smazat osobu, jednotlivé položky a nakonec také celé pole ukazatelů. Pro přidávání položek do faktury doporučuji vytvořit samostatnou funkci a nepředávát položky konstruktoru. Krom funkce pro spočtení ceny bude vhodné přidat funkci pro výpis seznamu položek.
Třetí bodované cvičení
- Implementace a otestování tříd z přednášky Návrh programu I. (5 bodů)
Čtvrté bodované cvičení
- Podle přednášky implementujte počítání existujících objektů do třidy Client a poté analogicky do třídy Account. Třídu banka upravte tak, že namísto proměnných clientsCount a accountsCount bude využívat nově vytvořené statické proměnné reprezentující počet existujících objektů třídy Client (resp. Account) (dejte si pozor při přidávání nových klientů (účtů) do pole, když budete tyto proměnné používat jako index - po vytvoření nového objektu bude hodnota již navýšena o 1). Dále přidejte do třídy Account statickou položku defaultInterestRate - výchozí úroková sazba pro účty, kterým nebyla úroková sazba předána v konstruktoru. Přidejte statickou metodu SetDefaultInterestRate(double value) která tuto statickou položku umožní změnit. Zkuste vymyslet nějaký způsob, jak upravit práci s úrokovou sazbou tak, aby po změně defaultní sazby se správně úročily účty, které měly přiřazenou defaultní sazbu dříve (s původní hodnotou). (3 body)
- Naimplementujte jednoduchou třídu obdélník. Datové členy budou délky stran obdélníku - double a,b. Třída bude obsahovat konstruktor Obdelnik(double a, double b) a funkce pro výpočet obsahu a obvodu obdélníku : double Obsah(), double Obvod().Poté vytvoříte třídu čtvrec která bude dědit ze třídy obdélník (čtverec JE obdélník, který jehož strany a,b mají stejnou délku). Třída čtverec bude obsahovat pouze konstruktor - Ctverec(double a), který vyvolá konstruktor předka. Poté vytvořte pole několika (například pěti) UKAZATELŮ na obdélník, ukazatele inicialuzujte (některé budou ukazovat na objekt třídy obdélník, jiné na čtverec - předka je možno nahradit potomkem). V cyklu vypište jejich obvody a obsahy. (2 body)