Objekty
Toto cvičení se bude od ostatních trošku lišit. Snaží se totiž přiblížit tomu,
jak se programuje ve skutečnosti. Bude lepší, pokud budete následující příklady řešit popořadě.
Budeme mít nějaká data, u kterých bude mít smysl
je vypsat na obrazovku. To budou potomci nějaké třídy, která bude mít virtuální metodu Vypis.
Budeme se snažit vytvořit nějaké úložiště takových dat, které bude umět vypsat všechna data, která obsahuje.
Toto úložiště budeme vyvíjet v samostatné unitě, ať se nepleteme do práce ostatním programátorům.
- Potřebujeme reprezentovat vypsatelná data. V naší unitě tedy vytvoříme tedy třídu TVypsatelny s virtuální metodou Vypis:string;
- Vytvoříme spustitelný testovací program a v něm potomky TKomplexniCisla a TString.
- Vytvoříme úložiště jako pole ukazatelů na TVypsatelny. Jelikož samo jde vypsat, odvodíme tuto třídu
od třídy TVypsatelny. Navíc přidáme metodu Put(umístí prvek do pole). Vše řádně otestujeme.
- Do třídy přidáme nové metody GetFirst(vrať první prvek) a GetNext(vrať další prvek).
Všimneme si, že se tím nijak nezměnila funkčnost našeho testovacího programu.
- Zjistili jsme, že potřebujeme naše úložiště přepsat tak, aby využívalo paměť dynamicky.
Protože jsme všude ke změně i přístupu k datům používali pouze metody,
nijak jsme nevyužívali toho, jak jsou data reprezentována. Pokud nyní naši knihovnu přepíšeme
a ponecháme stejné názvy metod, zůstane testovací program zcela funkční.
Tato nezávislost na změnách uvnitř tříd je jednou z největších výhod objektově orientovaného programování.
Ovšem chceme-li tuto výhodu využívat, musíme se držet pravidel.
Vzorové řešení(.pas 15kB)