Accueil - Forum - Bibliothèque de ressources
____

Auteur : Åvygeil 

IV) Encapsulation des données

Nous allons à présent accéder à l'attribut vitesse de $voiture1 avec la notation objet.attribut ; tapez juste après la construction de $voiture1 :

Code Ruby$voiture1.vitesse

Lancez le jeu : plantage ! et c'est normal.

On ne peut pas avoir directement accès aux attributs d'une classe lorsque l'on est en dehors de cette classe.
Ceci est appelé l'encapsulation des données.
Pour avoir accès à l'attribut vitesse, on doit passer par une méthode dite d'accès en lecture, que l'on implémente à l'intérieur de la classe Voiture de manière canonique ainsi :

Code Rubydef vitesse
    return @vitesse
end

Ainsi, quand vous écrirez $voiture1.vitesse, vous n'accèderez pas directement à l'attribut vitesse ; vous appellerez la méthode vitesse qui va renvoyer la vitesse de l'objet courant, l'objet qui appelle la méthode.

En Ruby, il existe un raccourci très utile ; au lieu de taper la méthode d'accès en lecture, on tape en haut de la classe :


Code Rubyattr_reader :vitesse

qui sera interprété comme la méthode d'accès en lecture.

De la même manière, si l'on tape dans le script Main

Code Ruby$voiture1.vitesse = 10

on court au plantage.

On doit alors implémenter dans la classe Voiture une méthode dite d'accès en écriture :

Code Rubydef vitesse=(v)
    @vitesse = v
end

Ainsi, l'accès à vitesse n'est pas direct car la ligne de code est interprétée comme un appel à la méthode vitesse=.

Et de la même manière, on peut remplacer ce code par

Code Rubyattr_writer :vitesse

qui sera interprété comme la méthode d'accès en écriture.

On peut également condenser ces 2 méthodes d'accès en tapant

Code Rubyattr_accessor :vitesse
Informations
Page vue 2401 fois | Auteur : Samarium

RPG Creative version 5 - Libérez votre créativité ! ; Mai 2005 - Mai 2012
0.023s - Optimisé pour une résolution 1024*728 - Tous droits réservés.

Contact - Partenaires - Historique - A propos