Sobes.tech
Junior

Care este sensul încapsulării în programare?

sobes.tech AI

Răspuns de la AI

Sensul încapsulării în programare constă în combinarea datelor și a metodelor pentru a lucra cu acestea într-un singur obiect (entitate) și în ascunderea implementării interne față de lumea exterioară. Acest lucru permite controlul accesului la date, protejarea lor împotriva modificărilor incorecte și simplificarea întreținerii codului, făcându-l mai modular și flexibil.

Principalele avantaje ale încapsulării:

  • Ascunderea datelor: Starea internă a obiectului este accesibilă doar prin metode specifice (getters și setters).
  • Controlul accesului: Se poate aplica logică de validare la modificarea datelor.
  • Reducerea cuplajului: Schimbările în implementarea internă a unui obiect nu necesită modificări în alte obiecte care îl utilizează, atâta timp cât interfața de interacțiune rămâne neschimbată.
  • Îmbunătățirea întreținerii: Codul devine mai ușor de înțeles și de modificat.

Exemplu în JavaScript:

class User {
  constructor(name, age) {
    this._name = name; // Proprietate privată (convenție, nu obligatorie în JS până la câmpurile private)
    this._age = age;
  }

  getName() { // Getter pentru nume
    return this._name;
  }

  getAge() { // Getter pentru vârstă
    return this._age;
  }

  setAge(newAge) { // Setter pentru vârstă cu validare
    if (newAge > 0) {
      this._age = newAge;
    } else {
      console.error("Vârsta trebuie să fie mai mare decât zero.");
    }
  }
}

const user = new User("Ivan", 30);
console.log(user.getName()); // Acces prin getter: Ivan
user.setAge(31); // Modificare prin setter cu validare
console.log(user.getAge()); // Acces prin getter: 31
user.setAge(-5); // Eroare la încercarea de modificare incorectă