Howto Squeak

Achard jeremy

Iut informatique ifs, 1ère année

Kokel Sébastien

Iut informatique ifs, 1ère année

Tho Ncai Joseph

Iut informatique ifs, 1ère année

Historique des versions
Version 1.015 Mars 2002
Version 1.128 Mars 2002

Ce document présente un Howto Squeak Francophone, qui permettra aux débutants de démarrer la programmation sur squeak assez rapidement, ce document n'est pas exhaustif et n'est certainement pas complet, il permet simplement de faire une prise en main rapide de squeak au niveau de l'interface utilisateur mais aussi donne quelques commandes de base du langage afin de faire un programme simple, mais permettant de comprendre le fonctionnement de squeak et invitant l'utilisateur à se lancer dans une programmation plus complexe de lui-même.


Contenu du Howto

Ce Howto concerne plus particulièrement la version 3.1 de Squeak, qui est actuellement la version standard de Squeak sur la plupart des machines

Il est officiellement destiné à un Squeak Linux mais la seule différence notable entre la version linux et la version windows est une autre configuration des boutons de la souris pour laquelle il faut généralement inverser le bouton milieu avec le bouton droit.

Il se divise en trois grande partie majeure : installation, prise en main rapide et Squeak plus en profondeur. C'est trois parties sont les plus essentielles pour une maîtrise basique mais correcte du logiciel assez rapidement.

Ce Howto est une version évolutive, et sera certainement amenée à être modifiée dans le but de le rendre plus complet et mis à jour en fonction des nouvelles versions de Squeak

Historique des versions

Ici se trouve les versions préexistantes de la version que vous lisez actuellement avec toutes les évolutions entre deux versions .

  • 28/03/2002 : version 1.1

    Correction de titre, de numérotation, insertion installation windows

  • 15/03/2002 : Version 1.0

    Première version officielle


Ce Howto est soumis au copyright GNU, ce qui signifie que les auteurs laisse libre utilisation de ce document et autorise donc l'accès aux sources ainsi qu'une modification de ce document avec pour seule restriction d'avertir ces mêmes auteurs lors d'une utilisation officielle dans sa totalité ou lors d'une modification interne ; le cas précédent amenant la personne ayant modifié ce document à figurer parmi les collaborateurs à l'évolution de ce Howto .

Voici la version intégrale du copyright GNU

GNU Free Documentation License

Version 1.1, March 2000

Copyright (C) 2000 Free Software Foundation, Inc.

59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.


The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.


This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.


You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.


If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.


You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

  1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

  2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).

  3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

  4. Preserve all the copyright notices of the Document.

  5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

  6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

  7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

  8. Include an unaltered copy of this License.

  9. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

  10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

  11. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

  12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

  13. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.

  14. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties;for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.


You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."


You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.


A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.


Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.


You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.


The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

Installation et lancement de Squeak

Cette partie vous expliquera où et comment télécharger la totalité de squeak pour windows et linux, ainsi que son démarrage.

Sous Windows

Site officiel de téléchargement de la version 3.1 de Squeak :

Pour le téléchargement de Squeak version 3.1 de Windows, il faut prendre, puis aller dans le dossier win32 et télécharger

Pour l'installation, il faut dézipper à l'aide d'un logiciel de compression/décompression les deux fichier zip obtenu dans un seul et même dossier.

Sous Linux

Site officiel de téléchargement de Squeak: http:/

Lien sur l'une des pages de téléchargement de Squeak:

Comme vous pouvez le constater sur le site de téléchargement de Squeak, il existe aussi des fichiers sous formats .tar.gz, .tgz, .tar.Z ou encore .tar.bz2. Pour plus d'information sur ces fichiers compressés , vous pouvez consulter le site:

Lien pour les différents packages :

Sous la Red Hat, la Mandrake et la Suse:

Beaucoup de logiciels existent sous la forme d'un package RPM. Ces packages sont adaptés à l'utilisation avec la distribution Red Hat, la Mandrake et plus rarement avec la Suse de Linux.

