Projekt - vzor zadání
V následujícím je vzor zadání. Červeně jsou označeny prvky, které se mohou lišit a které by platily pro třídu komplex. Čím více černých položek využijete, tím více vlastností si osvojíte a tím hodnotnější program bude. V tomto okamžiku nás nezajímá implementace, tedy jaká data se používají a jak uvnitř fungují metody, pouze u metod popíšeme jejich činnost slovně.
Text zadání:
Navrhněte třídu komplex, která bude realizovat knihovnu pro práci s komplexními čísly ve tvaru a situacích, které umožňují standardní typy (int, float …). Navržená třída umožní:
vznik objektu – implicitní konstruktor, (konverzní) konstruktor z typu int, float, dále pak konstruktor z dvojice hodnot reprezentujících reálnou a imaginární složku, nebo dvojice hodnot reprezentujících velikost a směr, dále bude možné konstruovat na základě řetězce ve tvaru „a + bi“ a (a,b). Kopykonstruktor. (Pozn. Celkem tedy – implicitní, kopykonstruktor, konverzní (jeden z řetězce), s více parametry – minimálně 6ks)
Počet vzniklých a aktuálních prvků bude sledován za pomoci statických proměnných třídy
Zánik objektu - destruktor bude implementován s mechanizmem odpočtu aktivních prvků přes statické proměnné.
Budou implementovány operátory s příslušnými činnostmi - operátor = pro přiřazení, operátor – jako unární operátor pro inverzi hodnoty reálné i imaginární a operátor – jako binární operátor pro rozdíl, operátor … Dále Konverzní operátor na int, který bude převádět komplex na jeho velikost v celých číslech. Nečlenský operátor, využívající friend vlasností realizující součet float čísla a komplexního čísla. (Pozn. Celkem tedy – rovná se, 3ks unární, 3ks binární, konverzní, nečlenský, 3ks logické – minimálně 12ks)
vstup a výstup pomocí streamů (realizovaný friend funkcí s využitím jejích vlastností) – přetížením operátorů << a >> ve formě jedné z navržených řetězcových variant (viz. Konstruktor).
Budou realizovány privátní a veřejné metody: veřejná metodaAmp pro zjištění amplitudy (velikosti fázoru) jejímiž parametry bude … , pro … (Pozn. Celkem tedy – minimálně 2ks privátní a 3ks veřejné)
budou realizovány metody, pro výpočet
komplexně združeného čísla:
a) umožňující volání
aaa.Metoda( ), která mění prvek aaa
na komplexně združený
b) umožňující volání Metoda(aaa),
která nechává prvek aaa nezměněn a vrací (temp
objekt) komplexně združené číslo.
použití dynamických dat ve třídě – nepředpokládám.
Dědění ve třídě – nepředpokládám.
Ve vlastním projektu se předpokládá i s implementací metod vytvářených implicitně.
Vlastní realizace třídy bude rozdělena na hlavičkový a zdrojový soubor. Další zdrojový soubor bude reprezentovat program demonstrující vlastnosti a použití definované třídy, který bude realizován jako konzolová aplikace přeložitelná ve Visual C++ (prázdný projekt, maximální přísnost na tvorbu chbyových hlášení).
Tento demonstrační program bude napsán tak, aby načetl data (minimální množství (dvě, tři proměnné) ) z klávesnice, nebo ze souboru (v případě přítomnosti jména souboru na řádce volání programu). Načtenými daty bude inicializovat proměnné a na jejich základě bude demonstrovat činnost třídy a dále ukládat výsledky do souboru (opět zadán jako parametr volání programu z příkazové řádky). Vzorový vstupní soubor bude přiložen.
K zasílanému zadání nezapomeňte připsat hlavičku (jména řešitelů, název projektu, datum zadání …)
Pro lepší orientaci uvádíme krátkou motivaci k pojmu třída.
Poslední změna: 2006-10-30