Programmation objet et géométrie/Création d'une méthode en Smalltalk

=Création d'une méthode pour un objet existant=
D'après le livre "Pharo par l'exemple", créer une méthode est aussi aisé (et dangereux) qu'en modifier une. En fait, il suffit de modifier également le nom de la méthode pour éviter de l'écraser. Dans ce qui suit, on va par exemple créer une nouvelle méthode pour l'objet "Point", qui va réaliser la transformation conforme formula_1 dans formula_2.
Où placer la méthode?
Pour bénéficier tout de suite d'un héritage intéressant, on utilise le "browser" de DrGeoII (en réalité, de Pharo) pour chercher, dans la catégorie de classes "Graphics-Primitives", la classe "Point", qui possède déjà des "point functions", il suffit d'en choisir une (par exemple "sign") et d'écraser son texte par 
squared
 "répond le point dont l'affixe est le carré complexe du point de départ"
 "ou éleve le point au carré, d'où le nom de la méthode..."
 ^ (x*x - (y*y) @ (2*x*y)).
À ce stade on voit que le signe d'un point s'appelle maintenant "squared" ce qui fait tout de même un peu apprenti sorcier!
Mais en sauvegardant le résultat, moyennant l'entrée du nom du programmeur et un éventuel débogage, on constate qu'une nouvelle méthode a effectivement été créée:
Test de la méthode.
Pour tester la nouvelle méthode, on peut ouvrir un "workspace" et y écrire
(3@2) squared.
Ensuite, il suffit par exemple de sélectionner le tout et de l'"inspecter" (ou écrire "(3@2) squared inspect." et le "DoIt"er...):
On voit que formula_3.
Utilisation dans DrGeoII.
Puisque dorénavant cette méthode fait partie de Smalltalk, elle est accessible à DrGeoII aussi, par exemple sous la forme d'un script DrGeo, qu'on peut appeler "carre" et dont le script appelle la méthode "squared" précédemment créée:
carre: UnPoint
 "élève un point (ou plutôt son affixe) au carré"
 ^UnPoint point squared.
Le script apparaît sans la fenêtre de scripts de DrGeoII:
Il suffit de l'enregistrer pour pouvoir l'utiliser. Ce qui se fait en cliquant sur l'icône de scripts de DrGeoII, en le choisissant:
Après ça, en cliquant sur un point pour le sélectionner, DrGeoII n'attend plus qu'un clic pour afficher les coordonnées de son transformé:
Ci-dessus, le point "P" a été placé sur "i", ce qui illustre que le carré de celui-ci est -1.
Application.
À partir des coordonnées créées par le script, on peut créer un point (avec l'outil "point par coordonnées" de DrGeoII) et voir comment fonctionne la transformation.
En répétant les dernières étapes ci-dessus avec un point "P" lié à une droite, l'outil "lieu" permet de vérifier que l'image de celle-ci est une parabole. Avec un cercle (en vert), l'image (en rouge) peut prendre des allures très différentes, dont voici un exemple:
Exercice: Ajouter au même objet "Point" une méthode "joukovski" qui réalise la transformation de Joukovski.
Version Scratch.
Comme Scratch est aussi écrit en "Smalltalk", et dispose aussi d'un browser et de workspaces, on peut y refaire la manip (sauf la partie géométrie dynamique).
Accès à Squeak depuis Scratch.
Comment relever la jupe de Scratch.
Un "Shift+clic" sur la boucle du "R" de "ScRatch" permet d'abandonner le mode "plein écran" et d'accéder à la machine virtuelle Squeak, en relevant légèrement sa jupe, ce qui révèle une bande de peau blanche (normal, elle est toujours cachée par la jupe d'habitude):
Les secrets de la peau dénudée.
Entre beaucoup d'autres choses, il y a un "browser", que l'on peut ouvrir en sélectionnant successivement "ouvrir":
puis "browser":
Écriture de la méthode.
En explorant le browser, on retrouve l'objet "Point" (c'est un objet de smalltalk, pas de DrGeoII, il est donc aussi présent, tant avec Pharo qu'avec avec Scratch). On peut alors y créer la méthode "squared":
Utilisation.
Un nouveau clic dans la zone vide permet d'ouvrir un workspace ("open" puis "workspace"), accessible à l'inspecteur, et y refaire la manipulation décrite ci-dessus:

Livre de cuisine/Tarte aux kiwis
Cette recette de tarte est constituée de rondelles de kiwis recouverts d'une garniture d'œuf et de crème.
Ingrédients.
Pour un moule de :

Plantes messicoles de l'Avesnois/Atlas des plantes messicoles/Présentation des espèces secondaires/Allium vineale L.