Pour installer les packages RPM, utilisez la commande:

rpm -i fichier

Pour la mise à jour:

rpm -U fichier.rpm

Pour regarder le contenu:

rpm -qpl fichier.rpm

Pour installer un logiciel, utilisez la commande:

rpm -Uvh fichier1.rpm fichier2.rpm ... fichierN.rpm

(ou les fichier1.rpm, fichier2.rpm, ... fichierN.rpm sont les différents fichiers nécessaires pour le bon fonctionnement du logiciel)

Exemple: Installation de Squeak 2.8 : " rpm -Uvh Squeak-2.8-3.i386.rpm Squeak-2.8-3.ppc.rpm Squeak-2.8-3.src.rpm " où Squeak-2.8-3.i386.rpm, Squeak-2.8-3.ppc.rpm et Squeak-2.8-3.src.rpm sont les fichiers indispensables pour que Squeak 2.8 fonctionne correctement.

Pour désinstaller un logiciel RPM, utilisez la commande "rpm" avec l'option "-e":

rpm -e package1 package2 ... packageN

Attention : Ici, vous ne devez pas utiliser le nom du fichier, mais celui du package, sans l'extension .i386.rpm(dans l'exemple ci-dessus). Généralement, vous pouvez même omettre le numéro de version.

Exemple: Pour désinstaller XEmacs:

rpm -e xemacs xemacs-el xemacs-extras

Vérification de l'installation d'un package RPM

Si vous connaissez le nom du package, vous pouvez taper directement:

rpm -q package (ou rpm -ivh fichier.rpm)

Si le package est installé, RPM vous indiquera la version installée. Dans le cas contraire, il vous enverra un avertissement.

Exemple: Pour savoir si XEmacs est installé, tapez: " rpm -q xemacs "

Pour avoir la liste des packages installés:

rpm -qa

Cependant pour avoir la liste complète des packages installés dont le nom contient par exemple "xemacs", vous pouvez utiliser l'extension "| grep xemacs" en plus de la commande ci-dessus.

Sous Debian:

Les fichiers portant l'extension .deb sont généralement des logiciels prévus pour s'installer avec l'utilisateur dpkg de la distribution Debian.

Installation des packages DEB sans select:

dpkg -i fichier.deb


dpkg --purge fichier

Mise à jour:

dkpg -i fichier.deb

Regarder le contenu:

dpkg --contents fichiers.deb

Cependant, il est possible de transformer un package .deb en archive .rpm en utilisant l'utilitaire "alien". Par exemple, pour transformer l'archive toto.deb en package RPM, vous pouvez utiliser la commande suivante:

alien --to-rpm toto.deb

Pour plus d'information sur l'utilitaire "alien":

Lancement de Squeak

sous Windows

Il suffit de faire un double clique sur l'exécutable Squeak.exe (ou Squeak-d3d.exe ou Squeak-GL.exe)

sous Debian

Il suffit de taper inisqueak dans run commande.

Prise en main de Squeak

Cette partie explique rapidement la configuration de l'interface utilisateur de squeak afin de se familiariser avec l'environnement de squeak

information sur l'interface graphique:

L'explication détaillée de l'environnement graphique du logiciel de programmation est une épreuve essentielle a la bonne utilisation du logiciel, même si elle ne parle pas du code de programmation , une bonne maîtrise de l'environnement permet une utilisation rapide et efficace.

Cette explication de l'interface se feras à plusieurs niveau du plus général au plus détaillé.

L'interface graphique de squeak sera découpée pour ce howto en trois parties présentées sous dessous (en réalité elle en comporte plus mais certaines d'entre elles ne seront pas expliquées vu qu'elles ne sont pas indispensables a la prise en main rapide de squeak.), ainsi qu'en trois menus (parmi les nombreux menus présents dans squeak).

la partie nommée Squeak.

