“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 274 — #284
i
i
i
i
i
i
i
i
274
6
• La programmation orientée objet
class Counter
attr val
meth init(Value)
val:=Value
end
meth browse
{Browse @val}
end
meth inc(Value)
val:=@val+Value
end
end
Figure 6.1 Un exemple de classe Counter (avec la syntaxe de class).
browse et inc, pour l’initialisation, l’affichage et l’incrémentation du compteur.
L’attribut est modifié avec l’opérateur := et lu avec l’opérateur @. À première vue,
c’est très proche d’autres langages, avec une syntaxe légèrement différente. Mais il y
a quelques différences importantes !
La déclaration de la figure 6.1 est une instruction exécutable : elle crée une valeur
de classe et la lie à Counter. Si on remplace « Counter » par « $ », la déclaration
pourra être utilisée dans une expression. Mettre cette déclaration à la tête d’un programme déclarera la classe avant le reste, ce qui est un comportement familier. Mais
ce n’est pas la seule possibilité. La déclaration peut se mettre partout où l’on peut
mettre une instruction. Par exemple, mettre la déclaration à l’intérieur d’une procédure
créera une nouvelle classe distincte chaque fois que la procédure sera appelée.
Nous pouvons créer un objet de la classe Counter et faire quelques opérations
avec lui :
C={New Counter init(0)}
{C inc(6)} {C inc(6)}
{C browse}
Ces instructions créent l’objet compteur C avec une valeur initiale 0, l’incrémentent
deux fois par 6 et affichent sa valeur. L’instruction {C inc(6)} s’appelle une invocation d’objet. Le message inc(6) est utilisé par l’objet pour identifier la méthode
correspondante. Essayez le code suivant :
local X in {C inc(X)} X=5 end
{C browse}
Rien n’est affiché ! C’est parce que l’invocation de l’objet
i
i
i
i
i
i
i
i
274
6
• La programmation orientée objet
class Counter
attr val
meth init(Value)
val:=Value
end
meth browse
{Browse @val}
end
meth inc(Value)
val:=@val+Value
end
end
Figure 6.1 Un exemple de classe Counter (avec la syntaxe de class).
browse et inc, pour l’initialisation, l’affichage et l’incrémentation du compteur.
L’attribut est modifié avec l’opérateur := et lu avec l’opérateur @. À première vue,
c’est très proche d’autres langages, avec une syntaxe légèrement différente. Mais il y
a quelques différences importantes !
La déclaration de la figure 6.1 est une instruction exécutable : elle crée une valeur
de classe et la lie à Counter. Si on remplace « Counter » par « $ », la déclaration
pourra être utilisée dans une expression. Mettre cette déclaration à la tête d’un programme déclarera la classe avant le reste, ce qui est un comportement familier. Mais
ce n’est pas la seule possibilité. La déclaration peut se mettre partout où l’on peut
mettre une instruction. Par exemple, mettre la déclaration à l’intérieur d’une procédure
créera une nouvelle classe distincte chaque fois que la procédure sera appelée.
Nous pouvons créer un objet de la classe Counter et faire quelques opérations
avec lui :
C={New Counter init(0)}
{C inc(6)} {C inc(6)}
{C browse}
Ces instructions créent l’objet compteur C avec une valeur initiale 0, l’incrémentent
deux fois par 6 et affichent sa valeur. L’instruction {C inc(6)} s’appelle une invocation d’objet. Le message inc(6) est utilisé par l’objet pour identifier la méthode
correspondante. Essayez le code suivant :
local X in {C inc(X)} X=5 end
{C browse}
Rien n’est affiché ! C’est parce que l’invocation de l’objet
