Next: Script avec deux paramètres, Previous: Script sans paramètre, Up: Script Pharo [Index]
Prenons l’exemple d’un script qui étant donné un polygone va :
Cet exemple montre comment faire des calculs à partir de l’état d’un objet – un polygone – et modifier un attribut visuel d’un objet – sa couleur. Étant donné que le langage informatique Pharo des scripts est le même que celui de Dr.Geo, nous montrons que l’étude du fonctionnement interne de Dr.Geo permet d’utiliser au mieux les scripts.
Enfin les trois constituants d’un objet mathématique sont exposés : hiérarchies des classes DrGMathItem pour le modèle mathématique, DrGMathItemCostume pour la représentation visuelle et DrGCostumeStyle pour gérer les attributs visuels (couleur, formes,...).
La procédure pour créer un script avec un paramètre d’entrée est sensiblement la même. Toutefois un argument de type polygone est nécessaire, en effet lors de son utilisation il faut choisir un polygone dans la figure. Les paramètres du constructeur de ce script – à invoquer par le menu ...Script → Créer un script... ressembleront à la figure ci-jointe – See scriptConstructorOneArg.
La logique de ce script est implémentée dans sa méthode
compute
. Elle est la suivante :
compute
La méthode principale compute
du script :
compute | diag1 diag2 points mid1 mid2| self paintRed. self isQuad ifFalse: [ ^ 'Je ne suis même pas un quadrilatère !' ]. points := self arg1 points. diag1 := points first - points third. mid1 := points first + points third / 2. diag2 := points second - points fourth. mid2 := points second + points fourth / 2. (diag1 r = diag2 r and: [mid1 = mid2]) ifTrue: [ self paintBlue. ^ 'Je suis un rectangle :)' ] ifFalse: [ ^ 'Je ne suis PAS un rectangle :(' ].
Quelques explications :
Passons maintenant aux trois autres méthodes de ce script, à savoir paintRed, paintBlue et isQuad :
paintRed self costume1 style color: Color red
paintBlue self costume1 style color: Color blue
Le message #costume1 demande le costume du premier argument du script, à savoir le costume du polygone. Dans Dr.Geo, le costume d’un objet permet à la fois l’accès au modèle mathématique et à sa représentation graphique ainsi que ses attributs associés de style15. Ces deux méthodes demandent donc le style du costume (message #style) pour lui envoyer ensuite le message à mot clé #color: avec comme argument la couleur souhaitée.
Les messages à mot clé sont une spécificité de Pharo : les arguments sont intercalés dans le nom du message.
La dernière méthode annexe est triviale, elle demande au modèle (le polygone retourné par la méthode arg1) sa liste des sommets, puis la taille de cette liste. Le polygone est un quadrilatère si cette taille est de 4 :
isQuad ^ self arg1 points size = 4
Après la saisie de chacune de ces méthodes, le code source doit être sauvé et compilé par le raccourci clavier Ctrl-s.
Pour l’utilisation du script (...Script → Utiliser un script...) Dr.Geo attend que l’utilisateur clique sur un polygone, puis sur un emplacement de la figure.
Selon le type d’objet en référence, diverses méthodes sont disponibles ; qui pour obtenir sa valeur, qui pour obtenir ses coordonnées, etc. Le répertoire des méthodes est disponible depuis la section Méthodes de référence des scripts See api-dgs.
Pour découvrir le protocole de cette classe, écrire son nom dans un Workspace, le sélectionner à la souris puis presser les touches Ctrl-b, un navigateur de classes s’affiche alors sur cette classe, il permet de naviguer et d’étudier son code source.
Pour être précis, un script reçoit toujours par sa variable arguments les costumes des objets sur lesquels l’utilisateur a cliqué ; la méthode arg1 donne alors le modèle par un appel arguments first mathItem, tandis que la méthode costume1 se contente de faire arguments first.
Next: Script avec deux paramètres, Previous: Script sans paramètre, Up: Script Pharo [Index]