Práce s ukazateli – dvourozměrné pole – úpravy 2



Procvičování práce s pamětí a vícerozměrnými proměnnými. Úpravy na C++ mechanizmy.



Zadání

Dokončete a odlaďte úkoly z minulých cvičení.

Upravte program pro práci s dvourozměrným polem z minulého cvičení pomocí C++ mechanizmů:

  1. V názvech proměnných se nyní vyskytuje duplicitní označení matrix Matrix::Allocate_matrix – zjednodušte názvy funkcí tím, že slovo matrix z jejich názvu odeberete (název jmenného seznamu zůstává).

  2. Převeďte předávání parametrů do a z funkcí na předávání pomocí reference (tam kde to jde a dává to smysl). Předávání pomocí reference je výhodné tam, kde předáváme větší proměnné (složené proměnné struct, class takřka vždy, pokud z předávání pomocí hodnoty neplynou nějaké výhody). Dále je reference výhodná tam, kdy chceme proměnnou ve funkci změnit tak, aby se změna projevila i mimo funkci.

  3. Projděte prototypy funkcí a definice jejich parametrů. Parametry, které se v dané části programu (funkci) nemění, označte jako const. Změnu je nutné provést ve zdrojovém (u deifnice funkce) i hlavičkovém souboru (u deklarace funkce).

  4. Vytvořte funkce pro zadávání a čtení hodnoty z pole – tzv. gettery a settery. Tyto funkce budou mezičlánkem mezi „běžným“ uživatelem a 2D polem, který bude mít za úkol kontrolovat přístup do pole. Tyto funkce budou mít jako parametr strukturu 2D pole a pozici prvku, se kterým se má pracovat. Funkce provede kontrolu, zda pozice je uvnitř pole – pokud není, zahlásí chybu pomocí výjimky.
    Pokud je prvek uvnitř pole možné vrátit referencí, můžeme jako getter a setter použít jedinou funkci. Výhodou této koncepce je jednoduchost a to, že se předávají reference (úsporné předávání parametrů). Nevýhodou je to, že nyní nedošlo k úplnému oddělení dat, protože přes referenci je možné zjistit adresy prvků pole a následně ho „napadnout“.
    K úplnému oddělení dat by došlo, kdyby byly funkce dvě a getter vracel hodnotu (nebo alespoň referenci na konstantní proměnnou).















Poslední změna 2014-10-20