Contactez-nous

Définition : les variables d'instance (`@variable`)

Qu'est-ce qu'une variable d'instance en Ruby ? Découvrez comment le `@` permet à vos objets de mémoriser leur état. Maîtriser ce concept est essentiel pour construire des objets avec une mémoire persistante.

Qu'est-ce qu'une variable d'instance ?

Une variable d'instance est une variable qui appartient à une instance spécifique d'une classe. Son rôle est de stocker les données qui constituent l'état de cet objet. En Ruby, elle est immédiatement reconnaissable à son préfixe, le symbole arobase (@), comme dans @name ou @color.

Pensez à une variable d'instance comme à un post-it collé sur un objet. Chaque objet que vous créez à partir d'une classe obtient son propre jeu de post-its vierges. Lorsque la méthode initialize s'exécute, elle écrit les informations initiales sur ces post-its. Par exemple, pour l'objet felix, elle écrit 'Félix' sur le post-it @name. L'objet garfield, lui, a son propre post-it @name sur lequel est écrit 'Garfield'.

Ces variables sont ce qui permet à un objet de 'se souvenir' de ses informations. Sans elles, toute donnée passée au constructeur serait immédiatement oubliée une fois la méthode initialize terminée.

Quelle est sa portée et sa durée de vie ?

La caractéristique la plus importante d'une variable d'instance est sa portée. Une fois définie (généralement dans initialize), une variable d'instance est accessible depuis n'importe quelle autre méthode d'instance de la même classe, pour cet objet spécifique.

Sa durée de vie est directement liée à celle de l'instance. La variable @name de l'objet felix existera aussi longtemps que l'objet felix lui-même existera en mémoire. Elle ne disparaît pas à la fin d'un appel de méthode.

Voyons cela avec un exemple. Nous allons définir @name dans initialize et y accéder plus tard dans une autre méthode, say_hello.

La différence cruciale avec une variable locale

Retenez bien cette distinction :

  • @variable (instance) : appartient à l'objet, accessible dans toutes ses méthodes, dure aussi longtemps que l'objet.
  • variable (locale) : appartient à la méthode, accessible uniquement dans cette méthode, détruite à la fin de la méthode.

Pourquoi sont-elles le pilier de l'état d'un objet ?

L'ensemble de toutes les variables d'instance d'un objet à un instant T constitue ce que l'on appelle son état. C'est l'ADN de l'objet, ce qui le rend unique par rapport aux autres instances de la même classe.

Par exemple, l'état de l'objet user_one pourrait être {@username="Alice", @status="active"}, tandis que l'état de user_two serait {@username="Bob", @status="inactive"}. Bien qu'ils proviennent du même plan (la classe User), leur état individuel est différent grâce aux variables d'instance.

C'est ce mécanisme qui permet à la programmation orientée objet de modéliser des concepts du monde réel de manière si efficace. Maintenant que nos objets ont une mémoire pour stocker leur état, nous allons voir comment leur donner des capacités pour agir en fonction de cet état en créant des méthodes d'instance.