![]() |
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: |
Le contenu de cette page est placé sous les termes de la licence suivante : CC Attribution-Noncommercial 4.0 International |
h t t p : / / s e b s a u v a g e . n e t |