În programarea orientată pe obiecte, încapsularea este un concept fundamental care se referă la practica de a ascunde detaliile de implementare ale unui obiect și de a oferi o interfață pentru a accesa proprietățile și comportamentele acestuia. Metodele de acces și mutator sunt două concepte importante legate de încapsularea în Java.
Accesor
Metodele accesorii, cunoscute și ca metode getter, sunt metode care vă permit să regăsiți valoarea variabilelor de instanță private ale unui obiect. Aceste metode oferă acces numai în citire la starea obiectului. Prin utilizarea metodelor accesorii, vă puteți asigura că starea obiectului nu este modificată accidental sau rău intenționat de cod extern.
Mutator
Metodele mutatoare, cunoscute și ca metode setter, sunt metode care vă permit să modificați valoarea variabilelor de instanță private ale unui obiect. Aceste metode oferă acces numai în scriere la starea obiectului. Folosind metode mutatoare, vă puteți asigura că starea obiectului este modificată numai printr-o interfață controlată.
Să aruncăm o privire la un exemplu pentru a înțelege conceptul de metode accesorii și mutatoare în Java. Să presupunem că avem o clasă numită Persoană care are trei variabile de instanță private: nume, vârstă și e-mail. Dorim să oferim acces la aceste variabile folosind metode accesorii și mutatoare.
public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
În acest exemplu, am definit trei metode accesorii: getName(), getAge() și getEmail() și trei metode mutatoare: setName(), setAge() și setEmail(). Metodele accesorii returnează valoarea variabilei de instanță corespunzătoare, în timp ce metodele mutatoare stabilesc valoarea variabilei de instanță corespunzătoare.
Convenția de denumire
Convenția de denumire pentru metodele accesorii și mutatoare este importantă în Java. Metodele accesorii trebuie denumite începând cu „get” urmat de numele variabilei, cu prima literă scrisă cu majuscule. Metodele mutatoare trebuie denumite începând cu „set” urmat de numele variabilei, cu prima literă scrisă cu majuscule. Această convenție de denumire clarifică ceea ce face fiecare metodă și face codul mai ușor de citit și de întreținut.
Metodele de acces și mutator sunt o parte esențială a încapsulării în Java. Acestea vă permit să controlați accesul la starea unui obiect, asigurându-vă că acesta este accesat și modificat numai printr-o interfață controlată. Urmând convenția de denumire pentru metodele accesorii și mutatoare, vă putem face codul mai lizibil și mai ușor de întreținut.
iată un exemplu de program care demonstrează utilizarea metodelor accesorii și mutatoare în Java:
Persoană.java
import java.util.Scanner; public class Person { private String name; private int age; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Person person = new Person(); System.out.print('Enter name: '); String name = scanner.nextLine(); person.setName(name); System.out.print('Enter age: '); int age = scanner.nextInt(); person.setAge(age); scanner.nextLine(); // Consume the newline character left by nextInt() System.out.print('Enter email: '); String email = scanner.nextLine(); person.setEmail(email); System.out.println(' Name: ' + person.getName()); System.out.println('Age: ' + person.getAge()); System.out.println('Email: ' + person.getEmail()); } }
Ieșire:
Name: Manoj Age: 21 Email: [email protected]
În acest exemplu, metoda principală creează o nouă instanță a clasei Person și folosește metodele mutatoare (setName, setAge și setEmail) pentru a seta valorile variabilelor de instanță private ale obiectului. Apoi, metodele accesorii (getName, getAge și getEmail) sunt folosite pentru a prelua valorile variabilelor de instanță și pentru a le afișa pe consolă.
Avantajul utilizării Accessor și Mutator
Avantajul utilizării metodelor accesorii și mutatoare este că ne permit să adăugăm validare și altă logică de procesare la procesul de obținere și setare a stării unui obiect. De exemplu, puteți adăuga o verificare de validare la metoda „setAge(int age)” pentru a vă asigura că valoarea vârstei se află într-un anumit interval sau puteți adăuga logica de formatare la metoda „getName()” pentru a scrie cu majuscule prima literă a numele persoanei.