Var
o1:Ecran
Début
// Attributs privés : accès depuis l’extérieur interdit
o1.type←"LCD" // *** INTERDIT !!! ***
// Accès direct aux attributs
Afficher o1.type // *** INTERDIT !!! ***
// Méthodes publiques : accès autorisé
o1.saisie_modèle("Multisync FE1250+")o1.affiche_modèle()
Fin
Il existe un troisième type d’accès : l’accès protégé. Il est particulier et vous le reverrez plus loin lorsque la notion
d’héritage sera abordée. Un membre protégé est considéré comme privé pour les autres objets indépendants car il
n’est pas accessible depuis ceuxci, mais comme public au sein de l’objet et des objets qui en dérivent.
8. Encapsulation des données
Les membres peuvent être publics ou privés. La structure interne d’un objet comporte un certain nombre d’attributs et
de méthodes qui lui sont propres, qui reflètent sa structure interne. Des attributs et méthodes de l’objet ne sont utiles
que pour d’autres méthodes et donc ne doivent pas être accessibles depuis l’extérieur de l’objet. De même, afin de
laisser un seul point d’entrée aux divers attributs, vous ne devriez pas permettre l’accès à ceuxci à la fois directement
et par des méthodes.
Une bonne pratique consiste à interdire l’accès public aux attributs. Seules les méthodes y accèdent et si vous voulez
les manipuler, vous définissez des méthodes publiques pour cela. Vous évitez ainsi que le programmeur manipule
directement la structure interne de votre objet et y mette n’importe quoi car vous pouvez effectuer un contrôle au sein
des méthodes. C’est le principe de l’encapsulation des données :
q Les attributs sont privés (ou protégés).
q Vous les manipulez en passant par des méthodes publiques.
L’exemple modifié suivant met en évidence ce qui aurait pu poser un problème : vous voulez modifier le type d’écran.
En passant directement par un attribut public vous auriez pu mettre n’importe quoi dedans comme "PLAT".
Or la méthode modifie_type vérifie avant ce que vous y mettez dans un choix prédéfini (crt, lcd, plasma). Si le type que
vous voulez ne correspond pas, il est rejeté. Vous venez de blinder (un peu) votre objet en empêchant quiconque de le
"casser". Vous reconnaissez maintenant l’importance, dans certains cas, de l’encapsulation des données.
Types
Classe Ecran
attributs privés
...
type:chaîne
...
méthodes publiques
...
Fonction modif_type(mod :chaîne) :booléen
...
FinClasse
Fonction Ecran::modif_type(mod :chaîne) :booléen
Var
tmod :tableau[1..3]<-{"CRT","LCD","PLASMA"} de chaînes
ok :booléen
i :entier
Début
ok←FAUX
i←1
Tant que i<=3 ET NON ok Faire
Si mod=tmod[i] Alors
ok←VRAI
FinSi
i=i+1
FinTantQue
Si ok Alors
this.type←mod
- 8 -
© ENI Editions - All rigths reserved - Jonifar lina
201
o1:Ecran
Début
// Attributs privés : accès depuis l’extérieur interdit
o1.type←"LCD" // *** INTERDIT !!! ***
// Accès direct aux attributs
Afficher o1.type // *** INTERDIT !!! ***
// Méthodes publiques : accès autorisé
o1.saisie_modèle("Multisync FE1250+")o1.affiche_modèle()
Fin
Il existe un troisième type d’accès : l’accès protégé. Il est particulier et vous le reverrez plus loin lorsque la notion
d’héritage sera abordée. Un membre protégé est considéré comme privé pour les autres objets indépendants car il
n’est pas accessible depuis ceuxci, mais comme public au sein de l’objet et des objets qui en dérivent.
8. Encapsulation des données
Les membres peuvent être publics ou privés. La structure interne d’un objet comporte un certain nombre d’attributs et
de méthodes qui lui sont propres, qui reflètent sa structure interne. Des attributs et méthodes de l’objet ne sont utiles
que pour d’autres méthodes et donc ne doivent pas être accessibles depuis l’extérieur de l’objet. De même, afin de
laisser un seul point d’entrée aux divers attributs, vous ne devriez pas permettre l’accès à ceuxci à la fois directement
et par des méthodes.
Une bonne pratique consiste à interdire l’accès public aux attributs. Seules les méthodes y accèdent et si vous voulez
les manipuler, vous définissez des méthodes publiques pour cela. Vous évitez ainsi que le programmeur manipule
directement la structure interne de votre objet et y mette n’importe quoi car vous pouvez effectuer un contrôle au sein
des méthodes. C’est le principe de l’encapsulation des données :
q Les attributs sont privés (ou protégés).
q Vous les manipulez en passant par des méthodes publiques.
L’exemple modifié suivant met en évidence ce qui aurait pu poser un problème : vous voulez modifier le type d’écran.
En passant directement par un attribut public vous auriez pu mettre n’importe quoi dedans comme "PLAT".
Or la méthode modifie_type vérifie avant ce que vous y mettez dans un choix prédéfini (crt, lcd, plasma). Si le type que
vous voulez ne correspond pas, il est rejeté. Vous venez de blinder (un peu) votre objet en empêchant quiconque de le
"casser". Vous reconnaissez maintenant l’importance, dans certains cas, de l’encapsulation des données.
Types
Classe Ecran
attributs privés
...
type:chaîne
...
méthodes publiques
...
Fonction modif_type(mod :chaîne) :booléen
...
FinClasse
Fonction Ecran::modif_type(mod :chaîne) :booléen
Var
tmod :tableau[1..3]<-{"CRT","LCD","PLASMA"} de chaînes
ok :booléen
i :entier
Début
ok←FAUX
i←1
Tant que i<=3 ET NON ok Faire
Si mod=tmod[i] Alors
ok←VRAI
FinSi
i=i+1
FinTantQue
Si ok Alors
this.type←mod
- 8 -
© ENI Editions - All rigths reserved - Jonifar lina
201
