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.