Cette barre verticale située a gauche de l'écran (visible sur le screenshot) s'ouvre dès que l'on clique sur le bouton intitulé Squeak.

le screenshot suivant montre les différentes parties de cette barre.

  • le bouton go: Ce bouton permet d'accéder directement sur un menu présent dans le listing.

  • le bouton snapshot: Ce bouton permet d'enregistrer la configuration actuelle des positions des fenêtres dans le monde de squeak.

  • File out changes : permet de faire un file out de ses méthodes , une sauvegarde de ses propres méthodes et classes. (cette notion sera vue en détail plus tard dans le tutorial.)

  • Recent submissions : ouvre une fenêtre nommée : "Recently submitted methods - youngest first". Cette fenêtre permet de voir les 20 dernières méthodes appelées de la plus récente a la plus ancienne.

  • L'horloge : donne l'heure actuelle (prend l'horloge de votre ordinateur ce n'est pas une horloge indépendante.)

  • Preference : ouvre un menu permettant de régler ses préférences cette partie est déconseillée au non initiés au squeak.

  • Load code updates : ouvre un lien vers une mise a jour de squeak, ( attention pour utiliser cette commande il faut être connecté à un Internet.), il est préférable de choisir le serveur européen car la connexion sera plus rapide.

  • About this system : donne des informations sur la version de squeak utilisée, la date de création de cette version, les dernières mise à jour.

  • la poubelle: Cette poubelle contrairement a ce que l'on peut penser , permet de mettre de coté des éléments , on les met dedans et lorsque l'on en a besoin, on voyage à travers les pages de cette poubelle puis on le restaure. Si l'on veut le supprimer définitivement il faut appuyer sur le bouton E en haut a droite de la poubelle pour la vider.

La partie nommée Tools:

Dans la version de squeak que nous sommes en train de traiter (la version 3.1), la barre tools comporte quatorze icônes, parmi lesquels nous en traiterons uniquement cinq énumérés ci dessous:

  • L'icône browser : ouvre une fenêtre intitulée "system Browser". Cette fenêtre est essentielle dans la programmation sous squeak, on peut considérer que c l'endroit ou sauvegarder ses méthodes (ceci est une définition très vague mais qui permet de se donner une idée du browser); pour savoir comment on utilise ce browser , il faut se reporter vers le chapitre concernant le browser de ce howto.

  • L'icône Transcript : ouvre une fenêtre nommée "Transcript" qui est très utilisée au départ mais de plus en plus délaissé au fur et a mesure de l'expérience acquise. L'utilisation de cette fenêtre sera montrée lors d'un petit exemple.

  • L'icône Workspace : ouvre une fenêtre nommée "Workspace" qui est la base de tout sous squeak, c'est en quelque sorte la tour de contrôle de squeak; à partir de ce workspace on peut lancer une méthode stockée dans le browser, ou bien programmer directement dans le workspace.

  • L'icône File list : ouvre une fenêtre qui permet à partir de laquelle on peut ouvrir une méthode ou une classe que l'on a auparavant sauvegardée. Cette fenêtre se dispose comme un explorateur dans lequel on navigue afin de trouver son fichier.

  • L'icône Method Finder : ouvre une fenêtre permettant de rechercher une méthode parmi la totalité des classes de squeak.

Les barres nommées widgets et supplies ne seront pas vue dans ce howtow car elles ne sont pas nécessaires a la prise en main de squeak.

La partie générale de Squeak : LE MONDE.

La notion de monde est assez importante car on verra apparaître la notion de OpenInWorld (ouvrir dans le monde) relativement souvent. Ce monde au départ comporte plusieurs fenêtres qui ne seront pas expliquées puisqu'elles sont interactives et très simples à comprendre.

Le monde sera l'environnement de base, ou se placeront toutes vos fenêtres, et tout objet auxquels on applique la méthode OpenInWorld.

Les menus

En utilisant le bouton gauche ou milieu de la souris on peut faire apparaître des menus qui ont différentes fonctions.

