![]() |
La protection en programmation objet |
Comme nous l'avons vu, un objet a des attributs (une ampoule a un attribut état qui est allumé ou éteind.).
Imaginons un objet température (qui mémorise une température).
On veut pouvoir utiliser la température en dégrés Celcius (°C) et en degrés Kelvin (°K).
Pour passer des degrés Celcius aux degrés Kelvin, on ajoute 273.
L'objet température aura donc 2 attributs : TempC et TempK:
classe Température: attributs: TempC TempK |
Maintenant, on créé un objet X de type Température:
objet X de type Température: attributs: TempC = 21 TempK = 294 |
Pour connaître la valeur de la température X en degrés Kelvin, on écrit X.TempC
, ce qui donne 21.
Si on veut modifier la température, on peut mettre 33 dans TempC en tapant X.TempC=33
.
Mais là on a un problème : la température en °K (TempK) ne correspond plus !
objet X de type Température: attributs: TempC = 33 TempK = 294 |
Notre objet X n'est plus dans un état correct : il ne fait plus la bonne correspondance entre °C et °K !
Il faut empêcher n'importe qui d'aller modifier TempC et TempK pour ne plus avoir ce problème.
Les langages objets sont capable de protéger certaines données contre des modifications intempestives:
classe Température: attributs: private TempC private TempK |
Le mot "private" signifie que c'est une donnée privée : seul l'objet Température lui-même peut aller modifier ces données. Ainsi, il est maintenant interdit d'écrire X.TempC=21
.
On va écrire une méthode dans la classe Température qui permettra de modifier la température:
classe Température: attributs: private TempC private TempK méthodes: réglerTempC(n): TempC = n TempK = TempC + 273 lireTempK: renvoyer TempK |
Maintenant, pour modifier la température, on fera X.réglerTempC(33)
. On est sûr que l'attribut TempK correspondra toujours bien à TempC.
On peut lire TempK en faisant X.lireTempK
.
On peut protéger ainsi tous les attributs que l'on veut ! Tous les attributs qui ne sont pas indiqués comme "private" sont considérés comme publiques ("public") et tout le monde peut aller les modifier.
Pour ceux qui veulent en savoir plus : Il est même possible de déclarer "private" des méthodes: ce sont alors des méthodes internes à l'objet que seul l'objet lui-même a le droit d'utiliser. |
"private" permet de protéger un objet pour éviter qu'il ne soit modifié n'importe comment.
Pour poursuivre: |
Toutes ces pages et leur contenu (textes, images, sons, animations et toute autre forme de média) sont de par les lois françaises et internationales sur le droit d'auteur et la propriété intellectuelle protégées jusqu'à 70 ans après le décès de leur auteur, Sébastien SAUVAGE (alias MWPC2). Toute reproduction est interdite sans le visa de l'auteur. Toute personne morale ou physique portant atteinte à ces droits s'expose à des poursuites. Les images utilisées dans ces pages sont marquées électroniquement. Merci de prévenir le Webmaster ( ![]() |
h t t p : / / s e b s a u v a g e . n e t |