Encapsulation en français

Qu'est-ce que l'encapsulation ?

L'encapsulation est une méthode qui permet d'organiser les membres de données (attributs) et les membres de fonctions (méthodes) en les regroupant dans une seule classe. En consolidant ces éléments dans une unité unique, le code devient plus propre, plus clair et plus facile à entretenir.

Prenons un exemple avec une classe Rectangles, qui a pour attributs la longueur et la largeur, et qui dispose d'une méthode .CalculerAire() :

class Rectangle {
  public:
    int longueur;
    int largeur;
    int CalculerAire() {
      return longueur * largeur;
    }
};

Le principe de la dissimulation des données

L'encapsulation a permis de développer un concept clé en programmation orientée objet : la dissimulation des données ou abstraction. Cela implique que certains détails sont cachés du reste du programme.

Il existe des spécificateurs d'accès en C++ qui définissent la portée des éléments d'une classe :

  • public : Les membres publics d'une classe sont accessibles depuis n'importe quel endroit du programme.
  • private : Les membres privés d'une classe ne peuvent être accessibles qu'à l'intérieur de celle-ci.

La dissimulation des données se réalise en déclarant les attributs de la classe en tant que privés :

#include 
class Encapsulation {
  private:
    // Donnée cachée du monde extérieur
    int nombre;
  public:
    // Fonction pour définir la valeur de nombre
    void definirNombre(int x) {
      nombre = x;
    }
    // Fonction pour récupérer la valeur de nombre
    int obtenirNombre() {
      return nombre;
    }
};

int main() {
  Encapsulation obj;
  obj.definirNombre(10);
  std::cout << obj.obtenirNombre() << "\n"; // Sortie : 10
  return 0;
}

Dans cet exemple, l'attribut nombre ainsi que les méthodes .definirNombre() et .obtenirNombre() sont regroupés au sein de la classe Encapsulation.

Il est essentiel de comprendre que l'attribut nombre ne peut être accédé que via les méthodes .definirNombre() ou .obtenirNombre(), rendant ainsi nos données plus sécurisées.