LANGAGE:Lumière sur le style de programmation Smalltalk.

Une caractéristique surprenante de Smalltalk est l'absence totale d'instructions de contrôle intégrées au langage : if-then-else, for, while, etc. Toutes ces instructions sont implémentées en utilisant des objets. Par exemple, les décisions sont prises en envoyant un message ifTrue à un objet Booléen, et en passant un fragment de code à exécuter si le Booléen est vrai. Le seul aspect intégré par défaut est la syntaxe pour envoyer un message à un objet.
L'exemple suivant illustre le style de programmation Smalltalk. L'exécution de ce code permet de trouver les voyelles dans une chaîne. Le | déclare les variables, : déclare les paramètres :
| aString vowels |
aString := 'This is a string'.
vowels := aString select: [:aCharacter 
 | aCharacter isVowel].

À la dernière ligne, la chaîne aString reçoit un message select: avec un
 bloc de code en argument. Voici le code de la super-classe Collection 
qui fait le travail :
| newCollection |
newCollection := self species new.
self do: [:each | 
    (aBlock value: each) 
        ifTrue: [newCollection add: each]].
newCollection
Ce code répond au message en itérant au travers de ses membres (c'est la methode do:) en évaluant le code aBlock à chaque caractère ; aBlock (aCharacter isVowel) une fois évalué crée un booléen, qui est alors envoyé à ifTrue:. Si le booléen est vrai, alors le caractère est ajouté à la chaîne qui sera retourné. Comme select est défini dans la classe abstraite Collection, on pourrait également l'utiliser de cette façon :
| rectangles aPoint|
rectangles := OrderedCollection .  with: (Rectangle left: 0 right: 
10 top: 100 bottom: 200)
  with: (Rectangle left: 10 right:  
10 top: 110 bottom: 210).
aPoint := Point x: 20 y: 20.
collisions := rectangles select:  
[:aRect | aRect containsPoint: aPoint].BY TAATJENE
  1. LIRE: origine e-mail anonyme sur internet 

Comments

Popular Posts