Aller au contenu principal

Encapsulation

Définition : l'encapsulation dans l'approche objet consiste à regrouper le code (données et traitements) qui fournit un même service dans une seule entité. Une encapsulation spécifie le fonctionnement d'un service (par un ensemble d'actions) en masquant la manière de le réaliser.

Respecter le concept d'encapsulation permet de séparer l'utilisation d'un service de sa réalisation et de renforcer la manipulation d'abstractions dans la fabrication d'un logiciel.

Objet​

L'objet est l'entité qui met en œuvre, à l'exécution, une encapsulation. Plusieurs objets peuvent mettre en œuvre la même encapsulation. Les données encapsulées dans un objet sont désignées par les termes attributs ou variables d'instance. Les traitements encapsulés dans un objet sont désignés par le terme méthodes.

Dans cette approche, l'exécution d'un programme manipule uniquement des objets : création, passage de paramètres et communication entre objets. Un objet A communique avec un objet B lorsqu'un des traitements de l'objet A déclenche une des méthodes de l'objet B.

Classe​

Un langage orienté objet doit fournir un moyen de décrire une encapsulation (utilisation et réalisation). En général, cette description d'une encapsulation est faite à l'aide de la construction appelée classe. Dans un langage typé, une classe correspond à la déclaration d'un type.

Description des encapsulations en Java​

Le langage Java est un langage orienté objet typé utilisant des classes pour la description des encapsulations.

  • Définition de la classe Java PorteCharniere dans un fichier source nommé PorteCharniere.java :
class PorteCharniere {
// La définition des variables / attributs d'un objet
boolean estFerme;

// La définition des méthodes d'un objet
void fermer() {
/* Todo */
estFerme = true;
}

void ouvrir() {
/* Todo */
estFerme = false;
}

boolean estFerme() {
return estFerme;
}
}

En Java, la définition d'une classe correspond à la déclaration d'un type. Il est possible de déclarer une variable maPorte du type PorteCharniere qui peut contenir, à l'exécution, une référence vers un objet de la classe PorteCharniere.

  • Définition de la classe Telecommande dans le fichier source Telecommande.java :
class Telecommande {
void positionner(PorteCharniere p) {

}
void activer(int numero) {

}
void desactiver(int numero) {

}
void desactiverTout() {

}
int nbPortes;
PorteCharniere[] mesPortes;
}

Cette description (attributs, méthodes) va être applicable aux objets créés à partir de la classe Telecommande.