“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 282 — #292
i
i
i
i
i
i
i
i
282
6
• La programmation orientée objet
(un «m» visible à partir de C)
A1
B1
B
A
C
A1
B1
B
A
C
m
m
m
m
Méthode m
Hiérarchie de classe illégale
Hiérarchie de classe légale
(deux «m» visibles à partir de C)
Figure 6.4 Des hiérarchies de classe illégale et légale.
6.3.2 Tout est exécution
Si un programme qui déclare C est compilé, le système ne se plaindra pas. C’est seulement quand le programme exécute la déclaration que le système lève une exception.
Si le programme ne l’exécute pas, aucune exception n’est levée. Par exemple, un
programme qui contient le code suivant :
fun {StrangeClass}
class A meth foo(X) X=a end end
class B meth foo(X) X=b end end
class C from A B end
in C end
peut être compilé et exécuté avec succès. Son exécution a pour effet de définir la
fonction StrangeClass. C’est seulement pendant l’appel {StrangeClass}
qu’une exception sera levée. Cette « détection tardive d’erreurs » n’est pas seulement
une propriété des déclarations de classe. C’est une propriété générale du système
Mozart qui est une conséquence de la nature dynamique du langage Oz : il n’y a
aucune distinction entre une opération faite à la compilation et la même opération
faite à l’exécution. Le système à objets partage cette nature dynamique. Par exemple,
il est possible de définir des classes dont les étiquettes des méthodes sont calculées à
l’exécution.
On peut dire que tout est exécution dans le système Mozart. Le compilateur fait partie du système à l’exécution. Une déclaration de classe est une instruction exécutable.
Son exécution crée une classe, qui est une valeur dans le langage (voir figure 6.5).
Cette valeur peut être passée à New pour créer un objet.
Un système de programmation n’a pas besoin de faire la distinction entre la compilation et l’exécution. Cette distinction est simplement une manière d’aider le compilateur
i
i
i
i
i
i
i
i
282
6
• La programmation orientée objet
(un «m» visible à partir de C)
A1
B1
B
A
C
A1
B1
B
A
C
m
m
m
m
Méthode m
Hiérarchie de classe illégale
Hiérarchie de classe légale
(deux «m» visibles à partir de C)
Figure 6.4 Des hiérarchies de classe illégale et légale.
6.3.2 Tout est exécution
Si un programme qui déclare C est compilé, le système ne se plaindra pas. C’est seulement quand le programme exécute la déclaration que le système lève une exception.
Si le programme ne l’exécute pas, aucune exception n’est levée. Par exemple, un
programme qui contient le code suivant :
fun {StrangeClass}
class A meth foo(X) X=a end end
class B meth foo(X) X=b end end
class C from A B end
in C end
peut être compilé et exécuté avec succès. Son exécution a pour effet de définir la
fonction StrangeClass. C’est seulement pendant l’appel {StrangeClass}
qu’une exception sera levée. Cette « détection tardive d’erreurs » n’est pas seulement
une propriété des déclarations de classe. C’est une propriété générale du système
Mozart qui est une conséquence de la nature dynamique du langage Oz : il n’y a
aucune distinction entre une opération faite à la compilation et la même opération
faite à l’exécution. Le système à objets partage cette nature dynamique. Par exemple,
il est possible de définir des classes dont les étiquettes des méthodes sont calculées à
l’exécution.
On peut dire que tout est exécution dans le système Mozart. Le compilateur fait partie du système à l’exécution. Une déclaration de classe est une instruction exécutable.
Son exécution crée une classe, qui est une valeur dans le langage (voir figure 6.5).
Cette valeur peut être passée à New pour créer un objet.
Un système de programmation n’a pas besoin de faire la distinction entre la compilation et l’exécution. Cette distinction est simplement une manière d’aider le compilateur
