Next: , Up: Figure Smalltalk   [Index]


7.1 Figure Smalltalk par l’exemple

En lui-même Smalltalk est un langage de très haut niveau. Lorsqu’une figure est définie dans ce langage, nous disposons également de toute sa puissance pour par exemple définir récursivement telle partie de la figure, ou bien pour placer aléatoirement certains objets de telle sorte qu’à chaque ouverture de la figure, celle-ci soit légèrement différente. Bref, les FSD sont libérées du carcan de l’interface graphique tout en étant renforcées par le langage Smalltalk.

Une FSD est un code source Smalltalk à exécuter dans un espace de travail ...Clic arrière-plan → Outils → Espace de travail...20 C’est une fenêtre texte depuis laquelle du code Smalltalk est écrit et exécuté. On peut aussi y coller du texte par Ctrl-v. See workspace, pour plus d’information sur cet outil.

Nous allons étudier plusieurs exemples, chacun d’eux sera écrit dans un espace de travail et exécuté en sélectionnant le code puis la séquence de touches Ctrl-d pour Do-it!21.

Commençons par étudier un exemple simple :

DrGeoSketch new

C’est la plus petite description produisant une figure. Lors de son exécution, celle-ci va simplement créer une nouvelle figure vide. Le canevas Dr.Geo est affiché dans une fenêtre simplifiée puisqu’elle ne comporte pas la barre d’outils, seulement la barre des menus et les molettes.

Abordons un deuxième exemple :

| c item |
c := DrGeoSketch new.
item := c point: 1.2 @ -2.
item name: 'A'.

Cette description définit une figure avec un point libre A de coordonnées initiales (1,2 ; -2). Quelques explications sur ce code :

Poursuivons avec un troisième exemple :

| c triangle hasard m n p |

triangle := [:p1 :p2 :p3 |
	c segment: p1 to: p2.
	c segment: p2 to: p3.
	c segment: p3 to: p1].
 
hasard := [5 - 10 atRandom].

c := DrGeoSketch new.
m := c point: hasard value @ 0.
n := c point: 5 @ 0.
p := c point: hasard value @ 3.
triangle value: m value: n value: p.

Cet exemple est particulièrement intéressant, il nous montre trois choses importantes :

  1. L’introduction d’une construction de plus haut niveau, non prévue au départ par Dr.Geo. Ici nous avons défini le bloc de code triangle qui, à partir de trois points, construit le triangle passant par ces trois points. Nous pouvons comparer ceci avec les macro-constructions mais avec une approche différente, orientée programmation.
  2. La définition d’un bloc de code associé, ici nous avons défini hasard qui retourne un nombre entier compris entre -5 et 5. Nous utilisons ce bloc pour placer au hasard certains points de notre figure, ainsi à chaque exécution la figure est légèrement différente.
  3. L’affectation du résultat d’une construction à une variable n’est pas obligatoire, nous l’utilisons lorsque nous souhaitons garder une référence de l’objet créé. Par exemple dans le bloc de code triangle, nous ne gardons pas de référence des segments créés, en revanche lorsque nous définissons nos trois points nous avons besoin de garder une référence dans des variables temporaires. Ainsi, lors de l’utilisation du bloc de code triangle, nous passons en paramètre les variables m, n et p.

Pour clore cette section, voici un dernier exemple :

| c a b d |

c := DrGeoSketch new.
a := c point: 1@0.
b := c point: 5@0.
d := c line: a to: b.
a color: Color yellow;
   round;
   large.
b hide.
d dashed.

Deux points et une droite sont créés. Ensuite des commandes sont utilisées pour modifier l’aspect des objets, voire pour en cacher.

Nous avons terminé notre petite visite guidée des Figures Smalltalk Dr. Geo. Dans les sections suivantes nous exposons l’ensemble des commandes disponibles.


Footnotes

(20)

Le raccourci Alt-k fonctionne aussi lorsqu’aucune fenêtre est sélectionnée.

(21)

Alternativement, c’est l’entrée à choisir dans le menu contextuel de l’espace de travail.

(22)

Des instances de classes qui représentent des objets géométriques.

(23)

Pour être précis, la capsule est un objet DrGWrappedPoint dont l’objectif est de simplifier la manipulation des objets géométriques de type point, pour aussi bien obtenir ses attributs ou modifier son style. Il est toujours possible d’accéder à l’objet point sous-jacent en envoyant le message #mathItem à la capsule. Il est alors possible d’utiliser les méthodes décrites dans le chapitre sur les scripts – See api-dgs


Next: , Up: Figure Smalltalk   [Index]