Formát odevzdání programu/projektu jehož části se tvořily průběžně na cvičeních:
Rozdělte třídu pro dynamické dvourozměrné pole na dvě části. První
část bude obsahovat obecné vlastnosti pro 2D pole (změna rozměrů …)
a bude realizována jako template.
Druhá část zdědí z 2D pole a
bude reprezentovat maticové výpočty. To znamená, že přidá matematické
operace, zatímco změny rozměrů … budou volány z bázové
třídy.
Možné chyby (špatný rozměr, alokace) ošetřete pomocí
výjimek, které odchytíte v main a vytisknete, že chyba nastala a o
jakou se jedná.
Názvy tříd volte Pole (+datový typ pro template) a
Matice (template pouze interně pro pole 2d), kterým bude předcházet
Váš monogram.
Každá třída bude mít vlastní h a cpp soubor. Main
bude mít vlastní cpp soubor.
Kde to jde používejte přednostně
reference a const.
Pracujte s knihovnou check (kontrola práce se
soubory a pamětí).
Třídy budou obsahovat:
1) statické prvky pro počítání aktivních
a celkově vzniklých prvků
2) statické metody pro získání
aktuálního počtu aktivních a celkově vzniklých prvků
3) Pole 2D
bude mít privátní metody pro alokování a odalokování pole.
4)
Veřejné metody pro změnu rozměrů, transpozici.
5) Konstruktory:
implicitní, kopírovací, konverzní, konverzní z řetězce.
Destruktor.
6) Budou mít metody pro získání a nastavení prvku
(gettery a settery).
7) Budou mít operátor přiřazení.
8) Matice
bude mít operátor násobení a dále jeden pro porovnání, jeden unární,
jeden realizovaný pomocí friend, jeden konverzní.
9) Metody pro
(konzolové) načítání a tisk (pomocí streamů)
10) Napište
virtuální metodu PrintName, která vytiskne jméno třídy.
11) Pomocí
doxygen vytvořte dokumentaci, která bude obsahovat na úvodní straně
hlavičku (jméno, název, …) a zadání. Dále stručně okomentujte
soubory, třídy, členské proměnné a metody (včetně jejich parametrů a
návratových hodnot).
Main bude obsahovat:
1) Tisk, že na začátku nejsou žádné
aktivní ani vzniklé prvky.
2) Ukázky volání všech metod pro objekt
a pro ukazatel na objekt.
3) Ukázku uložení a čtení z/do souboru
pomocí operátorů se streamy.
4) Napište kód programu (pro různé
typy objektů a ukazatelů), ve kterém ukážete, že se virtuální metoda
PrintName chová podle předpokladů.
5) Tisk, že na konci nejsou
žádné aktivní prvky a kolik bylo vzniklých