Menu
Coddy logo textTech

Encapsulation

Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy. Leçon 17 sur 56.

Encapsulation est un processus qui consiste à combiner des données au sein d’une classe dans une seule unité.

Cela aide à restreindre l’accès direct aux données de la classe, ce qui nous permet finalement d’éviter toute modification accidentelle des données. 

Voyons l’encapsulation en action avec un exemple simple. Crée 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 d'accès de l'extérieur

Une approche davantage encapsulée utilise des fermetures 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); // undefined
challenge icon

Défi

On vous donne du code qui utilise l’encapsulation pour protéger les données 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 renvoie 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

quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur JavaScript en ligne