Encapsulation
Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 17 sur 56.
L'encapsulation est un processus consistant à combiner des données à l'intérieur d'une classe au sein d'une seule unité.
Cela permet de restreindre l'accès direct aux données de la classe, ce qui nous aide finalement à prévenir toute modification accidentelle des données.
Voyons l'encapsulation en action avec un exemple simple. Créez un objet de base avec des propriétés publiques :
const user = {
name: "John",
email: "john@example.com"
};N'importe qui peut accéder directement à ces propriétés et les modifier :
user.name = "Jane"; // Facile à modifier de l'extérieur
console.log(user.email); // Facile à accéder de l'extérieurUne approche plus encapsulée utilise les fermetures (closures) pour masquer les données :
function createUser(name, email) {
// Ces variables sont privées (encapsulées)
let userName = name;
let userEmail = email;
// Retourne un objet avec des méthodes pour interagir avec les données privées
return {
getName: function() {
return userName;
},
getEmail: function() {
return userEmail;
},
setName: function(newName) {
userName = newName;
}
};
}
const encapsulatedUser = createUser("John", "john@example.com");Maintenant, pour interagir avec les données :
console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"
// Impossible d'accéder directement aux données
console.log(encapsulatedUser.userName); // undefinedDéfi
On vous donne un code qui utilise l'encapsulation pour protéger les données de l'utilisateur. Votre tâche consiste à ajouter une méthode getAge() pour accéder à l'âge.
Les tests vérifieront :
- La méthode
getAge()existe - Elle retourne l'âge correct
- Les informations sur l'âge restent privées
Sortie attendue :
john_doe
25
Aide-mémoire
L'encapsulation est un processus consistant à combiner des données à l'intérieur d'une classe au sein d'une seule unité et à restreindre l'accès direct à ces données, empêchant ainsi toute modification accidentelle.
Sans encapsulation, les propriétés des objets sont accessibles publiquement :
const user = {
name: "John",
email: "john@example.com"
};
user.name = "Jane"; // Peut être modifié directement
console.log(user.email); // Peut être accédé directementUtilisation des fermetures (closures) pour encapsuler les données :
function createUser(name, email) {
// Variables privées (encapsulées)
let userName = name;
let userEmail = email;
// Méthodes publiques pour interagir avec les données privées
return {
getName: function() {
return userName;
},
getEmail: function() {
return userEmail;
},
setName: function(newName) {
userName = newName;
}
};
}
const encapsulatedUser = createUser("John", "john@example.com");
console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"
console.log(encapsulatedUser.userName); // undefined (données privées non accessibles)Essayez vous-même
import { createUser } from './createUser.js';
// Code de test - ne pas modifier
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // Devrait afficher "john_doe"
console.log(user.getAge()); // Devrait afficher 25
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Programmation Orientée Objet
1Objets et le mot-clé this
Révision rapide : Les objetsAjouter des méthodes aux objetsComprendre le mot-clé thisFonctions constructeursLe mot-clé newDéfi récapitulatif7L'héritage et le mot-clé extends
L'héritageLa relation « est un »Le mot-clé extendsLa méthode super()Hériter des propriétés et méthodesDéfi récapitulatif10Polymorphisme
Qu'est-ce que le polymorphisme ?Redéfinition de méthodes héritéesUtiliser superDéfi récapitulatif13Composition vs Héritage
Les relations « has-a » vs « is-a »Les limites de l'héritage profondConstruction d'objets2Organisation du code
Qu'est-ce qu'un module ?Exporter avec exportImporter avec importExports par défaut vs nommés5Encapsulation & Accès
EncapsulationChamps de classe publics et privésMéthodes privéesDéfi récapitulatif8Organisation du code POO
Organiser les classes en modules11Projet : Un moteur de rendu de formes
Configuration : Classe Shape et ExportationHéritage de la classe Circle14Système de gestion de bibliothèque
Conception de la bibliothèqueClasse Book avec composition3Classes et Objets
Qu'est-ce qu'une classe ?Créer des instancesPropriétés et méthodesDéfi récapitulatif9Méthodes et propriétés statiques
Niveau classe vs Niveau instancePropriétés statiquesMéthodes utilitaires statiquesDéfi récapitulatif