4.4 Les variables

Dans tout déroulement de programme il peut s’avérer nécessaire de garder des résultats intermédiares afin de les réutiliser dans des calculs ultérieurs. Ceci est particulièrement utile si ces résultats intermédiares doivent être utilsés à plusieurs endroits. Cette sauvegarde de résultats de calculs se fait en SMALLTALK, comme dans tout autre langage de programmation, à l’aide de variables. Une variable SMALLTALK peut garder tout objet SMALLTALK, et on peut envoyer des messages à cet objet en envoyant un message à la variable gardant cet objet. Au contraire d’autres langages de programmation, SMALLTALK ne distingue pas entre des types qu’une variable peut garder. Néanmoins, avant d’utiliser une variable, il faut lui donner un nom, il faut la déclarer.

SMALLTALK distingue entre des variables à valeur privée, des variables locales, et des variables à valeur partagée, les autres. Pour les variables à valeur privée, nous distinguons entre variables temporaires (à un contexte), des paramètres de blocs et de méthodes, des variables d’instance nommées (c’est ce type de variable d’instance que nous avons rencontré dans nos définitions de classes) et des variables d’instance indexées.

Pour les variables à valeur partagée (des variables qui s’écrivent avec une première lettre capitalisée), SMALLTALK distingue entre variables de classe, variables globales et variables de pool.

Lors de la compilation (l’acceptation d’une méthode avec les touches touche «Alt+s»), si elle utilise une variable inconnue, c’est-à-dire: non déclarée, SQUEAK demande comment déclarer cette variable inconnue. Si la variable débute par un caractère minuscule, SQUEAK ouvre une fenêtre (cf. figure 4.13) proposant de la déclarer soit comme variable temporaire, soit comme variable d’instance, soit de la remplacer par une des pseudo-variables ou par quelques valeurs particulières, telles que nil, false ou true.



PIC

FIG. 4.13: Le menu pour la déclaration d’une variable indéfinie x



PIC

FIG. 4.14: Le menu pour la déclaration d’une variable indéfinie X

Si, par contre, le nom de la variable débute par un caractère majuscule, SQUEAK propose de la déclarer comme variable globale ou variable de classe, ou encore de considérer l’écriture de cette chose inconnue comme une réference à une classe pas encore définie, voire de remplacer l’occurrence de ce nom par une variable globale déjà connue de SQUEAK et dont le nom contient ce nom comme sous-partie. La figure 4.14, page 247, montre une interactions avec SQUEAK pour le cas d’un rencontre avec la variable inconnue X.