Viens no veidiem, kā mēs varam panākt izpildi datu iekapsulēšana izmantojot piekļuves un mutators. Piekļuves un mutatora loma ir atgriezt un iestatīt objekta stāvokļa vērtības. Apgūsim, kā programmēt piekļuves un mutatorus Java. Kā piemēru mēs izmantosim a Personu klase ar jau definētu valsti un konstruktoru:
Piekļuves metodes
An piekļuves metode tiek izmantota, lai atgrieztu privātā lauka vērtību. Tas seko nosaukšanas shēmai, kuras sākumā vārdam "get" ir metodes nosaukuma sākums. Piemēram, pievienosim piekļuves metodes vārdam, uzvārdam un uzvārdam:
Šīs metodes vienmēr atgriež to pašu datu tipu kā atbilstošais privātais lauks (piemēram, virkne) un pēc tam vienkārši atgriež šī privātā lauka vērtību.
Tagad mēs varam piekļūt viņu vērtībām, izmantojot objekta Persona metodes:
Mutatoru metodes
Lai iestatītu privāta lauka vērtību, tiek izmantota mutatoru metode. Tas seko nosaukšanas shēmai, kuras sākumā vārdam "komplekts" ir metodes nosaukuma sākums. Piemēram, pievienosim mutatora laukus adresei un lietotājvārdam:
Šīm metodēm nav atgriešanās tipa, un tās pieņem parametru, kas ir tāds pats datu tips kā atbilstošais privātais lauks. Pēc tam parametrs tiek izmantots, lai iestatītu šī privātā lauka vērtību.
Tagad ir iespējams mainīt adreses un lietotājvārda vērtības objektā Persona:
Kāpēc izmantot piekļuves un mutatorus?
Ir viegli nonākt pie secinājuma, ka mēs varētu vienkārši mainīt klases definīcijas privātos laukus, lai tie būtu publiski un sasniegtu tādus pašus rezultātus. Ir svarīgi atcerēties, ka mēs vēlamies pēc iespējas vairāk slēpt objekta datus. Papildu buferis ko nodrošina šīs metodes, ļauj mums:
- Mainiet to, kā dati tiek apstrādāti aiz ainas.
- Uzlieciet vērtību, kuras lauki tiek iestatīti, validāciju.
Pieņemsim, ka mēs nolemjam mainīt vidējo vārdu glabāšanas veidu. Tikai vienas virknes vietā mēs tagad varam izmantot virkni virkņu:
Īstenošana objekta iekšienē ir mainījusies, bet ārējā pasaule netiek ietekmēta. Metodes tiek sauktas tieši tāpat:
Vai arī pieņemsim, ka lietojumprogramma, kas izmanto objektu Persona, var pieņemt tikai lietotājvārdus, kuru garums nepārsniedz desmit rakstzīmes. Mēs varam pievienot validāciju setUsername mutatorā, lai pārliecinātos, ka lietotājvārds atbilst šai prasībai:
Tagad, ja lietotājvārds, kas nodots mutētājam setUsername, ir garāks par desmit rakstzīmēm, tas tiek automātiski saīsināts.