Bonjour. Dans cette séquence, on va voir les variables et
les différents types de variables qui existent en Pharo.
En fait, il existe deux grands types de variables: les
variables locales qui commencent toujours par convention
de nommage par une lettre minuscule.
On va voir les différents types de variables locales qui existent.
La deuxième grande famille, c'est les variables partagées
qui commencent par convention par une lettre majuscule.
On verra aussi qu'il en existe plusieurs types.
On va commencer par les variables locales qui commencent
toujours par une lettre minuscule, typiquement des
variables locales à une méthode. Je vous le rappelle,
elles sont déclarées entre des pipes ( | ), des barres droites.
Ici, on a une variable locale qui s'appelle | c | qui est
locale à la méthode, qui n'existe que pendant l'exécution
de la méthode et qui doit toujours commencer par une lettre minuscule.
On remarque au passage que tous les noms de classes
commencent par une lettre majuscule puisque les classes
sont partagées dans le système.
D'autres types de variables locales.
On a par exemple les variables d'instance d'un objet,
elles sont locales à un objet.
Ici, il y en a deux : x et y.
Elles doivent toujours commencer par une lettre minuscule.
En tant que variables locales, on a encore les arguments
des méthodes ici. On voit que aPoint, le a pour commencer
est en minuscule puisque cette variable est aussi locale à la méthode.
Et ensuite en variables locales, on a également les paramètres des blocks.
Donc ici, x:x.:x, c'est le nom d'une variable locale à
un argument de block.
Ici, elle commence bien par une
lettre minuscule.
Dans Pharo, on a six variables spécifiques qu'on appelle
des variables spéciales dont on ne peut pas changer le nom.
C'est des mots réservés du langage.
Pour l'anecdote, il en existe plus de cinquante en Java ou en JavaScript.
En Pharo, on n’en a que six: true, false, nil, self, super et thisContext.
On va voir à quoi correspondent ces mots réservés.
True et false sont des instances de booléens.
True, c'est l'unique instance la classe True.
False, c'est l'unique instance la classe False.
Nil, c'est l'unique instance de la classe UndefineObject.
True, false et nil sont des objets comme les autres sauf
qu'ils sont instances, c'est l'unique instance d'une
classe particulière du système.
Ensuite on a trois pseudo variables.
Self qui désigne le receveur courant et qui est équivalent de this en java.
Super qui désigne toujours le receveur courant, mais
cette fois quand on envoie un message à travers super, ça
veut dire que la méthode lookup, l'algorithme de
sélection de méthode qu'on verra dans une séquence
suivante, va commencer dans la super classe dans laquelle
est écrit le mot-clef super.
Et thisContext, c'est une pseudo variable qui permet de
désigner l'objet qui réifie la pile d'exécution du programme.
C'est un concept un petit peu avancé qu'on verra tout à la fin de ce MOOC.
On l'expliquera plus tard.
Il faut juste savoir que c'est une pseudo variable qui existe.
Maintenant, les variables partagées, les variables globales.
On a pour commencer toutes les classes, tous les noms de
classes commencent par une lettre majuscule puisque je
peux référencer une classe depuis n'importe où dans le système.
Attention, tout ce qui commence par une majuscule n'est
pas forcément une classe. Ici, je donne un exemple avec
Transcript, c'est le nom d'un objet
partagé dans le système, tout le monde peut référencer
cet objet et c'est la sortie standard.
C'est l'équivalent de stdout dans d'autres langages.
C'est un objet instance d'une classe, mais globalement
accessible donc son nom commence par une lettre majuscule.
On a également les variables de classes qui sont
déclarées ici au moment de la déclaration d'une classe dans classe VarNames.
Ici, la classe CombinedChar définit deux variables de
classes: une qui s'appelle Compositions et une qui s'appelle
Decompositions ici. Ces deux variables de classes sont
accessibles à la fois par les instances de la classe
CombinedChar et à la fois par les instances des
sous-classes de la classe CombinedChar. C'est pour ça qu'on
parle de variables partagées, elles sont partagées par
toutes les instances de la classe et de ses sous-classes
et elles commencent par une lettre majuscule toutes les deux.
En résumé ce qu'il faut retenir de cette séquence, c'est
que toutes les variables locales, locales à un objet,
locales à un block ou à une méthode, commencent par une
lettre minuscule et toutes les variables globales, donc
les noms de classes, etc., commencent par une lettre majuscule.