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
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 CircleRedéfinition et méthode AreaCompteur de formes statique14Système de gestion de bibliothèque
Conception de la bibliothèqueClasse Book avec compositionValidation de l'auteur du livre3Classes 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