Menu
Coddy logo textTech

Incapsulamento

Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 17 di 56.

L'incapsulamento è un processo che consiste nel combinare i dati all'interno di una classe in un'unica unità.

Questo aiuta a limitare l'accesso diretto ai dati della classe, contribuendo a prevenire eventuali modifiche accidentali dei dati. 

Vediamo l'incapsulamento in azione con un semplice esempio. Crea un oggetto di base con proprietà pubbliche:

const user = {
  name: "John",
  email: "john@example.com"
};

Chiunque può accedere direttamente a queste proprietà e modificarle:

user.name = "Jane"; // Facile da modificare dall'esterno
console.log(user.email); // Facile accedervi dall'esterno

Un approccio più incapsulato usa le closure per nascondere i dati:

function createUser(name, email) {
  // Queste variabili sono private (incapsulate)
  let userName = name;
  let userEmail = email;
  
  // Restituisce un oggetto con metodi per interagire con i dati privati
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}
const encapsulatedUser = createUser("John", "john@example.com");

Ora, per interagire con i dati:

console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"

// Non è possibile accedere direttamente ai dati
console.log(encapsulatedUser.userName); // undefined
challenge icon

Sfida

Ti viene fornito del codice che usa l'incapsulamento per proteggere i dati dell'utente. Il tuo compito è aggiungere un metodo getAge() per accedere all'età.

I test verificheranno:

  • esistenza del metodo getAge()
  • restituzione dell'età corretta
  • che le informazioni sull'età rimangano private

Output previsto:

john_doe

25

Provalo tu

import { createUser } from './createUser.js';

// Código de prueba - no modificar
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // Debería mostrar "john_doe"
console.log(user.getAge());      // Debería mostrar 25

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore JavaScript online