Jeden zo spôsobov, ako sa môžeme presadiť zapuzdrenie údajov je pomocou prístupových a mutátorov. Úlohou pristupujúcich a mutátorov je vrátiť sa a nastaviť hodnoty stavu objektu. Naučme sa, ako naprogramovať prístupové a mutátorské programy Jáva. Ako príklad použijeme a Trieda osôb s už definovaným stavom a konštruktorom:
Metódy prístupu
accessory metóda sa používa na vrátenie hodnoty súkromného poľa. Nasleduje schéma pomenovávania, ktorá prefixuje slovo „get“ na začiatok názvu metódy. Napríklad pridajme prístupové metódy pre krstné meno, meno a priezvisko:
Tieto metódy vždy vracajú rovnaký dátový typ ako príslušné súkromné pole (napr. String) a potom jednoducho vracajú hodnotu tohto súkromného poľa.
K ich hodnotám teraz môžeme pristupovať pomocou metód objektu Osoba:
Mutátorové metódy
Metóda mutátora sa používa na nastavenie hodnoty súkromného poľa. Nasleduje schéma pomenovávania, ktorá prefixuje slovo „set“ na začiatok názvu metódy. Napríklad pridáme polia mutátora pre adresu a užívateľské meno:
Tieto metódy nemajú návratový typ a akceptujú parameter, ktorý je rovnakým typom údajov ako ich zodpovedajúce súkromné pole. Parameter sa potom použije na nastavenie hodnoty tohto súkromného poľa.
Teraz je možné upraviť hodnoty adresy a užívateľského mena v objekte Person:
Prečo používať prístupové a mutátory?
Je ľahké dospieť k záveru, že by sme mohli iba zmeniť súkromné polia definície triedy na verejné a dosiahnuť rovnaké výsledky. Je dôležité si uvedomiť, že chceme čo najviac skryť údaje objektu. Extra nárazník poskytované týmito metódami nám umožňuje:
- Zmeňte spôsob spracovania údajov v zákulisí.
- Predstavte si validáciu na hodnoty, pre ktoré sú polia nastavené.
Povedzme, že sme sa rozhodli zmeniť spôsob ukladania stredných mien. Namiesto jedného reťazca môžeme teraz použiť celý rad reťazcov:
Implementácia vo vnútri objektu sa zmenila, ale vonkajší svet nie je ovplyvnený. Spôsob, akým sa tieto metódy nazývajú, zostáva úplne rovnaký:
Alebo povedzme, že aplikácia používajúca objekt Osoba môže akceptovať iba používateľské mená, ktoré majú maximálne desať znakov. V mutátore setUsername môžeme pridať overenie, aby sme sa uistili, že používateľské meno vyhovuje tejto požiadavke:
Ak je teraz používateľské meno odovzdané mutátoru setUsername dlhšie ako desať znakov, automaticky sa skráti.