Next: Utilisation de super Up: La gestion des messages Previous: Messages à self et

Un exemple

La distinction entre self et super se fait clairement dans une hiérarchie de trois classes. Supposons par exemple, l'existence d'une instance de la classe Bas. La superclasse de Bas est Milieu, la super classe de Milieu est Haut. Les trois classes ont une méthode négocier différente, qu'elles peuvent utiliserpour une variété d'utilisations. De plus, milieu a une méthode ambitieuse appelée PaixDurable, qui utilise aussi la méthode négocier.Voir Figure 7.

On envoi maintenant à notre instance de Bas, le message PaixDurable qui va envoyer à la même instance de la Classe Bas le message négocier, Deux possibilités si le source de Paix Durable est le suivant: - PaixDurable ... [self négocier]; ... le système de messages va trouver la méthode définie dans Bas. Si le source est le suivant : - PaixDurable ... [super négocier]; ... le système de messages va trouver la méthode définie dans Haut! Ansi la méthode définie dans Milieu n'est jamais atteinte à partir d'une instance de Bas !

Cet exemple illustre la possibilité de cours circuiter une méthode qui peut avoir été redéfinie dans une sous classe.

Cette exemple semble suggérer l'existence d'un défaut dans le système de messages, du fait qu'il est impossible d'accéder à la méthode négocier de la classe Milieu dans une instance de la classe Bas. Mais dans les circonstances décrite c'est le bon choix en effet : - l'auteur de la classe Bas a intentionnellement caché la méthode définie dans Milieu, en créant un nouvelle méthode pour cette classe Bas (et ces sousclasses). - l'auteur de la classe Milieu a utiliser super dans la méthode Paix Durable pour assurer que la méthode négocier de la classe Haut soit utiliser et aucune autre !

Pour utiliser la méthode négocier de la classe Milieu il suffit d'avoir une instance de cette classe et de lui envoyer directement le message négocier.

Figure 7. Haut, Milieu et Bas

Next: Utilisation de super Up: La gestion des messages Previous: Messages à self et

Dominique REVUZ
Vendredi 21 février 1997 17:27:12
Une Bug Un mail Merci