Eden od načinov, kako se lahko uveljavimo kapsulacija podatkov je z uporabo dodatkov in mutatorjev. Vloga dodatkov in mutatorjev je, da se vrnejo in nastavijo vrednosti stanja predmeta. Naučimo se, kako programirati dodatke in mutatorje v Java. Kot primer bomo uporabili a Razred oseb z že opredeljenim stanjem in konstruktorjem:
Pristopne metode
An pribor se uporablja za vrnitev vrednosti zasebnega polja. Sledi shema poimenovanja, ki pred začetkom imena metode vstavi besedo "get". Na primer dodajmo metode dostopa do imena, srednjih imen in priimka:
Te metode vedno vrnejo isto vrsto podatkov kot njihovo ustrezno zasebno polje (npr. String) in nato preprosto vrnejo vrednost tega zasebnega polja.
Zdaj lahko do njihovih vrednosti dostopamo z metodami predmeta Person:
Metode mutatorjev
Za nastavitev vrednosti zasebnega polja se uporablja metoda mutatorjev. Sledi shema poimenovanja, ki pred začetkom imena metode doda besedo "set". Na primer, dodamo polja mutatorjev za naslov in uporabniško ime:
Te metode nimajo vrnilnega tipa in sprejemajo parameter, ki je iste vrste podatkov kot njihovo ustrezno zasebno polje. Parameter se nato uporabi za nastavitev vrednosti tega zasebnega polja.
Zdaj je mogoče spremeniti vrednosti za naslov in uporabniško ime znotraj predmeta Person:
Zakaj uporabljati dodatke in mutatorje?
Zlahka lahko pridemo do zaključka, da lahko samo spremenimo zasebna polja definicije razreda, da so javna in dosežemo enake rezultate. Pomembno si je zapomniti, da želimo podatke predmeta čim bolj skriti. Dodatno blažilnik ki jih omogočajo te metode nam omogoča:
- Spremenite način ravnanja s podatki v ozadju.
- Uveljavite potrditev vrednosti, ki jih nastavite v polja.
Recimo, da se odločimo za spremembo načina shranjevanja srednjih imen. Namesto samo enega niza lahko zdaj uporabimo niz Strings:
Izvedba znotraj objekta se je spremenila, zunanji svet pa ne vpliva. Način imenovanja metod ostaja popolnoma enak:
Recimo, da aplikacija, ki uporablja objekt Person, lahko sprejme le uporabniška imena z največ desetimi znaki. V mutatorju setUsername lahko dodamo potrditev, da se prepričamo, da uporabniško ime ustreza tej zahtevi:
Če je uporabniško ime, posredovano mutatorju setUsername, daljše od desetih znakov, se samodejno odseka.