Sur l’image de l’écran initial (figure 1.2 page 22) la bordure de la fenêtre SMALLTALK est décorée de petits rectangles colorés: ce sont des attaches, en anglais des «flaps». Par défaut on trouve une attache nommée Squeak au milieu à gauche de la fenêtre, une nommée Tools au milieu à droite, et en bas de la fenêtre, de gauche à droite, les attaches Navigator, Widgets et Supplies. Toutes ces attaches donnent, si on les active (par un clic avec le bouton gauche de la souris) accès à un ensemble d’outils SQUEAK.1 La figure 1.5, page 31 montre le contenu de l’attache «Supplies». Pour activer un de ces contenus, il suffit de le sélectionner (toujours avec le bouton gauche de la souris2) et de le tirer vers l’extérieur de l’attache (en gardant le bouton enfoncé et en déplacant la souris vers l’intérieur de la fenêtre SQUEAK).
Si nous activons l’outil Workspace de l’attache Tools nous obtenons une fenêtre similaire à celle de la Figure 1.6. Dans une telle fenêtre on peut entrer du code, le sélectionner et puis l’exécuter. Ainsi si l’on y entre
Notons que l’expression «7 + 4» se lit: «demandons à l’objet 7 ce qu’il obtient si nous lui envoyons le message «+» avec l’argument 4». Ou, encore plus clair: «l’objet 7 répond à la transmission du message + avec l’argument 4 en retournant l’objet 11». Notons aussi qu’à la fois l’objet 7, 4 et 11 sont des nombres entiers, plus précisément: des petits entiers.
Bref, en SMALLTALK un calcul se fait toujours en envoyant des messages à des objets, et les objets receveurs du message répondent par l’envoi d’un objet réponse à l’objet émetteur du message. Nous allons revenir vers cet aspect fondamental de la programmation par objet dans la suite. Pour l’instant rappelons qu’en SMALLTALK tout est objet et que les objets communiquent entre eux par la transmission de messages.
Nous sommes d’accord: ce premier programme, 7 + 4, est très minimaliste. Essayons-en un autre et faisons un «do it» («Alt+d») sur l’expression:
Notons aussi que l’action «do it» fait la même chose que «print it», c’est-à-dire: elle calcule, elle évalue l’expression sélectionnée, mais, au contraire de «print it», elle n’imprime pas la valeur que la transmission retourne à l’émetteur (dans ce cas la valeur retournée serait l’objet Display).
Une dernière remarque sur cet exemple: l’écriture de «Display» et «Pen» débute par un caractère majuscule. En SMALLTALK, qui est sensible à la casse, ceci veut dire que le mot décrit une classe - un objet qui est une classe. Une classe est un objet bien particulier et bien important en SMALLTALK. Une classe décrit une structure et c’est le seul type d’objet qui sait créer d’autres objets si on le demande (en général avec le message new). C’est une sorte de moule à objets. Puisqu’en SMALLTALK tout est objet, maintenant nous savons au moins d’où ils viennent: ils sont créés par des objets de type classe. Les objets qu’une classe peut créer sont appelés des instances de la classe. Les classes elles-mêmes sont des instances d’autres classes: de leur méta-classe. Nous allons revenir vers ces notions dans les chapitres suivants. Pour l’instant retenons que:
Le système SQUEAK met à notre disposition, dans sa version actuelle, autour de 3500 classes déjà existantes. Nous pouvons toujours en ajouter des nouvelles, définies pour nos propres besoins. C’est cette activité de définir des nouvelles classes qui sera l’activité principale d’un programmeur SMALLTALK. Mais qu’est-ce que c’est, une classe? Pour l’instant disons que c’est un moule produisant des instances et que ce moule doit définir à la fois les caractéristiques determinant la spécificité de chacune de ses instances (nous dirons: il doit définir ses variables d’instances) et qu’il doit définir les messages spécifiques que chacune de ses instances doit comprendre (nous dirons: il doit définir ses méthodes). Ainsi si, dans un programme, nous avons besoin de modéliser des voitures, nous distinguerons probablement chacune des voitures par sa puissance, sa couleur, sa taille, etc. Ce seront des variables d’instances et chaque voiture aura ses propres valeurs associées à ces variables d’instances. Mais toutes les voitures devront savoir comment avancer, reculer, accélerer, etc. Ce seront les méthodes définies dans la classe Voiture, et toute voiture particulière (chaque instance de la classe Voiture) pourra regarder dans sa classe comment accélérer, reculer, avancer etc. Nous dirons que les instances héritent des méthodes de leur classe.
Mais ce n’est pas tout. Puisqu’un programme contiendra probablement beaucoup de classes différentes, et puisque - de toute façon - le système SQUEAK nous en livre dès le départ un grand nombre, les classes sont organisés hiérachiquement en une structure arborescente, similaire aux systèmes de classification, qui raisonnent toujours sur des concepts organisés en arborescence. Du coup, nous parlerons non seulement de classes, mais aussi de sous-classes et sur-classes. Par exemple, la classe Voiture pourrait avoir des sous-classes nommées Break, Camion, Caravane, Formule-1 etc., qui se distingueront par la puissance, la possibilité de prendre des charges ou pas, des grandes vitesses, les permis nécessaires, etc. Mais elles sauront toutes reculer, avancer ou accélérer. Ainsi, nous dirons que les sous-classes héritent des comportements de leurs sur-classes. Ici, c’est la classe Voiture qui saura comment avancer, point n’est besoin de le redire dans les classes Break, Camion, Caravane, Bus etc. Elles peuvent hériter de ce savoir de leur sur-classe (la classe Voiture).
Si, dans le menu principal (cf. Figure 1.3) nous cliquons sur «open...» et ensuite sur browser, ou si de l’attache Tools nous importons l’icone browser, SQUEAK nous donne une fenètre System Browser, un explorateur des classes existantes. Nous en montrons un dans la figure 1.8. Cet outil permet d’explorer l’ensemble des classes SMALLTALK: CELLES QUI EXISTENT DéJà A PRIORI DANS LE SYSTèME ET CELLES QUE VOUS AVEZ DéFINIES VOUS MêME. VOUS POUVEZ Y voir comment les classes et leur méthodes ont été définies, leur hiérarchie, leur implémentation. Tout le système SMALLTALK est écrit en SMALLTALK! Du coup, vous avez un ensemble absolument remarquable d’exemples de programmes SMALLTALK à explorer. N’hésitez pas, lancez un explorateur de classes (System Browser) et donnez-vous en à cœur joie!
|
|
L’explorateur de classes est composé d’une première rangée de sous-fenêtres qui décrivent, de gauche à droite les:
Il ne nous reste que la sous-fenêtre la plus importante et la plus grande: elle contient le code SMALLTALK de la chose sélectionnée. Cette sous-fenêtre contient un éditeur et toutes les capacités de la fenêtre Workspace. Tout code qui y est montré peut être modifié, sauvegardé ou évalué. Pour que la modification soit prise en compte, on doit choisir accept dans le menu contextuel (ou simplement taper «Alt+s»). De temps à autre, cette fenêtre est horizontalement divisée en deux. La partie basse montre alors le commentaire associé à la classe sélectionnée.