# 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 $z\mapsto z^{2}$ dans $\mathbb {C}$.

## 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
À 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
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 $(3+2i)^{2}=5+12i$.

## 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:
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: