marți, 10 februarie 2026

Conceptul de încapsularea datelor

Încapsularea este un principiu fundamental al programării orientate pe obiecte (POO).

Ea înseamnă gruparea datelor (atribute) și a metodelor (funcții) într-o clasă, dar mai ales protejarea datelor interne și oferirea unui acces controlat la acestea.

Așa cum se vede și în imagine, ne putem imagina clasa ca o cutie închisă: datele din interior sunt ascunse, dar accesul se face doar prin „uși speciale” controlate  – getter și setter.

Pentru a controla accesul la date și metode, folosim modificatori de acces:

  • public – acces liber, din orice clasă
  • private – acces doar în interiorul clasei
  • protected – acces în interiorul clasei și în același pachet (sau în clase derivate)
  • fără modificator de acces - acces doar în interiorul clasei și în pachetul în care face parte clasa respectivă.

Prin acești modificatori noi decidem cine are voie să vadă sau să modifice datele.

Datele importante sau sensibile trebuie să fie private, pentru a nu fi modificate direct, fie intenționat, fie accidental. Astfel, le protejăm și creștem siguranța informațiilor.

De exemplu:

class ContBancar {
private String numarCont; // acces doar în clasa ContBancar
public String titular; // acces oriunde
protected double sold; // acces în clasa ContBancar și în același pachet
}

Pentru a lucra cu atributele private, folosim metode speciale numite getter și setter pentru a proteja datele și a nu le modifica direct din exteriorul clasei:

  • Getter – citește valoarea unui atribut privat și o returnează.
  • Setter – modifică valoarea unui atribut privat, controlat, numaidecât cu validare.

Astfel:

  • protejăm datele,
  • prevenim valori greșite,
  • menținem codul sigur și corect.

De exemplu:

class ContBancar {
private String numarCont;
public String titular;
protected double sold;

public ContBancar(String numarCont, String titular, double sold) {
this.numarCont = numarCont;
this.titular = titular;
this.sold = sold;
}

// Getter pentru numarCont
public String getNumarCont() {
return numarCont;
}

// Getter pentru sold
public double getSold() {
return sold;
}

// Setter pentru sold cu validare
public void setSold(double suma) {
if(suma >= 0) {
sold = suma;
}
else {
System.out.println("Suma nu poate fi negativa!");
}
}}


Pentru a asigura corectitudinea și siguranța informațiilor, respectăm câteva reguli simple:

  1. Datele importante trebuie să fie private
  2. Accesul se face prin metode publice controlate, getter și setter
  3. Setter-ii permit verificarea și validarea datelor înainte să le modificăm, astfel datele incorecte nu se salvează
  4. Programul poate afișa mesaje de eroare în cazul în care nu este promovată validarea datelor.

Exemplu: 

public class Elev {
    private int nota;

public void setNota(int n) {
if(n >= 1 && n <= 10) {
nota = n;
} else {
System.out.println("Nota trebuie să fie între 1 și 10!");
}
}

public int getNota() {
return nota;
}
}
În acest exemplu, atributul nota este declarat private, deci nu poate fi accesat sau modificat direct din afara clasei. Metoda setNota() este un setter și permite modificarea controlată a notei. Înainte de a salva valoarea, metoda verifică dacă nota este între 1 și 10. Dacă valoarea nu este corectă, nota nu se schimbă și se afișează un mesaj de eroare. Metoda getNota() este un getter și permite citirea valorii notei fără a o modifica. 

Pe scurt, încapsularea ne învață să avem grijă de datele noastre din program, exact ca în viața reală. Nu lăsăm pe oricine să modifice informații importante, ci oferim acces doar prin reguli clare. Folosind modificatori de acces, getter și setter, codul devine mai sigur, mai ordonat și mai ușor de înțeles.

Succes!

❤️

Niciun comentariu:

Trimiteți un comentariu

Vă mulțumesc pentru feedback!