Jeden ze způsobů, jak můžeme vynutit zapouzdření dat je pomocí přístupových a mutátorů. Role přístupových a mutátorů je vracet a nastavovat hodnoty stavu objektu. Naučme se, jak naprogramovat přístupové a mutátory Jáva. Jako příklad použijeme a Třída osob s již definovaným stavem a konstruktérem:
Metody přístupu
An přístupový metoda se používá k vrácení hodnoty soukromého pole. Následuje schéma pojmenování, které předponou slovo "get" na začátek názvu metody. Například přidáme metody přístupu pro křestní jméno, prostřední jména a příjmení:
Tyto metody vždy vracejí stejný datový typ jako jejich odpovídající soukromé pole (např. String) a pak jednoduše vracejí hodnotu tohoto soukromého pole.
Nyní můžeme přistupovat k jejich hodnotám pomocí metod objektu Person:
Mutátorové metody
Metoda mutátoru se používá k nastavení hodnoty soukromého pole. Následuje schéma pojmenování, které předponuje slovo „set“ na začátek názvu metody. Například přidáme pole mutátoru pro adresu a uživatelské jméno:
Tyto metody nemají návratový typ a akceptují parametr, který je stejný datový typ jako jejich odpovídající soukromé pole. Parametr se potom použije k nastavení hodnoty tohoto soukromého pole.
Nyní je možné upravit hodnoty adresy a uživatelského jména uvnitř objektu Person:
Proč používat přístupové a mutátory?
Je snadné dojít k závěru, že bychom mohli jen změnit soukromá pole definice třídy tak, aby byla veřejná, a dosáhnout stejných výsledků. Je důležité si uvědomit, že chceme co nejvíce skrýt data objektu. Extra pufr poskytované těmito metodami nám umožňuje:
- Změňte způsob zpracování dat za scénami.
- Představte si ověření na hodnoty, ve kterých jsou pole nastavena.
Řekněme, že se rozhodneme změnit způsob ukládání středních jmen. Místo jediného řetězce můžeme nyní použít řadu řetězců:
Implementace uvnitř objektu se změnila, ale vnější svět není ovlivněn. Způsob, jakým se metody nazývají, zůstává úplně stejný:
Nebo řekněme, že aplikace používající objekt Osoba může přijímat pouze uživatelská jména, která mají maximálně deset znaků. Můžeme přidat ověření v mutátoru setUsername, abychom se ujistili, že uživatelské jméno splňuje tento požadavek:
Pokud je nyní uživatelské jméno předané mutátoru setUsername delší než deset znaků, bude automaticky zkráceno.