1 00:00:00,450 --> 00:00:03,410 Bonjour. Dans cette séquence, on va voir les variables et 2 00:00:03,610 --> 00:00:06,030 les différents types de variables qui existent en Pharo. 3 00:00:06,230 --> 00:00:08,180 En fait, il existe deux grands types de variables: les 4 00:00:08,380 --> 00:00:11,120 variables locales qui commencent toujours par convention 5 00:00:11,320 --> 00:00:13,670 de nommage par une lettre minuscule. 6 00:00:13,870 --> 00:00:15,820 On va voir les différents types de variables locales qui existent. 7 00:00:16,150 --> 00:00:19,300 La deuxième grande famille, c'est les variables partagées 8 00:00:19,500 --> 00:00:22,530 qui commencent par convention par une lettre majuscule. 9 00:00:22,830 --> 00:00:24,540 On verra aussi qu'il en existe plusieurs types. 10 00:00:25,730 --> 00:00:28,270 On va commencer par les variables locales qui commencent 11 00:00:28,470 --> 00:00:30,240 toujours par une lettre minuscule, typiquement des 12 00:00:30,440 --> 00:00:32,090 variables locales à une méthode. Je vous le rappelle, 13 00:00:32,290 --> 00:00:37,230 elles sont déclarées entre des pipes ( | ), des barres droites. 14 00:00:37,610 --> 00:00:40,350 Ici, on a une variable locale qui s'appelle | c | qui est 15 00:00:40,550 --> 00:00:42,600 locale à la méthode, qui n'existe que pendant l'exécution 16 00:00:43,110 --> 00:00:46,860 de la méthode et qui doit toujours commencer par une lettre minuscule. 17 00:00:47,220 --> 00:00:49,360 On remarque au passage que tous les noms de classes 18 00:00:49,820 --> 00:00:53,000 commencent par une lettre majuscule puisque les classes 19 00:00:53,200 --> 00:00:55,020 sont partagées dans le système. 20 00:00:57,890 --> 00:00:59,500 D'autres types de variables locales. 21 00:01:00,920 --> 00:01:03,640 On a par exemple les variables d'instance d'un objet, 22 00:01:03,840 --> 00:01:05,180 elles sont locales à un objet. 23 00:01:05,470 --> 00:01:07,130 Ici, il y en a deux : x et y. 24 00:01:07,330 --> 00:01:09,240 Elles doivent toujours commencer par une lettre minuscule. 25 00:01:10,200 --> 00:01:14,100 En tant que variables locales, on a encore les arguments 26 00:01:14,410 --> 00:01:19,190 des méthodes ici. On voit que aPoint, le a pour commencer 27 00:01:19,390 --> 00:01:22,570 est en minuscule puisque cette variable est aussi locale à la méthode. 28 00:01:23,000 --> 00:01:26,820 Et ensuite en variables locales, on a également les paramètres des blocks. 29 00:01:27,140 --> 00:01:31,320 Donc ici, x:x.:x, c'est le nom d'une variable locale à 30 00:01:32,140 --> 00:01:33,570 un argument de block. 31 00:01:33,770 --> 00:01:37,000 Ici, elle commence bien par une 32 00:01:39,240 --> 00:01:40,000 lettre minuscule. 33 00:01:40,200 --> 00:01:44,210 Dans Pharo, on a six variables spécifiques qu'on appelle 34 00:01:44,410 --> 00:01:46,490 des variables spéciales dont on ne peut pas changer le nom. 35 00:01:47,230 --> 00:01:48,880 C'est des mots réservés du langage. 36 00:01:49,080 --> 00:01:52,420 Pour l'anecdote, il en existe plus de cinquante en Java ou en JavaScript. 37 00:01:52,850 --> 00:01:57,000 En Pharo, on n’en a que six: true, false, nil, self, super et thisContext. 38 00:01:58,100 --> 00:01:59,700 On va voir à quoi correspondent ces mots réservés. 39 00:02:00,470 --> 00:02:04,470 True et false sont des instances de booléens. 40 00:02:04,670 --> 00:02:07,380 True, c'est l'unique instance la classe True. 41 00:02:07,780 --> 00:02:09,630 False, c'est l'unique instance la classe False. 42 00:02:09,830 --> 00:02:13,260 Nil, c'est l'unique instance de la classe UndefineObject. 43 00:02:13,460 --> 00:02:17,370 True, false et nil sont des objets comme les autres sauf 44 00:02:17,570 --> 00:02:19,160 qu'ils sont instances, c'est l'unique instance d'une 45 00:02:19,360 --> 00:02:20,710 classe particulière du système. 46 00:02:21,920 --> 00:02:24,030 Ensuite on a trois pseudo variables. 47 00:02:24,300 --> 00:02:28,280 Self qui désigne le receveur courant et qui est équivalent de this en java. 48 00:02:28,910 --> 00:02:31,890 Super qui désigne toujours le receveur courant, mais 49 00:02:32,090 --> 00:02:35,280 cette fois quand on envoie un message à travers super, ça 50 00:02:35,480 --> 00:02:37,940 veut dire que la méthode lookup, l'algorithme de 51 00:02:38,140 --> 00:02:40,260 sélection de méthode qu'on verra dans une séquence 52 00:02:40,460 --> 00:02:43,320 suivante, va commencer dans la super classe dans laquelle 53 00:02:43,710 --> 00:02:45,350 est écrit le mot-clef super. 54 00:02:46,880 --> 00:02:49,750 Et thisContext, c'est une pseudo variable qui permet de 55 00:02:49,950 --> 00:02:53,550 désigner l'objet qui réifie la pile d'exécution du programme. 56 00:02:53,800 --> 00:02:57,080 C'est un concept un petit peu avancé qu'on verra tout à la fin de ce MOOC. 57 00:02:58,830 --> 00:03:00,290 On l'expliquera plus tard. 58 00:03:00,490 --> 00:03:02,730 Il faut juste savoir que c'est une pseudo variable qui existe. 59 00:03:05,000 --> 00:03:07,870 Maintenant, les variables partagées, les variables globales. 60 00:03:08,560 --> 00:03:11,330 On a pour commencer toutes les classes, tous les noms de 61 00:03:11,530 --> 00:03:14,810 classes commencent par une lettre majuscule puisque je 62 00:03:15,010 --> 00:03:17,480 peux référencer une classe depuis n'importe où dans le système. 63 00:03:18,520 --> 00:03:20,670 Attention, tout ce qui commence par une majuscule n'est 64 00:03:20,870 --> 00:03:23,770 pas forcément une classe. Ici, je donne un exemple avec 65 00:03:24,000 --> 00:03:28,140 Transcript, c'est le nom d'un objet 66 00:03:28,420 --> 00:03:30,870 partagé dans le système, tout le monde peut référencer 67 00:03:31,750 --> 00:03:34,350 cet objet et c'est la sortie standard. 68 00:03:34,550 --> 00:03:36,880 C'est l'équivalent de stdout dans d'autres langages. 69 00:03:37,230 --> 00:03:39,630 C'est un objet instance d'une classe, mais globalement 70 00:03:39,830 --> 00:03:42,510 accessible donc son nom commence par une lettre majuscule. 71 00:03:45,720 --> 00:03:48,840 On a également les variables de classes qui sont 72 00:03:49,040 --> 00:03:52,030 déclarées ici au moment de la déclaration d'une classe dans classe VarNames. 73 00:03:52,230 --> 00:03:56,000 Ici, la classe CombinedChar définit deux variables de 74 00:03:56,340 --> 00:03:58,460 classes: une qui s'appelle Compositions et une qui s'appelle 75 00:03:58,660 --> 00:04:01,700 Decompositions ici. Ces deux variables de classes sont 76 00:04:01,900 --> 00:04:04,180 accessibles à la fois par les instances de la classe 77 00:04:04,380 --> 00:04:07,010 CombinedChar et à la fois par les instances des 78 00:04:07,210 --> 00:04:10,430 sous-classes de la classe CombinedChar. C'est pour ça qu'on 79 00:04:10,630 --> 00:04:12,710 parle de variables partagées, elles sont partagées par 80 00:04:12,910 --> 00:04:14,610 toutes les instances de la classe et de ses sous-classes 81 00:04:15,690 --> 00:04:19,930 et elles commencent par une lettre majuscule toutes les deux. 82 00:04:20,130 --> 00:04:22,650 En résumé ce qu'il faut retenir de cette séquence, c'est 83 00:04:22,850 --> 00:04:25,860 que toutes les variables locales, locales à un objet, 84 00:04:26,060 --> 00:04:28,340 locales à un block ou à une méthode, commencent par une 85 00:04:28,540 --> 00:04:31,860 lettre minuscule et toutes les variables globales, donc 86 00:04:32,060 --> 00:04:35,140 les noms de classes, etc., commencent par une lettre majuscule.