1 00:00:00,040 --> 00:00:00,080 "Trouver des méthodes avec le Finder" 2 00:00:00,120 --> 00:00:00,160 Quentin Ducasse. 3 00:00:03,800 --> 00:00:04,560 -Bonjour à tous. 4 00:00:04,880 --> 00:00:07,240 Dans cette vidéo, on s'intéressera à un outil appelé le Finder. 5 00:00:07,560 --> 00:00:09,360 On le trouve en allant dans le menu Pharo, 6 00:00:09,680 --> 00:00:12,080 puis l'onglet Tools et enfin, Finder. 7 00:00:12,400 --> 00:00:15,760 Cet outil permet de rechercher dans l'environnement Pharo 8 00:00:16,560 --> 00:00:18,720 des méthodes, des exemples, etc. 9 00:00:19,040 --> 00:00:21,200 Par exemple, imaginons qu'on cherche le mot "match" 10 00:00:21,520 --> 00:00:24,680 dans les noms des méthodes, donc Selectors. 11 00:00:25,000 --> 00:00:27,000 Si on cherche pour ça, on va voir 12 00:00:27,600 --> 00:00:31,760 toutes les méthodes du système qui ont "match" inclus dans leur nom. 13 00:00:32,080 --> 00:00:34,680 Donc, on peut voir les méthodes en cliquant dessus. 14 00:00:35,000 --> 00:00:37,960 On va voir le corps de méthode qui est en dessous. Voilà. 15 00:00:38,280 --> 00:00:40,880 On peut voir la classe qui les implémente entre parenthèses. 16 00:00:41,200 --> 00:00:42,840 Si jamais on a le triangle sur la gauche, 17 00:00:43,160 --> 00:00:46,920 ça va être les classes qui implémentent la méthode avec le même nom. 18 00:00:47,240 --> 00:00:49,680 Par exemple, si on a deux classes qui implémentent cette méthode-là. 19 00:00:50,000 --> 00:00:52,320 En cliquant ici, on peut aller voir la différence entre les deux 20 00:00:52,640 --> 00:00:54,440 et on peut aussi, en cliquant sur Browse, 21 00:00:54,760 --> 00:00:57,560 arriver directement sur la méthode dans le système Browser. 22 00:00:57,880 --> 00:01:03,240 Même si c'est très utile, il y a des cas où c'est plutôt le comportement 23 00:01:03,560 --> 00:01:06,440 que notre fonction aimerait avoir sans savoir son nom, 24 00:01:06,760 --> 00:01:09,320 et c'est un cas où on peut utiliser des exemples. 25 00:01:09,640 --> 00:01:11,520 Donc, on va cliquer sur Exemples 26 00:01:12,400 --> 00:01:17,920 et imaginons qu'on cherche une méthode qui a une chaîne de caractères "ab*" 27 00:01:18,720 --> 00:01:23,720 et une autre chaîne de caractères "abcd" va appliquer cette méthode 28 00:01:24,040 --> 00:01:25,560 et nous renvoyer "true". 29 00:01:25,880 --> 00:01:29,200 On peut écrire ça comme ça, séparer les paramètres par des points 30 00:01:29,520 --> 00:01:31,240 et mettre le résultat en dernier. 31 00:01:31,760 --> 00:01:36,760 Si on clique sur Search, on va voir toutes les méthodes qui ont rendu "true" 32 00:01:37,080 --> 00:01:40,200 en prenant comme argument les deux arguments qu'on lui a passés. 33 00:01:40,520 --> 00:01:44,880 Une méthode qui pourrait nous intéresser, c'est le "match" qu'on cherchait avant. 34 00:01:45,200 --> 00:01:47,320 Si on déroule en cliquant sur le triangle, 35 00:01:47,640 --> 00:01:51,000 on verra toutes les classes du système 36 00:01:51,320 --> 00:01:53,480 qui implémentent une méthode qui s'appelle "match". 37 00:01:53,800 --> 00:01:58,280 Si on descend, on arrive à "*String", celle avec l'étoile sur la gauche. 38 00:01:58,600 --> 00:02:01,880 Ça veut dire que c'est la méthode "match" qui, 39 00:02:02,200 --> 00:02:05,040 étant donné les arguments qu'on lui a donnés, a renvoyé "true". 40 00:02:05,760 --> 00:02:07,800 C'est sûrement celle-là qui va nous intéresser. 41 00:02:08,120 --> 00:02:10,240 On peut se servir d'autres exemples comme... 42 00:02:10,560 --> 00:02:16,640 Si on met : "11.2.5", donc une espèce de division, 43 00:02:16,960 --> 00:02:20,840 si on cherche, on voit qu'on arrive bien sur la division entière 44 00:02:21,160 --> 00:02:24,960 et elle est particulièrement implémentée dans les "Entiers" 45 00:02:25,280 --> 00:02:27,120 ou "Nombre" ou "Smallinteger". 46 00:02:27,440 --> 00:02:29,560 On peut, par exemple, demander 5,5 au lieu de 5. 47 00:02:30,000 --> 00:02:32,240 On obtient la division plus classique. 48 00:02:32,560 --> 00:02:37,240 Si on regarde cette division, on la retrouvera dans "Fraction" ou "Nombre". 49 00:02:37,560 --> 00:02:41,000 C'est un outil extrêmement puissant pour rechercher des exemples. 50 00:02:41,320 --> 00:02:43,840 Une des autres choses que j'aimerais vous montrer, c'est... 51 00:02:44,160 --> 00:02:48,200 Par exemple, imaginons qu'on cherche une méthode 52 00:02:48,520 --> 00:02:51,480 qui prend comme argument un tableau avec trois entiers, 53 00:02:51,800 --> 00:02:54,400 qui prend un autre entier, par exemple 4, 54 00:02:54,720 --> 00:02:56,680 et qui va nous renvoyer le premier élément. 55 00:02:57,000 --> 00:03:00,080 On aimerait qu'il recherche dans le premier, le deuxième, le troisième 56 00:03:00,400 --> 00:03:02,880 et qu'il reboucle pour nous rendre le premier élément. 57 00:03:03,200 --> 00:03:05,880 Donc, si on cherche ça, on va avoir "atWrap" 58 00:03:06,200 --> 00:03:08,080 qui va nous rendre ce qu'on lui a demandé. 59 00:03:08,400 --> 00:03:10,880 On voit que c'est défini dans "Array" et "SequenceableCollection". 60 00:03:11,200 --> 00:03:13,720 Si on regarde les méthodes définies dans ces deux classes, 61 00:03:14,040 --> 00:03:17,760 on peut voir que les deux ont des commentaires entre guillemets 62 00:03:18,080 --> 00:03:20,280 qui ne sont pas de la même couleur que les autres. 63 00:03:20,600 --> 00:03:22,440 Ceux-là ont la couleur d'un code normal. 64 00:03:22,760 --> 00:03:27,000 C'est parce que ce sont des exemples qu'on peut exécuter nous-mêmes. 65 00:03:27,320 --> 00:03:29,800 Si on veut avoir une idée de comment la fonction fonctionne, 66 00:03:30,120 --> 00:03:34,280 on a juste à le surligner, puis l'imprimer, donc Cmd+P. 67 00:03:34,600 --> 00:03:36,200 Et voilà. On peut voir le résultat. 68 00:03:36,520 --> 00:03:39,080 Ces exemples-là sont très intéressants 69 00:03:39,400 --> 00:03:42,040 et vous pouvez les trouver définis dans plusieurs méthodes 70 00:03:42,360 --> 00:03:44,480 pour vous expliquer comment elles fonctionnent. 71 00:03:44,800 --> 00:03:47,160 Une des autres choses que permet le Finder, 72 00:03:47,480 --> 00:03:48,760 c'est de chercher des pragmas. 73 00:03:49,080 --> 00:03:53,280 Si, par exemple, on cherche "menu" et qu'on sélectionne l'onglet Pragmas... 74 00:03:53,600 --> 00:03:57,640 Si on cherche pour ça, on verra que les pragmas sont définies... 75 00:03:57,960 --> 00:04:01,120 Là, on peut avoir la pragma "contextMenu". Elle a été trouvée. 76 00:04:01,440 --> 00:04:04,720 On peut la chercher dans, par exemple, cette classe-ci. 77 00:04:05,040 --> 00:04:06,280 On va voir la pragma qui est là. 78 00:04:06,600 --> 00:04:08,000 Les pragmas sont des annotations 79 00:04:08,320 --> 00:04:10,280 pouvant être utilisées plus tard par le système 80 00:04:10,600 --> 00:04:13,320 pour fonctionner de manière différente et faire des requêtes. 81 00:04:13,680 --> 00:04:18,160 Par exemple, ici, ça va être utilisé dans l'interface graphique de Pharo. 82 00:04:19,280 --> 00:04:22,840 Et si on veut chercher le mot "menu" mais dans tout le code source du système, 83 00:04:23,160 --> 00:04:24,400 on peut cliquer sur Source. 84 00:04:24,720 --> 00:04:26,920 Là, il va nous analyser toutes les sources du système 85 00:04:27,240 --> 00:04:29,280 de toutes les méthodes pour chercher le mot "menu" 86 00:04:29,600 --> 00:04:32,320 que ce soit dans le nom de la méthode... 87 00:04:32,640 --> 00:04:34,600 Ici, il n'y est pas, mais ici, il y a "menu". 88 00:04:34,920 --> 00:04:37,560 Ou ça peut être... On va avoir ici, "FTTableMorph". 89 00:04:37,880 --> 00:04:39,760 Ce n'est pas dans le nom de la classe non plus, 90 00:04:40,080 --> 00:04:43,440 mais on peut voir que le mot "Menu" est utilisé par cette méthode-là. 91 00:04:44,000 --> 00:04:47,640 Source prend plus de temps, car il regardera toutes les méthodes de Pharo, 92 00:04:47,960 --> 00:04:50,160 mais il donne un résultat qui est soit dans le nom de la méthode, 93 00:04:50,480 --> 00:04:53,280 soit dans le nom de la classe, soit dans le corps de la méthode lui-même. 94 00:04:53,600 --> 00:04:55,200 C'était une vidéo qui parlait du Finder. 95 00:04:55,520 --> 00:04:58,080 C'est un outil très puissant que je vous encourage à utiliser 96 00:04:58,400 --> 00:05:01,280 surtout quand il est couplé avec les exemples 97 00:05:01,600 --> 00:05:03,560 pour retrouver un comportement. 98 00:05:03,880 --> 00:05:06,120 Ça peut vous permettre de vous rappeler les exemples 99 00:05:06,440 --> 00:05:09,200 qui sont donnés dans les commentaires de méthodes.