/
QuickTour.tex
1381 lines (1212 loc) · 66.7 KB
/
QuickTour.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% $Author: oscar$
% $Translate: mathieu chappuis + martial boniou $
% $Date: 2007-12-13 15:59:51 +0100 (Thu, 13 Dec 2007) $
% $Revision$
% $french: Sun Dec 16 14:25:37 CET 2007$
%%%%%%%%%%%%%%%%%%%%%%
% relecture: Rene Mages (fusion par martial: Wed Dec 26 17:28:17 CEST 2007)
% relecture: Rene Mages (Sat Jan 12 17:28:17 CEST 2008)
% note de Martial: revoir les index pour les termes liés à Morphic
% adaptation pour PBE - 28729
% relecture: Rene Mages (Thu Jan 7 11:22:22 CEST 2010)
% sync avec la version: 29170
% sync avec la version: 29247 changement des icônes pour squeak.exe
% mise à jour: Martial (Tue Jun 22 11:51:51 CEST 2010)
% sync avec la version: 33691
% relecture: Rene Mages (Thu Jun 24 13:22:22 CEST 2010)
% relecture: Rene Mages (Sun Apr 10 13:22:22 CEST 2011)
% relecture: Rene Mages (Fri May 27 13:22:22 CEST 2011)
% relecture: Rene Mages (Fri Nov 2 13:22:22 CEST 2013)
%=================================================================
\ifx\wholebook\relax\else
% --------------------------------------------
% Lulu:
\documentclass[a4paper,10pt,twoside]{book}
\usepackage[
papersize={6.13in,9.21in},%,
%% Martial: j'ai enlevé les lignes pour tester la mise en page "manuelle" de la figure colouredMouse
hmargin={.75in,.75in},
vmargin={.75in,1in}
% ignoreheadfoot
]{geometry}
\input{../common.tex}
\pagestyle{headings}
\setboolean{lulu}{true}
% --------------------------------------------
% A4:
% \documentclass[a4paper,11pt,twoside]{book}
% \input{../common.tex}
% \usepackage{a4wide}
% --------------------------------------------
\graphicspath{{figures/} {../figures/}}
\begin{document}
%\renewcommand{\nnbb}[2]{} % Disable editorial comments
\sloppy
\fi
%=================================================================
\newcommand{\clover}{%
\raisebox{-0.8ex}[0pt][0pt]{%
\includegraphics[width=1em]{cloverleafKey}}}
%=================================================================
\chapter{Une visite de \pharo}
\chalabel{quick}
Nous vous proposons dans ce chapitre une première visite de \pharo afin de vous familiariser avec son environnement.
De nombreux aspects seront abordés; il est conseillé d'avoir une machine prête à l'emploi pour suivre ce chapitre.
Cette icône \dothisicon{} dans le texte signalera les étapes où vous devrez essayer quelque chose par vous-même.
Vous apprendrez à lancer \pharo et les différentes manières d'utiliser l'environnement et les outils de base.
La création des méthodes, des objets et les envois de messages seront également abordés.
%=================================================================
\section{Premiers pas}
\tradalert{martial}{nouvelle section}
\pharo est librement disponible au \ind{téléchargement} depuis la page \mbox{\pharowebdownload} du site web de \pharo.
Pour bien démarrer, il vous faudra trois archives: une archive \emph{image} (contenant deux fichiers, l'image proprement dite et le fichier de \emphind{changes}) disponible dans le paragraphe \emph{Pharo 1.* image},
un fichier nommé \emphind{source}{}\emph{s} disponible dans le paragraphe \emph{Sources file} et enfin, un programme exécutable appelé machine virtuelle selon votre système d'exploitation dans le paragraphe \emph{Virtual Machines}.
Dans le cas du présent livre, nous aurons seulement besoin de télécharger une archive unique contenant tout le nécessaire.
Sachez que si vous avez déjà une autre version de \pharo qui fonctionne sur votre
machine, la plupart des exemples d'introduction de ce livre
fonctionneront mais, en raison de subtils changements dans l'interface et les outils proposés dans une version actuelle de \pharo, nous vous recommandons le téléchargement du fichier \mbox{``\pharooneclick''}~\footnote{``PBE'' est l'acronyme de \emph{``Pharo by Example''}, titre original de ``Pharo par l'Exemple''.} disponible sur le site \ppe: vous aurez alors une image en parfait accord avec le livre.
\index{téléchargement}
\seclabel{sbeImage} % OBSOLETE
\dothis{Depuis le site \ppe{}, téléchargez et décompressez l'archive \pharo nommé \pharooneclick{} sur votre ordinateur.} % CHANGE pour ppe dès que possible
Le dossier résultant de la décompression de l'archive contient quatre fichiers importants: la machine virtuelle selon votre système d'exploitation, l'image, le fichier \emph{sources} et le fichier \emph{changes}. Si vous êtes utilisateur de \macosx, nous vous inquiétez pas de ne voir qu'un seul fichier; il s'agit d'un exécutable en \emph{bundle} que vous pouvez explorer en cliquant dessus avec le bouton droit et en choisissant l'option du menu contextuel dite ``Afficher le contenu du paquet''.
Avec la machine virtuelle, vous devriez donc avoir quatre fichiers tels que nous pouvons le voir sur \figref{download}. Ainsi \pharo{} se compose:
\begin{enumerate}
\item d'une \emphind{machine virtuelle} (abrégée en VM pour
\emph{virtual machine}): c'est la seule partie de l'environnement qui
est particulière à chaque \arelire{couple système d'exploitation et
processeur}. Des machines virtuelles pré-compilées sont disponibles pour la plupart des
systèmes (Linux, \macosx, Win32). Dans \figref{download}, vous
pouvez voir que la machine virtuelle pour la plateforme Windows est
appelée \textit{pharo.exe}. En naviguant dans le répertoires \textsf{Contents/Linux}, les utilisateurs
trouveront un fichier binaire nommé \textit{squeakvm}~\footnote{Basé sur \squeak{}3.9, \pharo utilise par défault une machine virtuelle similaire.}: il s'agit de la machine virtuelle qui est appelée via le script \emph{shell} \textit{pharo.sh}.
%martial: ajout des index dans la vf
\index{machine virtuelle}
\seeindex{VM}{machine virtuelle}
\item du fichier \emphind{source}: il contient le code source du système
\pharo. Ce fichier ne change pas très fréquement. Dans \figref{download}, il
correspond au fichier
\emph{PharoV10.sources}.
%ajout fr index
\index{fichier!source}
\seeindex{fichier-source}{fichier, source}
\seeindex{PharoV10.sources}{fichier, source}
\item de l'\emphind{image} \emph{système}: il s'agit d'un cliché d'un système
\pharo{} en fonctionnement, figé à un instant donné.
Il est composé de deux fichiers: le premier nommé avec l'extension
\emph{.}\emphind{image} contient l'état de tous les objets du système
dont les classes et les méthodes (qui sont aussi des objets).
Le second avec l'extension \emph{.}\emphind{changes} contient
le journal de toutes les modifications apportées au code source du
système (contenu dans le fichier source).
Dans \figref{download}, ces fichiers sont appelés
\emph{PBE.image} et \emph{PBE.changes}.
%ajout fr index
\index{fichier!image}
\index{fichier!changes}
\end{enumerate}
\begin{figure}[htb]
\centerline {\includegraphics[width=\textwidth]{annotatedDownload-flat-oneclick}}
\caption{Fichiers de \pharo dans l'archive \pharooneclick{} vus par les systèmes Windows, \macosx et Linux. Les fichiers \emph{PBE.image} et \emph{PBE.changes} doivent être modifiables en écriture.}\figlabel{download}
\end{figure}
Ces trois derniers fichiers résident discrètement dans le répertoire \textsf{Contents/Resources}.
Pendant que vous travaillez avec \pharo, les fichiers \emph{.image} et \emph{.changes} sont modifiés; si vous êtes amenés à utiliser d'autres images, vous devez donc vous assurer qu'ils sont accessibles en écriture et qu'ils sont toujours ensemble, \cad dans le même dossier.
Ne tentez pas de les modifier avec un éditeur de texte, \pharo les utilise pour stocker vos objets de travail et vos changements dans le code source.
Faire une copie de sauvegarde de vos images téléchargées et de vos
fichiers \emph{changes} est une bonne idée; vous pourrez ainsi
toujours démarrer à partir d'une image propre et y recharger votre code.
Les fichiers \emphind{source}{}\emph{s} et l'exécutable de la VM peuvent être
en lecture seule\,---\,il est donc possible de les partager entre plusieurs utilisateurs.
%-----------------------------------------------------------------
\begin{figure}[htb]
%\centerline {\includegraphics[width=0.6\textwidth]{download}}
\centerline {\includegraphics[width=0.95\textwidth]{startup}}
\caption{Une image PBE fraîchement démarrée.\figlabel{startup}}
\end{figure}
\index{lancement de \pharo}
\paragraph{Lancement.} Pour lancer \pharo:
\begin{itemize}
\item si vous êtes sous Windows, cliquez sur \textit{pharo.exe} à la racine du répertoire \textsf{\pharooneclick{}.app}.
Le fichier \textit{pharo.ini} contient diverses options de lancement tels que \textit{ImageFile} permettant de pointer vers une image particulière. Veillez à ne pas toucher ou déplacer ce fichier.
\item si vous êtes sous Linux, vous pouvez au choix cliquez sur \textit{pharo.sh} ou lancer depuis votre terminal la commande \textsf{.\/pharo.sh} depuis la racine du répertoire \textsf{\pharooneclick{}.app}. Si vous ouvrez le script \emph{shell} avec un éditeur, vous verrez que la commande exécute la machine virtuelle avec l'image \emph{PBE.image} du répertoire \textsf{Contents/Resources}.
\item si vous êtes sous \macosx, cliquez sur le fichier \textit{\pharooneclick} (ou \textit{\pharooneclick{}.app} suivant votre configuration). En affichant le contenu de paquet, vous avez du voir le fichier de propriétés \emph{Info.plist} à la racine du répertoire \textsf{Contents}. C'est là que la magie opère. Si vous ouvrez ce dernier fichier avec le programme \emph{Property List Editor}, vous verrez que notre application \textit{\pharooneclick} cache le lancement d'une machine nommée \emph{Squeak VM Opt} sur le fichier \emph{PBE.image}.
\end{itemize}
Ainsi cette archive dite ``\emph{OneClick}'' (\ie{} un \emph{\clickbtn{}}) nous évite de faire un \emph{glissé-déposé} de notre image \emph{PBE.image} sur le programme exécutable de notre machine virtuelle ou d'écrire notre propre script de lancement: tout ce passe en un \clickbtn de souris.
Une fois lancé, \pharo vous présente une large fenêtre qui peut contenir des
espaces de travail nommés \emphind{Workspace} (voir \figref{startup}).
\arelire{Vous pourriez remarquer une barre de menus mais \pharo{}
emploie principalement des menus contextuels.}
\dothis{Lancez \pharo. Vous pouvez fermer les fenêtres déjà
ouvertes en \clickant sur \arevoir{la bulle rouge dans le coin
supérieur gauche} des fenêtres.}
Vous pouvez minimiser les fenêtres (ce qui les masque dans la
barre de tâches située dans le bas de l'écran) en \clickant{} sur la
\arevoir{bulle orange}. \Click{} sur la \arevoir{bulle verte}
entraîne l'agrandissement maximal de la fenêtre.
% CHANGE REVOIR -
% martial - je préfère 'barre de tâches' au terme 'dock'
%-----------------------------------------------------------------
\paragraph{Première interaction.}
Les options du menu World (``Monde'' en anglais) présentées dans
\figref{threeButtons:click} sont un bon point de départ.
\dothis{Cliquez à l'aide de la souris dans l'arrière plan de la
fenêtre principale pour afficher le menu World, puis sélectionnez
\menu{Workspace} pour créer un nouvel espace de travail ou Workspace.}
\begin{figure}[tbh]
\centering
\subfigure[Le menu World]{\figlabel{threeButtons:click}% click
\includegraphics[width=0.40\linewidth]{worldMenu}}\hfill
\subfigure[le menu contextuel]{\figlabel{threeButtons:actclick}% action click
\includegraphics[width=0.55\linewidth]{yellowButtonMenuOnWorkspace}}\hfill
\subfigure[Le halo Morphic]{\figlabel{threeButtons:metaclick}% meta click
\includegraphics[width=0.60\linewidth]{morphicHaloOnWorkspace}}% these braces needed (else no whitespace at end of line)
\caption{\arelire{Le menu World (affiché en \clickant{} avec la
souris), un menu contextuel (affiché en \actclickant{}) et un
\subind{Morphic}{halo} Morphic (affiché en \metaclickant).}\figlabel{threeButtons}}
\end{figure} % CHANGE
\seeindex{halo}{Morphic, halo}
% ON: I had to shrink this and move it up to avoid
% it running over the end of the page.
% position d'origine de la figure colouredMouse
\st a été conçu à l'origine pour être utilisé avec une souris à trois
boutons. Si votre souris en a moins, vous pourrez utiliser des touches
du clavier en complément de la souris pour simuler les boutons
manquants. Une souris à deux boutons fonctionne bien avec \pharo, mais si
la vôtre n'a qu'un seul bouton vous devriez songer à adopter un
modèle récent avec une molette qui fera office de troisième bouton:
votre travail avec \pharo n'en sera que plus agréable.
\pharo évite les termes ``clic gauche'' ou ``clic droit'' car leurs
effets peuvent varier selon les systèmes, le matériel ou les
réglages utilisateur.
\arelire{Originellement, \st{} introduit des couleurs pour définir les
différents boutons de souris~\footnote{Les couleurs de boutons sont
\emph{rouge}, \emph{jaune} et \emph{bleu}. Les auteurs de ce livre
n'ont jamais pu se souvenir à quelle couleur se réfère chaque
bouton.}.}
\index{bouton!rouge}
\index{bouton!jaune}
\index{bouton!bleu}
\arelire{Puisque de nombreux utilisateurs utiliseront diverses touches de
modifications (\emph{Ctrl}, \emph{Alt}, \emph{Meta} \etc) pour
réaliser les mêmes actions, nous utiliserons plutôt les termes
suivants:}
\begin{description}
\item[\clickbtn:] \arelire{il s'agit du bouton de la souris le plus fréquemment
utilisé et correspond au fait de \click{} avec une souris à un seul
bouton sans aucun touche de modifications; \click{} sur
l'arrière-plan de l'image fait apparaître le menu ``World'' (voir
\figref{threeButtons:click});
nous utiliserons le terme \emph{\click} pour définir cette action;} % vf-only
\item[\actclickbtn:] \arelire{c'est le second bouton le plus utilisé; il est
utilisé pour afficher un menu contextuel \ie{} un menu qui fournit
différentes actions dépendant de la position de la souris comme le
montre \figref{threeButtons:actclick}. Si vous n'avez pas de souris
à multiples boutons, vous configurerez normalement la touche de
modifications \emph{Ctrl} pour effectuer cette même action avec
votre unique bouton de souris;
nous utiliserons l'expression ``\emph{\actclick}\footnote{En anglais,
le terme utilisé est ``to actclick''.}''.} % vf-only: 2 dernières
% lignes
\item[\metaclickbtn:] \arelire{vous pouvez finalement \emph{\metaclick{}} sur
un objet affiché dans l'image pour activer le
``\subind{Morphic}{halo} Morphic'' qui est une constellation d'icônes
autour de l'objet actif à l'écran; chaque icône représentant une poignée de contrôle
permettant des actions telles que \emph{changer la taille} ou
\emph{faire pivoter l'objet}, comme vous pouvez le voir sur
\figref{threeButtons:metaclick}~\footnote{Notez que les icônes
Morphic sont inactives par défaut dans \pharo, mais vous pouvez
les activer via le Preferences Browser que nous verrons plus
loin.}. % CHANGE 29247
En survolant lentement une icône avec le pointeur de votre souris,
une bulle d'aide en affichera un descriptif de sa fonction.
Dans \pharo, \metaclick dépend de votre système d'exploitation:
Soit vous devez maintenir {\sc Shift} \emph{Ctrl} ou {\sc Shift}
\arevoir{\emph{Option}} tout en \clickant.} % CHANGE 29247 - martial -
% je préfère Alt (ou les deux)
% \ab{This makes it sound like either {\sc shift} \emph{ctrl} or {\sc shift} \emph{alt} will work. On my (Mac OS) system, only the latter works. Perhaps we want to say: In \pharo, how you meta-click depends on your operating system. On Linux \ldots}
% Typically you will use a third modifier key, such as \emph{command} or \emph{meta} to \metaclick.
\end{description}
% %martial: il faut regler a la main la position et la hauteur de
% %l'encart avec la souris
% \begin{wrapfigure}[15]{r}{0.25\linewidth}
% % The parameters are the number of narrow lines to the right of the figure [19],
% % the placement {r} for right, and the width of the figure. Capital R will allow some float.
% % Inside the wrapfig environment, linewidth is special --- the width of the figure.
% \includegraphics[width=0.95\linewidth]{colouredMouse}
% \caption{La souris de l'auteur. Le clic avec la molette correspond au bouton bleu.\figlabel{colouredMouse}}
% \end{wrapfigure}
% \newpage
\dothis{Saisissez \ct{Time now}{}
%ajout
(expression retournant l'heure actuelle) dans le Workspace.
Puis \actclickz{} dans le Workspace et sélectionnez
\menu{print it}
%ajout
(en français, ``imprimez-le'') dans le menu qui apparaît.}
% \dothis{\Metaclickz{} sur le Workspace.
% Déplacez la poignée
% %martial: j'ai decide de mettre tout les Morphic handles dans le
% %repertoire 'figures' de la racine
% \rotateHandle{}
% %\raisebox{-0.4ex}{\includegraphics[width=1em]{morphicRotate}}
% située à proximité du coin inférieur gauche pour faire pivoter le Workspace.}
Nous recommandons aux droitiers de configurer leur souris pour
\click{} avec le bouton gauche
% ajout vf
(qui devient donc le bouton de \clickbtn),
\actclick{} avec le bouton droit et \metaclick{} avec la
molette de défilement cliquable, si elle est disponible.
% Avec une souris sans molette il est possible d'invoquer le menu halo
% en maintenant \ct{alt}, \ct{ctrl}
% ou \ct{option} pendant que vous cliquez sur le \ind{bouton rouge}.
% \ab{This doesn't work any more. This sentence either repeats or
% contradicts the meta-click item above; neither is a good idea.}
Si vous utilisez un Macintosh avec une souris à un bouton, vous pouvez
simuler le second bouton en maintenant la touche \clover{} enfoncée
en \clickant. Cependant, si vous prévoyez d'utiliser \pharo souvent, nous
vous recommandons d'investir dans un modèle à deux boutons au minimum.
% j'ai ajouté CTRL car sur mon linux ni alt ni fn.. ne marchent pour
% ça. seul ctrl le fait..
% note de martial: ca depend aussi du windowmanager; c'est une bonne
% idee de le mettre en tout cas
Vous pouvez configurer votre souris selon vos souhaits en utilisant
les préférences de votre système ou le pilote de votre dispostif de
pointage.
\ab{How can I get meta-click without a three-finger salute? Is this a secret?}
\pharo vous propose des réglages pour adapter votre souris et les
touches spéciales de votre clavier.
Dans l'outil de réglage des préférences nommé \ind{Preference
Browser} (\menu{System \go Preferences {\ldots\go}
Preference Browser\ldots} dans le menu \menu{World}), la catégorie
\menu{keyboard} contient une option \emph{swapControlAndAltKeys}
permettant de \arelire{permuter les fonctions ``\actclick{}'' et
``\metaclick''}.
Cette catégorie propose aussi des options afin de dupliquer les touches de
modifications.% et
% rendre une pression sur \ct{alt} équivalente à une pression sur \ct{ctrl}.
\begin{figure}[htb]
{\centerline {\includegraphics[width=\textwidth]{PreferenceBrowser}}}
\caption{Le Preference Browser.\figlabel{prefBrowser}}
\end{figure}
%=================================================================
\section{Le menu World}
\index{menu World}
\dothis{\Clickz dans l'arrière plan de \pharo.}
Le menu \menu{World} apparaît à nouveau.
La plupart des menus de \pharo ne sont pas modaux; ils ne bloquent pas
le système dans l'attente d'une réponse.
Avec \pharo vous pouvez maintenir ces menus sur l'écran en \clickant{} sur
l'icône en forme d'épingle au coin supérieur droit. Essayez!% Vous
% remarquerez que les menus apparaissent quand vous cliquez mais ne
% disparaissent pas quand vous relâchez votre bouton, ils restent
% visibles jusqu'à que vous ayez fait une sélection ou que vous ayez
% cliqué en dehors du menu. Tous les menus affichés à l'écran peuvent se déplacer en glissant leur barre de titre, comme n'importe quelle fenêtre.
Le menu World vous offre un moyen simple d'accéder à la plupart des
outils disponibles dans \pharo.
\dothis{Étudiez attentivement \arelire{le menu \menu{World} et, en
particulier, son sous-menu \menu{Tools}} (voir \figref{threeButtons:click}).}
Vous y trouverez une liste des principaux outils de \pharo.
Nous aurons affaire à eux dans les prochains chapitres.
%=================================================================
\section{Envoyer des messages} % CHANGE spécial Pharo
\dothis{Ouvrez un espace de travail Workspace et saisissez-y
le texte suivant:}
\begin{code}{}
BouncingAtomsMorph new openInWorld
\end{code}
\dothis{Maintenant \actclickz. Un menu devrait
apparaître. Sélectionnez l'option \menu{do it (d)} (en français,
``faîtes-le!'') comme le montre \figref{doit}.}
\begin{figure}[htb]
\centerline {\includegraphics[width=0.8\textwidth]{Doit}}
\caption{Évaluer une expression avec \menu{do it}.\figlabel{doit}}
\end{figure}
Une fenêtre contenant un grand nombre d'\bamfr
(en anglais, ``\emph{bouncing atoms}'') s'ouvre dans le coin supérieur
gauche de votre image \pharo.
%A window containing a large number of bouncing atoms should open in the top left of the \pharo image.
Vous venez tout simplement d'évaluer votre première expression \st.
%You have just evaluated your first \st expression!
Vous avez juste envoyé le message \ct{new}{} à la classe \bam
ce qui résulte de la création d'une nouvelle instance qui à
son tour \arevoir{reçoit le message}
\mbox{\ct{openInWorld}{}.} % REVOIR dans le texte orig. pas de notion de
% receveur mais on parle uniquement d'envoyer (dur à reformuler) - martial
% You just sent the message \ct{new} to the \bam class, resulting in a new \bam instance, followed by the message \ct{openInWorld} to this instance.
La classe \bam{} a décidé de ce qu'il fallait faire avec le message
\ct{new}{}: elle recherche dans ses \emph{méthodes} pour répondre de
façon appropriée au message \ct{new}{}
% vf
\arevoir{(\ie{} ``nouveau'' en français; ce que nous traduirons par
\emph{nouvelle instance})}.
% The \bam class decided what to do with the \ct{new} message, that is, it looked up its \emph{methods} for handling \ct{new} message and reacted appropriately.
De même, l'instance \bam recherchera dans ses méthodes comment
répondre à \mbox{\ct{openInWorld}{}.}
% Similarly the \bam instance looked up its method for responding to \ct{openInWorld} and took appropriate action.
Si vous discutez avec des habitués de \st, vous constaterez rapidement
qu'ils n'emploient généralement pas les expressions comme ``faire appel
à une opération'' ou ``invoquer une méthode'': ils diront ``envoyer
un message''.
% If you talk to Smalltalkers for a while, you will quickly notice that they generally do not use expressions like ``call an operation'' or ``invoke a method'', but instead they will say ``send a message''.
Ceci reflète l'idée que les objets sont responsables de leurs propres actions.
% This reflects the idea that objects are responsible for their own actions.
Vous ne \emph{direz} jamais à un objet quoi faire\,---\,vous lui
\emph{demanderez} poliment de faire quelque chose en lui envoyant un message.
% You never \emph{tell} an object what to do\,---\,instead you politely \emph{ask} it to do something by sending it a message.
C'est l'objet, et non pas vous, qui choisit la méthode appropriée pour
répondre à votre message.
% The object, not you, selects the appropriate method for responding to your message.
%=================================================================
\section{Enregistrer, quitter et redémarrer une session \pharo.}
\dothis{\arelire{\Clickz{} sur la fenêtre de démo des \bamfr{} et
déplacez-la où vous voulez. Vous avons maintenant la démo ``dans
la main''. Posez-la en \clickant.}}
\begin{figure}[htb]
%\begin{minipage}[b]{0.48\textwidth}
{\centerline{\includegraphics[width=0.35\textwidth]{atoms}}}
\caption{Une instance de \bam.\figlabel{atoms}}
%\end{minipage}
%\hfill
%\begin{minipage}[b]{0.48\textwidth}
% {\centerline{\includegraphics[width=0.7\textwidth]{saveAs}}}
% \caption{La boîte de dialogue \menu{save as\ldots}.\figlabel{saveas}}
%\end{minipage}
\end{figure}
\dothis{Sélectionnez \menu{World\go{}Save and quit} pour sauvegarder votre image et quitter \pharo{}.}
Les fichiers ``PBE.\ind{image}'' et ``PBE.\ind{changes}''
contenus dans votre dossier \textsf{Contents/Resources} ont changé.
Ces fichiers représentent l'image ``vivante'' de votre session \pharo au moment
qui précédait votre enregistrement avec \menu{Save and quit}.
Ces deux fichiers peuvent être copiés à votre convenance dans les
dossiers de votre disque pour y être utilisés plus tard: il faudra veiller
à ce que le fichier \emph{sources} soit présent et que l'exécutable de la machine
virtuelle soit informé de la nouvelle localisation de notre image. Pour le cas du
présent livre, il n'est pas souhaitable de toucher à ces fichiers mais si vous voulez
en savoir plus sur la possibilité de préserver l'image actuelle et changer d'image en utilisant
l'option \menu{Save as\ldots}{}, rendez-vous dans \faqref{saveas-oneclick}.
\dothis{%
Relancer \pharo{} en cliquant sur l'icône de votre programme (en fonction de votre système d'exploitation).}
Vous retrouvez l'état de votre session exactement tel qu'il était
avant que vous quittiez \pharo. La démo des \bamfr{} est toujours sur votre
fenêtre de travail et les atomes continuent de rebondir depuis la position
qu'ils avaient lorsque vous avez quitté.
En lançant pour la première fois \pharo, la \ind{machine virtuelle}
charge le fichier image que vous spécifiez. Ce fichier contient
l'instantané d'un grand nombre d'objets et surtout le code
pré-existant accompagné des outils de développement qui sont
d'ailleurs des objets comme les autres. En travaillant dans \pharo, vous
allez envoyer des messages à ces objets, en créer de nouveaux, et
certains seront supprimés et l'espace-mémoire utilisé sera récupéré
(\ie passé au ramasse-miettes ou \emph{garbage collector}).
En quittant \pharo vous sauvegardez un instantané de tous vos objets.
En sauvegardant par \menu{World\go{}Save}, vous remplacerez l'image courante par
l'instantané de votre session comme nous l'avons fait via \menu{Save and quit} mais
sans quitter le programme. % A REVOIR
Chaque fichier \emph{.image} est accompagné d'un fichier \emph{.changes}.
Ce fichier contient un journal de toutes les modifications que vous avez
faites en utilisant l'environnement de développement.
Vous n'avez pas à vous soucier de ce fichier la plupart du temps.
Mais comme nous allons le voir plus tard, le fichier \emph{.changes}
pourra être utilisé pour rétablir votre système \pharo à la suite d'erreurs.
L'image sur laquelle vous travaillez provient d'une image de \st-80 créée
à la fin des années 1970. Beaucoup des objets qu'elle contient sont là
depuis des décennies!
Vous pourriez penser que l'utilisation d'une image est incontournable pour
stocker et gérer des projets, mais comme nous le verrons bientôt il existe
des outils plus adaptés pour gérer le code et travailler en équipe sur des projets.
Les images sont très utiles mais nous les considérons comme une pratique un peu
dépassée et fragile pour diffuser et partager vos projets alors qu'il existe
des outils tels que Monticello qui proposent de biens meilleurs moyens de
suivre les évolutions du code et de le partager entre plusieurs développeurs.
\dothis{\arelire{\Metaclickz{} (en utilisant les touches de
modifications appropriées conjointement avec votre souris) sur la fenêtre
d'\bamfr\footnote{Souvenez-vous que vous pourriez avoir besoin
d'activer l'option \ct{halosEnabled}{} dans le Preference
Browser.}.}} % CHANGE 29247
%martial: le choix des noms 'poignee' 'icone' ... pourra etre change
Vous verrez tout autour une collection d'icônes \arelire{circulaires} colorées
nommée % CHANGE 29247
\subind{Morphic}{halo} de \bam; l'\emphsubind{Morphic}{icône}
\subind{Morphic}{halo} est aussi appelée \emphsubind{Morphic}{poignée}.
Cliquez sur la poignée rose pâle qui contient une croix; la fenêtre
de démo disparaît. % CHANGE
%(index Morphic vs halo) a revoir?
\seeindex{poignée}{Morphic, poignée}
\seeindex{icône}{Morphic, poignée}
\seeindex{halo}{Morphic, halo}
%=================================================================
\section{Les fenêtres Workspace et Transcript}
\seclabel{transcript}
% martial - REVOIR - j'ai choisi de merger les deux dothis
\dothis{Fermez toutes fenêtres actuellement ouvertes.
Ouvrez un \ind{Transcript} (via le menu \menu{World \go{} Tools}) et un \ind{Workspace}.
Positionnez et redimensionnez le Transcript et le Workspace
pour que ce dernier recouvre le Transcript.} % CHANGE
Vous pouvez redimensionner les fenêtres en glissant l'un de leurs
coins ou \arelire{en \metaclickant pour afficher le
\emph{halo} Morphic:} utilisez alors l'icône jaune située en bas à droite.
Une seule fenêtre est active à la fois; elle s'affiche au premier plan
et \arelire{son contour est alors mis en relief}. % CHANGE
Le Transcript est un objet qui est couramment utilisé pour afficher
des messages du système. C'est un genre de ``console''.
% Sachez que l'affichage dans la fenêtre Transcript est extrêment
% lent, donc si vous la conservez ouverte et que vous y affichez des
% résultats, certaines opérations peuvent être 10 fois plus lentes.
% De plus, le Transcript n'est pas conçu pour recevoir
% simultanément des messages à afficher provenant de plusieurs objets:
% il n'est pas protégé contre les accès concourrants (en anglais,
% \emph{thread-safe}), donc vous pourriez être témoin de
% comportements étranges si plusieurs objets tentent d'écrire de
% manière concourrante dans le Transcript.
% ON: I think the transcript has been made thread-safe now, right?
%%%% martial: Sat Dec 15 14:13:47 CET 2007
Les fenêtres Workspace (ou espace de travail) sont destinées à
y saisir vos expressions de code \st à expérimenter.
Vous pouvez aussi les utiliser simplement pour taper une quelconque
note de texte à retenir, comme une liste de choses à faire (en
anglais, \emph{todo-list}) ou des instructions pour quiconque est
amené à utiliser votre image.
Les Workspaces sont souvent employés pour maintenir une
documentation à propos de l'image courante, comme c'est le cas
dans l'image standard précédemment chargée (voir
\figref{startup}).
% originellement 'hello world'
\dothis{Saisissez le texte suivant dans l'espace de travail Workspace:}
\begin{code}{}
Transcript show: 'hello world'; cr.
\end{code}
%ajout
Expérimentez la sélection en double-\clickant{} dans l'espace de travail
à différents points dans le texte que vous venez de saisir.
% entire word, entire string, or the whole text ((diff: string and word?))
Remarquez comment un mot entier ou tout un texte est sélectionné
%selon l'endroit où vous cliquez.
selon que vous \clickz{} sur un mot, à la fin d'une chaîne de
caractères ou à la fin d'une expression entière.
\dothis{Sélectionnez le texte que vous avez saisi puis \actclickz{}.
Choisissez \menu{do it (d)}
%ajout
(dans le sens ``faites-le!'', \cad \emph{évaluer le code
sélectionné}) dans le menu contextuel.}
Notez que le texte ``hello world''~\footnote{NdT: C'est une tradition de la
programmation: tout premier programme dans un nouveau langage de
programmation consiste à afficher la phrase en anglais ``hello world''
signifiant ``bonjour le monde''.}
apparaît dans la fenêtre Transcript (voir \figref{helloworld}).
Refaites encore un \menu{do it (d)}
(Le \menu{(d)} dans l'option de menu \menu{do it (d)} vous indique que
le raccourci-clavier correspondant est \short{d}. Pour plus
d'informations, rendez-vous dans la prochaine section!).
\begin{figure}[htb]
\ifluluelse
{\centerline {\includegraphics[width=\textwidth]{HelloWorld}}}
\caption{\arelire{Les fenêtres sont superposées. Le Workspace est actif.}\figlabel{helloworld}}
\end{figure}
% Vous venez d'évaluer votre première
% expression \st!
% Vous avez seulement envoyé le message \ct{show: hello world} à
% l'objet \ct{Transcript} (\ct{show:} veut dire: afficher), suivi du
% message \ct{cr}
% %ajout
% (qui a le sens de \emph{carriage return}, \cad retour-chariot
% permettant de forcer le passage à la ligne suivante).
% Le \ct{Transcript} décide ensuite de quoi faire avec ce message; il
% cherche parmi ses \emph{méthodes} celles qui gèrent une réponse
% aux messages \ct{show:} et \ct{cr} et qui réagissent de façon
% appropriée.
%=================================================================
\section{Les raccourcis-clavier}
Si vous voulez évaluer une expression, vous n'avez pas besoin de
toujours passer par le menu accessible en \actclickant: les
raccourcis-clavier sont là pour vous. Ils sont mentionnés
dans les expressions parenthésées des options des menus. Selon
votre plateforme, vous pouvez être amené à presser l'une des
touches de modifications soit \texttt{Control}, \texttt{Alt},
\texttt{Command} ou \texttt{Meta} (nous les indiquerons de manière
générique par \short{\emph{touche}}).
\index{raccourci-clavier}
\seeindex{clavier!raccourci-clavier}{raccourci-clavier}
\seeindex{clavier!événement}{événement, clavier}
% martial: pour Morphic surtout
\dothis{Réévaluez l'expression dans le Workspace en utilisant
cette fois-ci le raccourci-clavier: \short{d}.}
\index{raccourci-clavier!do it}
En plus de \menu{do it}, vous aurez noté la présence de \menu{print it}
%ajout
(pour évaluer et afficher le résultat dans le même espace de travail),
de \menu{inspect it} (pour inspecter) et de \menu{explore it} (pour
explorer). Jetons un coup d'\oe il à ceux-ci.
\dothis{Entrez l'expression \ct{3 + 4}{} dans le Workspace. Maintenant
évaluez en faisant un \menu{do it} avec le raccourci-clavier.}
Ne soyez pas surpris que rien ne se passe!
Ce que vous venez de faire, c'est d'envoyer le message \ct{+}{} avec
l'argument \ct{4}{} au nombre \mbox{\ct{3}{}.}
Le résultat \lct{7} aura normalement été calculé et retourné, mais puisque votre espace de
travail Workspace ne savait que faire de ce résultat, la réponse a
simplement été jetée dans le vide. Si vous voulez voir le
résultat, vous devriez faire \menu{print it} au lieu
de \menu{do it}. En fait, \menu{print it} compile l'expression,
l'exécute et envoie le message \ct{printString}{} au résultat puis
affiche la chaîne de caractère résultante.
\dothis{Sélectionnez \ct{3 + 4}{} et faites \menu{print it} (\short{p}).}
Cette fois, nous pouvons lire le résultat que nous attendions (voir
\figref{printit}).
\index{raccourci-clavier!print it}
\begin{figure}[htb]
% \centerline {\includegraphics[width=0.4\textwidth]{PrintIt}}
\centerline {\includegraphics[width=0.8\textwidth]{PrintIt}}
\caption{Afficher le résultat sous forme de chaîne de
caractères avec \menu{print it} plutôt que de simplement
évaluer avec \menu{do it}.\figlabel{printit}}
\end{figure}
\needlines{3}
\begin{code}{@TEST}
3 + 4 --> 7
\end{code}
\noindent
Nous utilisons la notation \ct{-->}{} comme convention dans tout le
livre pour indiquer qu'une expression particulière donne un certain
résultat quand vous l'évaluez avec \menu{print it}.
\dothis{Effacez le texte surligné \mbox{``\ct{7}{}'';} comme \pharo devrait l'avoir
sélectionné pour vous, vous n'avez qu'à presser sur la touche
de suppression (suivant votre type de clavier \texttt{Suppr.} ou
\texttt{Del.}). Sélectionnez \ct{3 + 4}{} à nouveau et, cette fois,
faites une inspection avec \menu{inspect it} (\short{i}).}
%ajout
\index{raccourci-clavier!inspect it}
\index{inspecteur}
\seeindex{Inspector}{inspecteur}
\noindent
Vous devriez maintenant voir une nouvelle fenêtre appelée
\emphind{inspecteur} avec pour titre
\ct{SmallInteger: 7}{} (voir \figref{inspectit}).
L'inspecteur ou (sous son nom de classe) Inspector est un outil
extrêmement utile: il vous permet de naviguer et d'interagir avec
n'importe quel objet du système.
Le titre nous dit que \ct{7}{} est une instance de la classe
\clsind{SmallInteger}
%ajout
(classe des entiers sur 31 bits).
Le panneau de gauche nous offre une vue des variables d'instance de
l'objet en cours d'inspection. Nous pouvons naviguer entre ces
variables et le panneau de droite nous affiche leur valeur.
Le panneau inférieur peut être utilisé pour écrire des
expressions envoyant des messages à l'objet.
\begin{figure}[htb]
\centerline {\includegraphics[width=\textwidth]{InspectIt}}
\caption{Inspecter un objet.\figlabel{inspectit}}
\end{figure}
\dothis{Saisissez \ct{self squared}{} dans le panneau inférieur de
l'inspecteur que vous aviez ouvert sur l'entier \ct{7}{} et faites un
\menu{print it}.
%ajout
Le message \ct{squared}{} (carré) va élever le nombre \ct{7}{} lui-même \mbox{(\ct{self}{}).}}
\needlines{2}
\dothis{Fermez l'inspecteur. Saisissez dans un Workspace le
mot-expression \ct{Object}{} et explorez-le via \menu{explore it}
(\short{I}, i majuscule).}
\index{raccourci-clavier!explore it}
\index{explorateur}
\seeindex{Explorer}{explorateur}
Vous devriez voir maintenant une fenêtre intitulée \clsind{Object}
contenant le texte \mbox{$\triangleright$ \mbox{\ct{root: Object}}{}.}
Cliquez sur le triangle pour l'ouvrir (voir \figref{exploreit}).
\begin{figure}[htb]
\centerline {\includegraphics[width=0.7\textwidth]{ExploreIt}}
\caption{Explorer \mbox{\ct{Object}{}.}\figlabel{exploreit}}
\end{figure}
Cet explorateur (ou Explorer) est similaire à l'inspecteur mais il
offre une vue arborescente d'un objet complexe.
Dans notre cas, l'objet que nous observons est la classe \mbox{\ct{Object}{}.}
Nous pouvons voir directement toutes les informations stockées dans
cette classe et naviguer facilement dans toutes ses parties.
%=================================================================
% \section{\sqmap}
% \index{SqueakMap}
% %web-based catalogue
% \sqmap est un catalogue web des ``packages'' ou
% \ind{paquetage}{}s\,---\,applications et bibliothèques de programmes (dites
% aussi librairies)\,---\,que vous pouvez télécharger dans votre
% image.
% Les paquetages sont hébergés sur de nombreux serveurs de
% par le monde et sont maintenus par un grand nombre de personnes. Certains de ces paquetages ne fonctionnent que sur une version spécifique de \pharo.
% \lr{Maybe mention Package Universes (SqueakMap is not maintained anymore)}
% \dothis{Ouvrez \menu{World \go open\ldots \go \sqmap Package Loader}.}
% Vous aurez besoin d'une connection Internet pour que cela
% fonctionne. Au bout d'un certain temps, la fenêtre du gestionnaire
% de chargement \sqmap devrait apparaître (voir \figref{sokoban}).
% Sur le côté gauche, vous pouvez voir une longue liste de
% paquetages. Le champ de saisie situé dans le coin supérieur gauche
% est un panneau de recherche pour vous aider à trouver ce que vous
% cherchez dans la liste.
% Saisissez ``\ind{Sokoban}'' dans ce champ de recherche et
% tapez sur la touche \textsc{Entrée}.
% Cliquer sur le triangle dirigé vers le nom du paquetage vous
% révèle une liste des versions disponibles. Quand un paquetage ou
% une version est sélectionné, des informations à leur sujet sont
% affichées dans le panneau de droite.
% Naviguez dans la dernière version du jeu \ct{Sokoban}.
% Activez le menu contextuel du panneau de liste en cliquant dans cet
% espace avec le \ind{bouton jaune} et choisissez \menu{install} pour
% installer le paquetage sélectionné
% (si \pharo se plaint qu'il n'est pas sûr que cette version du jeu
% fonctionne dans votre image, répondez aux questions par ``yes''
% %ajout
% pour confirmer l'installation).
% Remarquez qu'une fois que le paquetage a été installé, il est
% marqué d'une astérisque dans la liste du \sqmap Package Loader.
% \begin{figure}[htb]
% \ifluluelse
% {\centerline {\includegraphics[width=\textwidth]{SqueakMap}}}
% {\centerline {\includegraphics[width=0.8\textwidth]{SqueakMap}}}
% \caption{Utiliser \sqmap pour installer le jeu Sokoban.\figlabel{sokoban}}
% \end{figure}
% \dothis{Après avoir installé ce paquetage, démarrez \ct{Sokoban}
% en évaluant \ct{SokobanMorph random openInWorld} dans un Workspace
% %ajout
% (souvenez-vous de faire \menu{do it} sur toute la sélection).}
% % You can also try the \ct{NsGame}; execute it using \ct{NsGame new openInWorld}.
% % ON: I could not find NsGame anywhere!
% Le panneau inférieur gauche du \sqmap Package Loader fournit
% plusieurs possibilités pour filtrer la liste des paquetages. Vous
% pouvez choisir de ne voir que les paquetages qui sont compatibles avec
% une version particulière de \pharo
% %ajout
% (\emph{Squeak versions}),
% ou qui sont de la famille des jeux
% %ajout
% (\emph{Entertainment\go{}Games}),
% \etc.
%=================================================================
\section{Le navigateur de classes Class Browser}
Le navigateur de classes nommé
\ind{Class Browser}~\footnote{\arevoir{Ce navigateur est confusément référé sous les noms ``System Browser''
ou ``Code Browser''. \pharo{} utilise l'implémentation
\ind{OmniBrowser} du navigateur connue aussi comme ``OB'' ou
``Package Browser''. Dans ce livre, nous utiliserons simplement le
terme de Browser ou, s'il y a ambiguïté, nous parlerons de
navigateur de classes}.} est un des
outils-clé pour programmer. % CHANGE
Comme nous le verrons bientôt, il y a plusieurs navigateurs ou
\emph{browsers} intéressants disponibles pour \pharo, mais c'est le
plus simple que vous pourrez trouver dans n'importe quelle image, que
nous allons utiliser ici. % REVOIR (toujours vrai?)
\seeindex{navigateur de classes}{Browser}
\seeindex{Class Browser}{Browser}
\dothis{Ouvrez un navigateur de classes en sélectionnant \menu{World
\go{} Class Browser}~\footnote{\arelire{Si votre Browser ne
ressemble pas à celui visible sur \figref{classBrowser}, vous
pourriez avoir besoin de changer le navigateur par défaut. Voyez
\faqref{packagebrowser}}}.}
% rene : \faqref{packagebrowser} ne donne pas la reference dans la FAQ
\begin{figure}[htb]
\ifluluelse
{\centerline {\includegraphics[width=\textwidth]{ClassBrowser1}}}
{\centerline {\includegraphics[width=0.7\textwidth]{ClassBrowser1}}}
\caption{Le navigateur de classes (ou Browser) affichant la
méthode \ct{printString}{} de la classe Object.
\figlabel{classBrowser}}
\end{figure}
Nous pouvons voir un navigateur de classes sur \figref{classBrowser}.
La barre de titre indique que nous sommes en train de parcourir la
classe \clsind{Object}.
À l'ouverture du Browser, tous les panneaux sont vides excepté le premier à gauche.
Ce premier panneau liste tous les \emph{paquetages}
% vf
(en anglais, \emph{packages}) connus;
ils contiennent des groupes de \arelire{classes parentes}. %REVOIR
% Rene : hesitation entre apparentées et parentes (voire connexes)
%\index{catégorie}
\dothis{\clickz{} sur le paquetage \scatind{Kernel}.}
Cette manipulation permet l'affichage dans le second panneau de toutes les
classes du paquetage sélectionné.
\dothis{Sélectionnez la classe \clsind{Object}.}
Désormais les deux panneaux restants se remplissent.
Le troisième panneau affiche les \emph{protocoles} de la classe
sélectionnée.
Ce sont des regroupements commodes pour relier des méthodes
connexes. Si aucun \ind{protocole} n'est sélectionné, vous devriez
voir toutes les méthodes disponibles de la classe dans le
quatrième panneau.
\dothis{Sélectionnez le protocole \protind{printing},
%ajout
protocole de l'affichage.}
Vous pourriez avoir besoin de faire défiler (avec la barre de
défilement) la liste des protocoles pour le trouver.
Vous ne voyez maintenant que les méthodes relatives à
l'affichage.
\dothis{Sélectionnez la méthode \mthind{Object}{printString}.}
Dès lors, vous voyez dans la partie inférieure du Browser
le code source de la méthode \ct{printString}{} partagé par tous
les objets
%ajout
(tous dérivés de la classe Object, exception faite de ceux qui la surchargent).
%=================================================================
\section{Trouver des classes}
Il existe plusieurs moyens de trouver une classe dans \pharo.
Tout d'abord, comme nous l'avons vu plus haut, nous pouvons savoir (ou
deviner) dans quelle catégorie elle se trouve et, de là, naviguer
jusqu'à elle via le navigateur de classes.
\index{Browser}
\seeindex{Browser!trouver une classe}{classe, recherche}
\index{classe!recherche}
\seeindex{classe!trouver}{classe, recherche}
Une seconde technique consiste à envoyer le message \ct{browse}{}
(ce mot a le sens de ``naviguer'') à la classe, ce qui a pour effet
d'ouvrir un navigateur de classes sur celle-ci
%ajout
(si elle existe bien sûr).
Supposons que nous voulions naviguer dans la classe \clsind{Boolean}
(la classe des booléens).
\dothis{Saisissez \ct{Boolean browse}{} dans un Workspace et faites un \menu{do it}.}
Un navigateur s'ouvrira sur la classe \ct{Boolean}{} (voir \figref{browseBoolean}).
Il existe aussi un \ind{raccourci-clavier} \short{b} (browse) que vous
pouvez utiliser dans n'importe quel outil où vous trouvez un nom de
classe;
\index{raccourci-clavier!browse it}
sélectionnez le nom de la classe
%ajout
(\parex \mbox{\ct{Boolean}{})}
puis tapez \short{b}.
\dothis{Utilisez le raccourci-clavier pour naviguer dans la classe \mbox{\ct{Boolean}{}.}}
\begin{figure}[hbt]
{\centerline {\includegraphics[width=\textwidth]{Kernel-objects-boolean}}}
\caption{Le navigateur de classes affichant la définition de la
classe \mbox{\ct{Boolean}{}.}\figlabel{browseBoolean}}
\end{figure}
Remarquez que nous voyons une \emph{définition de classe}
quand la classe \mbox{\ct{Boolean}{}} est sélectionnée mais sans qu'aucun
protocole ni aucune méthode ne le soit
% martial: on utilise le PLURIEL lorsque l’action ou l’état peut être
% rapporté aux deux sujets ; et le SINGULIER, lorsqu’il ne peut être
% rapporté qu’à un seul à la fois.
(voir \figref{browseBoolean}).
Ce n'est rien de plus qu'un message \st ordinaire qui est envoyé à
la classe parente lui réclamant de créer une sous-classe.
Ici nous voyons qu'il est demandé à la classe \ct{Object}{} de
créer une sous-classe nommée \ct{Boolean}{} sans aucune variables
d'instance, ni variables de classe ou ``pool dictionaries'' et de
mettre la classe \ct{Boolean}{} dans la catégorie \scatind{Kernel-Objects}.
% The lower pane shows the \emph{class comment} --- a piece of plain text describing the class.
Si vous \clickz{} sur le bouton \button{?} en bas du panneau
de classes, vous verrez le \subind{classe}{commentaire} de classe
dans un panneau dédié comme le montre \figref{classComment}. % CHANGE
% Le nouveau panneau en dessous nous montre le \emph{commentaire de
% classe}\,---\,quelques paragraphes de texte décrivant la classe.
% Si vous cliquez sur le bouton \button{?} à la base du panneau des
% classes
% %ajout
% (\cad le second),
% vous pouvez voir le \subind{classe}{commentaire} de classe dans un
% panneau dédié.
% \ab{I thought that this was supposed to be a \emph{Quick} tour! And here we are describing a tool that I have used maybe twice in 10 years! In any case, this description should be deferred to the \textbf{Environment} chapter}
% \on{I don't see why. I use the hierarchy browser a lot! I think it is really useful to know from the beginning, to help you find your through the hierarchy.}
% Si vous souhaitez explorer la hiérarchie des héritages de \pharo, le
% navigateur nommé \emphind{Hierarchy Browser} vous y aidera.
% Ça peut être utile si vous êtes en train de chercher une
% sous-classe ou une super-classe inconnue d'une classe connue.
% Le Hierarchy Browser ou navigateur hiérarchique est similaire au Browser excepté que la liste des classes est arrangée comme
% une arborescence indentée reflétant l'héritage.
% \dothis{Cliquez sur le bouton \button{hierarchy} dans le navigateur de
% classes lorsque la classe \ct{Boolean} est sélectionnée.}
% \noindent
% Il est résulte l'ouverture d'un Hierarchy Browser affichant les
% super-classes et les sous-classes de \clsind{Boolean}.
% % (\figref{booleanhierarchybrowser}).
% Naviguez un peu dans la super-classe et les sous-classes immédiates
% de \ct{Boolean}.
\begin{figure}[hbt]
\centerline {\includegraphics[width=\textwidth]{classComment}}
\caption{Le commentaire de classe de \mbox{\ct{Boolean}{}.}
\figlabel{classComment}}
\end{figure}
Souvent, la méthode la plus rapide pour trouver une classe consiste
à la rechercher par son nom. Par exemple, supposons que vous êtes
à la recherche d'une classe inconnue qui représente les jours et
les heures.% dates and times.
\dothis{Placez la souris dans le panneau des paquetages
du Browser et tapez \short{f} ou sélectionnez \menu{find
class\ldots (f)} dans le menu contextuel accessible en
\actclickant.
Saisissez ``time''
%ajout
(\cad le temps, puisque c'est l'objet de notre quête)
dans la boîte de dialogue et acceptez cette entrée.}
\noindent
Une liste de classes dont le nom contient ``time'' vous sera
présentée (voir \figref{findit}). Choisissez-en une, disons,
\mbox{\ct{Time}{};}
%martial: ca fait longtemps qu'il n'y a plus ce comportement
un navigateur l'affichera avec un commentaire de classe
suggérant d'autres classes pouvant être utiles. Si vous voulez
naviguer dans l'une des autres classes, sélectionnez son nom (dans
n'importe quelle zone de texte) et tapez \short{b}.
\index{raccourci-clavier!find\ldots}
\index{raccourci-clavier!browse it}
\begin{figure}[hbt]
\centerline{
\includegraphics[width=0.45\textwidth]{FindIt}
\hspace{1cm}
\includegraphics[width=0.45\textwidth]{TimeClasses}
}
\caption{Rechercher une classe d'après son nom.\figlabel{findit}}
\end{figure}
Notez que si vous tapez le nom complet (et correctement capitalisé
%ajout
\cad en respectant la casse)
de la classe dans la boîte de dialogue de recherche (find), le
navigateur ira directement à cette classe sans montrer aucune liste
de classes à choisir.
%=================================================================
\section{Trouver des méthodes}
\seclabel{quick:methodFinder}
Vous pouvez parfois deviner le nom de la méthode, ou tout au moins
une partie de son nom plus facilement que le nom d'une classe.
Par exemple, si vous êtes intéressé par la connaissance du temps
actuel, vous pouvez vous attendre à ce qu'il y ait
%martial: phrase differente pour le sens en francais
une méthode affichant le temps \emph{maintenant}: comme la langue de \st
est l'anglais et que \emph{maintenant} se dit ``now'', une méthode
contenant le mot ``now'' a de forte chance d'exister.
Mais où pourrait-elle être?
L'outil \emphind{Method Finder} peut vous aider à la trouver.
\seeindex{Browser!trouver une méthode}{méthode, recherche}
\index{méthode!recherche}
\seeindex{méthode!trouver}{méthode, recherche}