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'esternoUn 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); // undefinedSfida
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
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
1Oggetti e la keyword this
Ripasso rapido: oggettiAggiungere metodi agli oggettiCapire la keyword thisFunzioni costruttriciLa keyword newSfida di ripasso7Ereditarietà e parola chiave extends
EreditarietàLa relazione «è un»La parola chiave extendsIl metodo super()Ereditare proprietà e metodiSfida di ripasso13Composizione vs. ereditarietà
«Ha-un» vs. «è-un»I limiti dell’ereditarietà profondaCostruire oggetti2Organizzare il codice
Cosa sono i moduli?Esportare con exportImportare con importExport predefiniti vs. export nominati5Incapsulamento e accesso
IncapsulamentoCampi di classe pubblici e privatiMetodi privatiSfida di riepilogo8Organizzare il codice OOP
Organizzare le classi in moduli11Progetto: Un renderizzatore di forme
Configurazione: classe Shape ed esportazioneEreditarietà della classe CircleOverride e metodo areaContatore statico di Shape14Sistema di gestione della biblioteca
Progettare la bibliotecaClasse Book con composizioneValidazione dell'autore del libroEsercitati da solo: Compilatore JavaScript online