voici quelques exemples de menus( les plus utilisés):

Le menu world :

  • Il apparaît après avoir effectué un clique gauche sur le monde. Ce menu fait apparaître énormément d'actions possibles dont on va en énumérer une partie.

  • Le bouton Keep this menu : permet de garder le menu afficher de manière durable sur le monde.

  • Le bouton open... : ouvre le menu open.

  • Le bouton help : ouvre le menu help, à partir duquel on peut trouver différentes options qui peuvent être utiles par la suite.

  • Le bouton appearence : ouvre le menu appearence

Le menu appearance :

  • Il ouvre un menu à partir du quel on peut modifier les aspects visuels de squeak.

  • Le bouton window color : ouvre un menu ou il est possible de sélectionner les couleurs des différentes fenêtres de squeak.

  • Le bouton system fonts : ouvre un menu à partir duquel on peut choisir la police de caractère de squeak.

  • Les boutons fullscreen on et fullscreen off : permettent de mettre ou pas squeak en mode plein écran.

  • Le bouton set Display background : ouvre une palette pour pouvoir modifier la couleur de fond du monde.

  • Le bouton set gradient color : ouvre une palette afin de déterminer la couleur du dégrader du monde.

le menu open

  • Ce menu sert à ouvrir différentes fenêtres très utilisées sous squeak

  • le bouton keep this menu: permet de garder le menu affiché.

  • le bouton browser : ouvre la fenêtre browser de classe.

  • le bouton workspace : ouvre un workspace.

  • le bouton file list : ouvre une fenêtre permettant de charger un .st (une sauvegarde) .

  • le bouton transcript : ouvre un transcript.

  • le bouton method finder : ouvre un method finder définis plutôt.

  • les autres boutons ne seront pas définis car peut important pour une prise en main rapide de squeak.

Les boutons de la souris

Cette partie va être relativement courte, vu qu'elle n'est pas bien compliquée.

Il faut avant tout savoir que par défaut squeak et les utilisateurs de squeak donnent une couleur pour chaque bouton de la souris (mais ce n'est franchement pas nécessaire d'utiliser ces couleurs dans le langage courant.)

Les couleurs:

  • Le bouton gauche de la souris est attribué à la couleur rouge.

  • Le bouton milieu de la souris est attribué à la couleur bleue.

  • Le bouton droit de la souris est attribué à la couleur jaune.

