1.2 Les points importants

Résumons ce que nous savons actuellement sur les objets, les messages, les transmissions et les expressions:

  1. SMALLTALK manipule uniformément des objets, qui peuvent être fort simples, comme des nombres ou des caractères, ou fort compliqués, comme des collections, des processus ou encore des écrans graphiques.

    Ces objets fonctionnent en recevant des messages, et en adoptant pour chaque message le comportement adéquat, lequel est décrit dans la classe de l’objet. Le couple «objet receveur, message» constitue une transmission.

    L’acte élémentaire de la programmation en SMALLTALK est l’exécution d’une transmission, de même qu’en LISP c’est l’évaluation d’une forme et en Prolog la résolution d’un but.

    Ces transmissions peuvent soit donner une valeur (un objet) comme résultat (fonctions), soit opérer des effets de bord sur l’environnement (procédures). On peut les composer de diverses manières et notamment les mettre en séquence.

  2. On peut affecter un objet comme valeur à une variable. L’affectation n’est pas une transmission, car on s’intéresse au nom de la variable, alors qu’une transmission demanderait l’objet qui est sa valeur.

    Enfin, on appelle expression toute composition de variables, de constantes et de transmissions qui aboutit à un objet comme valeur.

  3. Un objet est caractérisé par son état et par son comportement.

    Le comportement dépend de l’état, et l’état peut être modifié par le comportement, suivant des lois qui relèvent de la classe de l’objet.

  4. On formalisera l’état de l’objet par les valeurs d’un ensemble de variables (comme en physique), et son comportement par une batterie de procédures ou fonctions.

    Les variables en question apparaissent - bien entendu - dans les textes des procédures, ce qui assure le lien bidirectionnel entre état et comportement.

    Dans la terminologie SMALLTALK la plus courante, les variables d’état sont appelées variables d’instance, en anglais: instance variables. De même, nous appelerons méthodes les procédures définissant le comportement de l’objet.

  5. La liste des noms de variables d’instance (pas leurs valeurs!) ainsi que le catalogue des méthodes appartiennent à la classe de l’objet.

    L’objet lui-même (l’instance) est constitué de la liste des valeurs des variables d’instances qui caractérisent son état courant, et de l’indication (l’adresse) de sa classe.

  6. Dès lors, l’exécution d’une de ces procédures, réalisant le comportement de l’objet, demande seulement que l’on connaisse la procédure à exécuter et ses arguments: ces éléments constituent le message envoyé à l’objet et qui doit produire, en réponse, le dit comportement.
  7. Un message est composé d’un sélecteur, identifiant la procédure dans le catalogue des méthodes (son nom vis-à-vis de la classe), et des arguments transmis.

    À la réception du message, l’objet obtient de sa classe la méthode correspondant au sélecteur, puis exécute le code correspondante en donnant aux variables d’instance qui y apparaissent ses propres valeurs (celles qui décrivent son état). Cette exécution doit provoquer le comportement attendu.