![]()
![]()
![]()
![]()
![]()
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:createqui 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
:requiredou:classdes champs. Par convention, elle retourne l'objet nouvellement créé.Pour illustrer cela, définissons une classe
:Osm> (define-class <a> #f (the-a)) => #unspecifiedCette 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:createpour 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)) => #unspecifiedPar 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éthodeoo:createretourne l'objet créé. Lorsquenext-methodest 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 estselfou le nom donné au premier argument.
![]()
![]()
![]()
![]()
![]()
Next: Mot clefs Up: Fonction générique Previous: Fonctions génériques   Contents   Index © 1993 to 2001 Erian Concept