Mécanique Smalltalk - (1)






Les langages à objets sont des mécanos virtuels. Comme dans un mécano, les objets manipulés dans ces langages peuvent s'assembler. Ils possèdent des fonctions, des caractéristiques propres. Comme en mécanique, le résultat de l'assemblage d'un ensemble de pièces donne un tout ayant de nouvelles propriétés. Mais la métaphore s'arrête là, nos objets peuvent être créés et détruits au cours du fonctionnement, les liaisons entre nos objets sont d'une nature incomparable avec les liaisons mécaniques. J'espère que ces quelques pages pourrons vous aider à réaliser des programmes qui tournent comme des horloges...

I/ Instanciation

- Par exemple, la classe de la classe Integer se nomme Integer class. Integer class est donc une métaclasse.
(dans les exemples ci-dessous, la flèche -> représente le calcul effectué par Smalltalk : à gauche de la flèche, un expression à évaluer, à droite de la flèche le résultat imprimé par Smalltalk).

Integer class -> Integer class

Dans cet exemple, la partie gauche Integer class est la transmission du message class à la classe Integer. La partie droite Integer class est l'objet renvoyé en résultat c'est à dire la métaclasse nommée Integer class.

Integer class class -> Metaclass

Metaclass class -> Metaclass class
Metaclass class class -> Metaclass

II/ Héritage



Integer superclass -> Number Les entiers héritent des propriétés des nombres.

- Ceci est valable jusqu'à la classe Object, car ensuite, il y a une divergence : La superclasse de Object est nil (Object n'a pas de superclasse), alors que la superclasse de Object class est la classe Class.

Metaclass superclass -> ClassDescription
Metaclass class superclass -> ClassDescription class

Class superclass -> ClassDescription
Class class superclass -> ClassDescription class

ClassDescription superclass -> Behavior
ClassDescription class superclass -> Behavior class

Behavior superclass -> Object
Behavior class superclass -> Object class

Object superclass -> nil
Object class superclass -> Class


Hiérarchie d'héritage de la métaclasse ClassDescription class :


Object ()
	Behavior ('superclass' 'methodDict' 'format' 'subclasses' )
		ClassDescription ('instanceVariables' 'organization' )
			Class ('name' 'classPool' 'sharedPools' )
				Object class ()
					Behavior class ()

						ClassDescription class ()
							Class class ()
							Metaclass class ()



Hiérarchie d'héritage de la classe ClassDescription :


Object ()
	Behavior ('superclass' 'methodDict' 'format' 'subclasses' )

		ClassDescription ('instanceVariables' 'organization' )
			Class ('name' 'classPool' 'sharedPools' )
				[ ... all the Metaclasses ... ]
			Metaclass ('thisClass' )

- La classe Behavior représente les comportements ; à ce titre, ses instances (ou plus exactement les instances de ses sousclasses) portent un dictionnaire de méthodes (methodDict), et le lien superclasse.

III/ Instanciation, Reprenons tout depuis le début

Par exemple, un point P du plan est totalement défini, dans un repère cartésien, par deux coordonnées x et y, abscisse et ordonnée.
Figure 1
Pour représenter un point en Smalltalk, on utilisera un objet connaissant deux objets représentant des valeurs numériques, désignées par des noms x et y. La relation "a pour abscisse" est alors représentée par la variable x.
Figure 2
On peut regarder cela sous un autre angle, et préférer l'interprétation suivante : "le point P est constitué de deux valeurs x et y", où l'on doit entendre que x et y forment la structure du point.
Figure 3


La méthode se termine par la désignation d'un objet résultat : la valeur de retour de la transmission initiale.

Méthode de la tarte aux poires


Ingrédients : Trois poires, une banane, du citron, du miel, de la farine, du sucre, 75 grammes de beurre et du sel.

Faire préchauffer le four à 210 degrés pendant la préparation.

Beurrer le moule.

Dans un fait-tout, verser 1 verre et demi de farine (150 grammes ?).

1 verre de sucre (150 grammes ?),

1 grosse cuillère de miel,

1 bonne pincée de sel, découper le beurre en petits dés.
Mélanger le tout (sans malaxer), en aplatissant les morceaux de beurre entre les doigts, et en faisant couler le sable.

Lorsque le tas de sable est homogène, ajouter 1/3 de verre d'eau pour humidifier le sable, la pâte devient collante, ne pas trop mélanger (ne pas la travailler, mais bien répartir l'humidité pour former une boule), verser la boule collante dans le moule, puis, avec les mains enfarinées, étaler la pâte dans le moule (saupoudrer de farine si la pâte colle aux mains). Couper la banane en fines lamelles, et couvrir le fond de tarte avec la banane. Couper les poires en morceaux (la taille des morceaux dépend de la qualité des poires : les poires dures en fines lamelles avec un éplucheur, les poires plus mures en plus gros morceaux) les disposer au dessus de la banane.

Faire fondre deux ou trois grosses cuillères miel dans le jus d'un demi citron (chauffer un peu si nécessaire). Verser le miel fondu sur les fruits.

Enfourner pour 20 minutes à 210 degrés.


IV/ Hiérarchie et Héritage



Questions


Non, je n'ai pas de questions, tout est très clair. Par contre je ne vois pas du tout comment on peut programmer avec tout ça, et que vient faire la tarte au poires là dedans. Ah, si, une question : Quel est le tout premier objet construit en Smalltalk (au moment de la création du langage) ? En quoi est écrit Smalltalk, en Smalltalk ?

Lire

Michael BARNSLEY
Fractals Everywhere
Academic Press, 1988

G.BRASSARD, P.BRATLEY
Algorithmique Conception et Analyse
Masson 1987

Xavier BRIFFAULT et Gerard SABAH
Smalltalk
Programmation Orientee Objet et developpement d'Applications
edition Eyrolle, 1996
ISBN 2-212-08914-7

T. BUDD
A Little Smalltalk
Addison-Wesley 1987

F'MURRR
Monter descendre, ça glisse pareil.
Le génie des alpages. Vol X.
Dargaud 1992

A. HODGES
Alan Turing The Enigma of Intelligence
Unwin Paperbacks (1985, 1989)

Douglas HOFSTADTER
Ma Thémagie
InterEditions 1988

KNUTH
Fundamental algorithms
The art of computer programming
2eme ed.
Addison-Wesley 1973, 1968

Vincent LESBROS
Supports de cours
Lexique Smalltalk, Dept. LIT 1989
Un Ordinateur en Papier, Dept. LIT 1991
Logique, Dept. LIT
Big Bang, Dept LIT.
Couplages Elastiques, Dept. LIT
Mécanique Smalltalk - (1) 1996
Mécanique Smalltalk - (2) 1996
Mécanique Smalltalk - (3) 1996

G.MASSINI, A.NAPOLI, D.COLNET, D.LEONARD, K.TOMBRE
Les langages à objets
InterEditions 1989

M. MINSKY
La société de l'esprit
InterEditions 1988

L. J. PINSON, R.S. WIENER
An introduction to Object-Oriented Programming and Smalltalk
Addison-Wesley 1988

(suite)

Date de mise à jour 18/11/1996 m a i l t o : v i @ a i . u n i v - p a r i s 8 . f r
Vincent LESBROS, Mécanique Smalltalk (1)