Outils pour utilisateurs

Outils du site


cours:informatique:dev:programmation_objet_pharo:310_variables_en_pharo

Pharo : Les variables

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.
  • 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,
  • 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, ils sont accessible globalement (variables globales) mais non modifiables.

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;
  • 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 :

  • Par convention, toutes les variables locales: locales à un objet, locales à un block ou à une méthode, commencent par une lettre minuscule;
  • Toutes les variables globales, donc les noms de classes, etc., commencent par une lettre majuscule.
cours/informatique/dev/programmation_objet_pharo/310_variables_en_pharo.txt · Dernière modification : 2022/07/31 19:35 de yoann