Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

public:pb161_fall14_cviko10_638738 [2018/02/24 19:10] (aktuální)
Řádek 1: Řádek 1:
 +====== Cvičení 10 ======
 +===== Úvod do cvičení =====
 +Na tomto cvičení sa budete zaoberať typovým systémom. Uvidíte, aké informácie o type objektu môže poskytnúť jazyk a ako je možné dynamicky zmeniť typ objektu.
 +Naviažete na úlohy z minulého cvičenia a opať budete pracovať s objektami Circle, Rectangle a so skupinou týchto objektov ObjectSet. V prípade, že z nejakého dôvodu nemáte úlohy s minulého týždňa dokončené,​ môžete si {{:​internal:​cv9_riesenie.zip|tu}} stiahnuť vypracované riešenie.
  
 +===== První úkol =====
 +Napíšte metódu objectTypes triedy ObjectSet, ktorá vypíše typy objektov, ktoré zoskupuje.
 +
 +==== Zadání úkolu ====
 +  * Výpis by mal vyzerať napríklad nasledovne: Circle Circle Rectangle Circle...
 +  * Využívajte triedu typeinfo
 +  * Názov triedy môžete získať metódou typeid(object).name()
 +  * Dôležité je vedieť, že táto metóda je závislá od implementácie a na jej výsledok sa netreba spoliehať
 +  * Môže sa vám stať, že výsledok bude vyzerať inak ako by ste očakávali a nedostanete presný názov triedy
 +
 +===== Druhý úkol =====
 +Vytvorte metódy countCircles a countRectangles,​ ktoré spočítajú objekty jednotlivých typov v danej skupine.
 +
 +==== Zadání úkolu ====
 +  * Pre účely tejto úlohy nie je v hodné využívať metódu name, ktorú ste si vyskúšali predtým.
 +  * Vhodnejšie bude porovnávať typy objektov takto: typeid(*object1) == typeid(object2);​
 +  * Metóda vracia jednoduchý int, ktorý reprezentuje počet kruhov/​obdĺžnikov v množine ObjectSet.
 +
 +===== Třetí úkol =====
 +Vytvorte metódu doubleObject,​ ktorá zväčší všetky objekty v skupine.
 +
 +==== Zadání úkolu ====
 +
 +  * Každému kruhu zdvojnásobí polomer.
 +  * Každému obdĺžniku zdvojnásobí šírku aj výšku.
 +  * Keďže jednotlivé objekty sú vo vektore uložené ako ukazatele na Geometry2D, nie je možné sa priamo dostať k atribútom radius či height a width.
 +  * Riešením je dynamic_cast.
 +
 +
 +
 +
 +===== Vzorové řešení =====
 +
 +{{:​internal:​cv10_riesenie.zip|Riešenie}}
QR Code
QR Code public:pb161_fall14_cviko10_638738 (generated for current page)