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 ceux­ci, 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 à ceux­ci à 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
Précédent

- 201/220

Suivant