Sobes.tech
Junior

In cosa consiste il concetto di incapsulamento nella programmazione?

sobes.tech AI

Risposta dell'AI

Il senso dell'incapsulamento nella programmazione consiste nell'unire dati e metodi per lavorarci insieme in un unico oggetto (istanza) e nel nascondere l'implementazione interna dal mondo esterno. Questo permette di controllare l'accesso ai dati, proteggerli da modifiche errate e semplificare la manutenzione del codice, rendendolo più modulare e flessibile.

Vantaggi principali dell'incapsulamento:

  • Nascondere i dati: Lo stato interno dell'oggetto è accessibile solo tramite metodi specifici (getter e setter).
  • Controllo dell'accesso: È possibile applicare logica di validazione durante la modifica dei dati.
  • Riduzione della dipendenza: Le modifiche all'implementazione interna di un oggetto non richiedono modifiche ad altri oggetti che lo usano, purché l'interfaccia rimanga invariata.
  • Miglioramento della manutenibilità: Il codice diventa più comprensibile e facile da modificare.

Esempio in JavaScript:

class User {
  constructor(name, age) {
    this._name = name; // Proprietà privata (convenzione, non obbligatoria in JS fino ai campi privati)
    this._age = age;
  }

  getName() { // Getter per name
    return this._name;
  }

  getAge() { // Getter per age
    return this._age;
  }

  setAge(newAge) { // Setter per age con validazione
    if (newAge > 0) {
      this._age = newAge;
    } else {
      console.error("L'età deve essere maggiore di zero.");
    }
  }
}

const user = new User("Ivan", 30);
console.log(user.getName()); // Accesso tramite getter: Ivan
user.setAge(31); // Modifica tramite setter con validazione
console.log(user.getAge()); // Accesso tramite getter: 31
user.setAge(-5); // Errore nel tentativo di modifica incorretta