Les boutons ont une fonctionnalité différente en fonction du monde (ou de l'endroit ) où l'on place sa souris.

Dans le monde:

  • Le bouton gauche : ouvre le menu world.

  • Le bouton du milieu : ouvre le menu personal. (n'est pas très utile pour nous.)

  • Le bouton droit : ouvre un hallo morphique. (Le hallo morphic sera explicité plus tard, juste après cette partie.)

Dans le browser et autres fenêtres du genre (workspace, transcript etc..)

  • Le bouton gauche : permet de sélectionner l'élément pointé.

  • Le bouton du milieu : ouvre un hallo morphique.

  • Le bouton droit : ouvre un menu qui est différent en fonction de la fenêtre utilisée, c'est pourquoi chaque menu sera détaillé dans la partie sur la fenêtre correspondante.

Le hallo morphique :

Lorsque l'on fait un clique droit sur n'importe qu'elle partie du monde ou de l'interface de squeak, un hallo morphique apparaît tout autour de l'élément pointé.

Ce hallo est en quelque sorte une table de commande, a travers laquelle on peut effectuer des actions directement liées a l'objet pointé par le hallo.

Voici un exemple de hallo morphique (le hallo sera toujours le même quel que soit l'objet pointé.):

  1. Ce bouton permet de fermer l'objet sélectionné par le hallo

  2. Ce bouton affiche un menu comprenant de nombreuses actions possibles sur l'objet dont celles proposée par le hallo

  3. Ce bouton permet de prendre l'objet et de le déplacer n'importe où sur le monde mais aussi de l'insérer dans un autre objet présent sur le monde.

  4. Ce bouton permet de déplacer l'objet n'importe où dans le monde mais ne permet pas de l'insérer dans un objet.

  5. Ce bouton duplique l'objet.

  6. Ce bouton ouvre un menu dont voici un screenshot(les boutons inspect ouvre un inspecteur)

  7. Ce bouton ouvre une pallette de couleur permettant de changer la couleur de l'objet

  8. Ce bouton permet de redimensionner l'objet

  9. Ce bouton permet d'effectuer une rotation de l'objet autour d'un axe visible sur le monde.

  10. Ce bouton affiche une petite fenêtre contenant le titre officiel de l'objet

  11. Ce bouton affiche un panneau de contrôle de l'objet

  12. Ce bouton permet de réduire l'objet; il se situera en haut à gauche du monde sous la forme d'une barre

Le Workspace

Le workspace est le lieu où l'on va pouvoir lancer ou créer des programmes sous squeak. Ce workspace sera détaillé lors d'un exemple classique (le hello world) permettant ainsi de comprendre l'intérêt du workspace mais aussi d'avoir une première approche de la syntaxe de squeak.

Construction d'un petit programme.

Dans le but d'introduire un Workspace nous allons effectuer un petit programme permettant d'afficher "HELLO WORLD" dans un Transcript.

Pour ouvrir un Transcript, il faut taper la ligne suivante:

Transcript open

Ensuite pour afficher la chaîne "HELLO WORLD" dans ce Transcript, il faut taper la ligne de commande suivante:

Transcript show: 'HELLO WORLD'.

Pour exécuter ce programme, on a deux possibilités:

  • L'exécution pas à pas

  • L'execution directe

Dans le cas d'une exécution pas à pas, il faut appliquer l'option 'do it' à chaque fin de ligne.

L'application de cette option ce fait a son tour de deux manières.

  • Par un raccourci clavier (ctrl+D)

  • Via un menu affiché par l'intermédiaire d'un clique

La première ligne ouvrira un transcript, et la seconde affichera HELLO WORLD dans ce même Transcript. Un Transcript peut être considéré comme une fenêtre d'affichage

Dans le cas d'une exécution directe, il faut sélectionner la totalité des lignes du programme et effectuer un 'Do it'.


Il faut bien noter que la présence d'un point a chaque fin de ligne est obligatoire car c'est l'expression séparatrice. Dès qu'une instruction est complètement tapée, il faut la marquer d'un point.

Fonctionnement de la syntaxe et syntaxe de base

Le précédent exemple nous a permis de comprendre l'utilité du workspace ainsi qu'une légère approche de la syntaxe squeak

Cette partie va introduire deux notions fondamentales dans la programmation, les blocs et les booleens.

Les exemples suivants vont permettre de se lancer dans une programmation plus poussée

Il faut avant tout savoir que squeak est un logiciel de programmation objet, ce qui signifie que chaque entité d'un programme est un objet. Pour l'instant la vision de l'objet est un peu floue mais elle s'éclaircira au fur et a mesure du howto et sera expliquée plus en détail plus tard.

les blocs

Pour introduire les blocs, on va créer un programme permettant d'additionner les 100 premiers entiers entre eux.

les blocs sont des structures permettant d'isoler une partie du programme afin d'effectuer certaines opérations dessus tel qu'une répétition ou une boucle.

  1. Programme avec bloc non paramétré

    les blocs non paramétrés sont des blocs ne prenant en compte que des variables définies auparavant.

    Voici la méthode à suivre pour créer un programme avec un bloc non paramétré

    • les lettres entre | | sont des variables, on utilise cette notation pour déclarer les variables.

    • la flèche permet d'affecter une valeur a la variable. On implémente la flèche en écrivant un underscore ( la barre sous le 8)

    • La structure entre crochet est un bloc

  2. La version avec bloc paramétré

    Les blocs paramétrés sont comme leur nom l'indique des blocs prenant un paramètre qui est en réalité une variable, sur laquelle s'effectue une action a chaque opération effectuée sur ce bloc

    voici le même programme que précédemment avec un bloc paramétré.

    • au niveau de l'implémentation rien ne change avant l'arrivée du bloc.

    • la ligne du bloc se traduit ainsi: " du chiffre zéro au chiffre 100 effectue la commande suivante:

      • donne à i le chiffre actuel du bloc (0,1,2,...,100).

      • donne à n sa valeur actuelle plus la valeur de i.

Les booléens

les booléens sont les instructions permettant de déterminer si une instruction est vraie ou fausse.

Pour introduire les booléens, nous allons effectuer un programme qui va comparer deux nombres

Voici le screenshot du programme:

Le programme est assez simple à comprendre au point de vu syntaxique, il faut juste remarquer qu'entre la fin du bloc introduit par le ifTrue et la commande ifFalse, il n'y a pas de point, parce que l'on considère que cette instruction n'est pas terminée.

Squeak plus en profondeur

Dans cette partie nous expliquons les différentes fenêtre utilisées lorsque vous programmerez tel que le browser, l'inspector, et le method finder.


Objet: Structure qui encapsule des données et des opérations possibles sur ces données.

Classe: Catégorie d'objets ayant des comportements similaires.

Instance : Une instance de classe est un objet.

Variable d'instance : Variable encapsulée a l'intérieur d'un objet.

Variable de classe : Variable commune a toutes les instances de classe.

Fonction générique : Fonction qui accepte différents type de classes comme arguments.

Méthode : Façon dont une classe particulière interprète une fonction générique.

Héritage: Possibilité de créer de nouvelles classes qui sont des variantes de classes existantes. C'est à dire que la classe créée peut utiliser les méthodes de la classe existante.

Le Browser

Espace de travail (fenêtre 1 du screenshot)

Un clique du bouton du milieu affiche un menu identique à celui du workspace, par conséquent les commandes possède les mêmes fonctionnalitées. Seul accept n'a pas été expliqué lors de la partie workspace.

accept : intégrer la méthode dans la liste des méthodes. Remarque "accept" n'est valable que pour la session qui est ouverte, il faut impérativement faire une sauvegarde si on veut pouvoir y accéder ultérieurement.

Liste des différentes Catégories de Squeak (fenêtre 2 du screenshot)

Les Classes dans Squeak sont regroupées par Catégories.

Un clique sur le bouton du milieu affiche un menu permettant :

  • find class : rechercher des Classes dans le browser dont on connaît le nom mais dont on ne connaît pas l'endroit où il se trouve.

  • fileOut : enregistrer la catégorie en surbrillance.

  • add item : ajouter une nouvelle catégorie.

  • rename : renommer la catégorie de classe en subrillance.

  • remove : supprimer la catégorie de classe en subrillance.

Liste des Classes contenues dans une Catégorie (fenêtre 3 du screenshot)

Squeak est un langage orienté objet.

Un clique gauche sur une Catégorie de la fenêtre 2 affiche la liste des Classes de celle-ci.

Un clique sur le bouton du milieu affiche un menu permettant :

  • fileOut : enregistrer la Classe en surbrillance.

  • rename class : renommer la Classe en surbrillance.

  • copy class : dupliquer la Classe en subrillance.

  • remove class : supprimer la Classe en subrillance.

  • find method : rechercher une méthode de la Classe en surbrillance.

Bonton méthodes d'instance (fenêtre 4 du screenshot)

Un clique du milieu affiche des informations sur la Classe dans la zone d'espace de travail :

Exemple :

  • Object subclass Boolean : Définit Boolean comme sous-classe d'Object. Remarque la Classe sélectionné est précédé d'un #.

  • instanceVaraibleNames: '' : entre les côtes se trouves toutes les variables d'instance de la Classe.

  • classVariableNames: '' : entre les côtes se trouves toutes les variables de classe de la Classe.

  • Category : 'Kernel-Objects' : Indique la Catégorie à laquelle appartient la Classe.

Bouton aide (fenêtre 5 du screenshot).

Dans cette partie, nous avons accès à toutes sortes d'informations concernant la classe sélectionné.

Bouton méthodes de Classe (fenêtre 6 du screenshot).

Voir les commentaires de méthodes d'insance du 4 appliqués aux méthodes de Classe.

Liste des Catégories contenues dans une Classe (fenêtre 7 du screenshot).

Un clique gauche sur une Classe de la fenêtre 3 affiche la liste des Catégories de celle-ci.

Un clique du milieu affiche un menu permettant :

  • fileOut : enregistre la catégorie dans la Classe courante.

  • new category... : créer une nouvelle catégorie dans la Classe.

  • rename : renommer la catégorie regroupant les différentes méthodes.

  • remove : supprimer la catégorie en surbrillance de la Classe courante.

Liste des méthodes contenues dans une Catégorie (fenêtre 8 du screenshot)

Un clique gauche sur une Catégorie de la fenêtre 4 affiche la listes des Méthodes de celle-ci.

Un clique du milieu affiche un menu permettant :

  • fileOut : enregistrer la méthode.

  • remove method : supprimer une méthode.

Un clique gauche sur la méthode affiche le contenu de celle-ci dans l'espace de travail.


L'inspecteur est utilisé dans le workspace, pour voir le contenu des variables. C'est un outil très utilisé dans le développement sous Squeak dans le but de vérifier si le contenu des variables correspond avec ce que l'on attend. L'inspecteur est composé de 3 parties distinctes

  • La fenêtre 1 affiche toutes les variables qui composent l'objet inspecté

  • La fenêtre 2 affiche le contenu de la variable sélectionné

  • La fenêtre 3 est un mini workspace permettant d'interagir avec les variables de l'objet sélectionné.

Méthode finder

Cette fenêtre permet de rechercher une méthode. La recherche renvoie toutes les méthodes possédant le mot à l'intérieur de la méthode.

La fenêtre 1 est une fenêtre de saisie soit de la méthode que l'on cherche ou on rentre les paramètres et ce que l'on veut que cela renvoie et il cherche les méthodes correspondantes.

La fenêtre 2 affiche le résultat de la recherche qui contient le nom de la méthode saisie dans la zone de recherche.

La fenêtre 3 affiche les classes dans lesquelles se situent la méthode sélectionnée.

La fenêtre 4 affiche une aide en anglais sur l'utilisation de method finder. Elle explique en particulier la manière de rechercher une méthode en écrivant ce qu'on veut qu'elle fasse avec des paramètres donnés.

A. Principaux raccourcis

Voici une liste des principaux raccourcis claviers que l'on peut trouver sous Squeak, ces raccourcis sont extrêmement pratiques pour une utilisation rapide et simple de ce logiciel.

Alt + z ........ Annuler

Alt + x ........ Couper

Alt + c ........ Copier

Alt + v ........ Coller

Alt + a ........ Tout sélectionner

Alt + w ....... Supprime le mot précédent

Alt + f ........ Rechercher

Alt + s ........ Accept (sauvegarde) les modifications. Le modèle associé à la fenêtre est modifié

Alt + b ........ Ouvre un browser de classe sur la sélection

Alt + d ........ Effectue la commande Do it ( exécute l'expression Squeak séléctionnée.)

Alt + i ........ Ouvre un inspecteur sur le résultat de l'évaluation de l'expression sélectionnée

Alt + p ........ Effectue la commande Print it (évalue l'expression sélectionnée et affiche le résultat juste après.)

Alt + F ........ Insère 'IfFalse'

Alt + T ........ Insère 'IfTrue'

[Maj + Suppr]... Supprime le mot ou l'expression suivante.

Alt + k ........ Spécifier la police

Alt + K ........ Définir la police

Les touches en majuscules correspondent aux commandes que l'on peut uniquement effectuer dans un Workspace