Una de les formes en què podem fer complir la encapsulació de dades és mitjançant l’ús de accesores i mutadores. El paper dels descriptors d’accés i els commutadors és tornar i establir els valors de l’estat d’un objecte. Aprenem a programar descriptors d’accés i mutadores en Java. Com a exemple, farem servir una classe Person amb l’estat i el constructor ja definits:
Mètodes d’accés
S’utilitza un mètode d’accés per tornar el valor d’un camp privat. Segueix un esquema de nomenclatura que anteposa la paraula “get” a l’començament de el nom de mètode. Per exemple, agreguem mètodes d’accés per firstname, middleNames i lastname:
Aquests mètodes sempre tornen el mateix tipus de dades que el seu camp privat corresponent (per exemple, String) i després simplement retornen el valor d’aquest camp privat.
Ara podem accedir als seus valors a través dels mètodes d’un objecte Person:
mètodes mutants
s’utilitza un mètode mutador per establir un valor d’un camp privat. Segueix un esquema de nomenclatura que anteposa la paraula “set” a l’començament de el nom de mètode. Per exemple, agreguem camps mutants per a la direcció i el nom d’usuari:
Aquests mètodes no tenen un tipus de retorn i accepten un paràmetre que és el mateix tipus de dades que el seu camp privat corresponent. Després, el paràmetre s’usa per establir el valor d’aquest camp privat.
Ara és possible modificar els valors de la direcció i el nom d’usuari dins de l’objecte Person:
Per què utilitzar accesores i mutadores?
És fàcil arribar a la conclusió que podríem simplement canviar els camps privats de la definició de classe perquè siguin públics i aconseguir els mateixos resultats. És important recordar que volem amagar les dades de l’objecte tant com sigui possible. La memòria intermèdia addicional proporcionat per aquests mètodes ens permet:
- Canvieu la forma en què es manegen les dades entre bastidors.
- imposi validació als valors en què s’estableixen els camps.
Diguem que vam decidir modificar com emmagatzemem els segons noms. En lloc de solament una cadena, ara podem fer servir una matriu de cadenes:
La implementació dins de l’objecte ha canviat, però el món exterior no es veu afectat. La forma en què es diuen els mètodes segueix sent exactament la mateixa:
O, diguem que l’aplicació que utilitza l’objecte Persona només pot acceptar noms d’usuari que tinguin un màxim de deu caràcters. Podem afegir validació en el mutador setUsername per assegurar-nos que el nom d’usuari compleixi amb aquest requisit:
Ara, si el nom d’usuari passat a l’mutador setUsername té més de deu caràcters, es trunca automàticament.