next up previous contents index
Next: Mot clefs Up: Fonction générique Previous: Fonctions génériques   Contents   Index

Subsections

Fonction générique prédéfinie

oo:create

Pour rester simple, OpenScheme ne définit qu'une seule fonction générique oo:create qui est invoquée chaque fois qu'un objet est créé.

Cette fonction alloue la mémoire nécessaire pour stocker l'objet et initialise ses champs. Elle effectue aussi un contrôle, lorsque c'est spécifie avec les options :required ou :class des champs. Par convention, elle retourne l'objet nouvellement créé.

Pour illustrer cela, définissons une classe  :

Osm> (define-class <a> #f (the-a))
  => #unspecified

Cette classe n'hérite d'aucune autre classe. Elle possède un champ libre nommé the-a.

Spécialisons maintenant la fonction générique oo:create pour les objets de la classe  : Nous voulons compter le nombre d'objets de cette classe créés :

; compteur d'objet, initialisé à 0
Osm> (define <A>-count 0)
  => #unspecified

; Spécialisation de la fonction
Osm> (define-method (oo:create (self <a>)
                    args)
       (set! <A>-count (+ <A>-count 1))
       (next-method))
  => #unspecified

Par convention, l'objet lui-même est appelé self. C'est une habitude prise avec le langage SmallTalk.

Il est important d'invoquer next-method ; si ce n'est pas fait, l'objet n'est pas créé. Par convention aussi, la méthode oo:create retourne l'objet créé. Lorsque next-method est placée en dernier, c'est elle qui retourne l'objet. Dans le cas contraire, la dernière expression dans le corps de la méthode est self ou le nom donné au premier argument.


next up previous contents index
Next: Mot clefs Up: Fonction générique Previous: Fonctions génériques   Contents   Index
© 1993 to 2001 Erian Concept