next up previous
Next: Autres constructions Up: Liaison tardive Previous: Utilisation de Self

Liaison tardive et représentation mémoire

L'enregistrement d'attributs qui sert à représenter en mémoire les données d'un objet est, pour la plupart des langages, un peu plus compliqué que celui étudié dans la partie [*]. En général un enregistrement d'attributs est composé de deux parties: une partie variable et propre à chaque objet contient les variables d'instance; une partie fixe et partagée par tous les objets instances d'une même classe, correspond à une table de méthodes.

La table de méthodes est organisée comme un tableau qui contient le code de toutes méthodes, chacune indexée par le numéro de la méthode. Le numéro associé à une méthode est calculé au moment de la compilation et ne varie pas au sein d'un même programme.

ocell $\longrightarrow$

$\bullet$
cont 0
$\longrightarrow$
1 (code get)
2 (code set)


Nous supposons qu'il existe une instruction machine SELECT(o,k) capable d'extraire le code d'une méthode de numéro k dans la table de méthodes de o. Dans notre exemple, l'envoi de message ocell#get es compilé par l'instruction SELECT(ocell,1). La liaison tardive est obtenu par l'appel à cet instruction lors de l'exécution de l'envoi de message, plutôt que lors de sa compilation.

L'envoi de messages à self est aussi compilé en une sélection de méthode, à partir de son numéro, dans la table des méthodes dynamiquement liée à self lors de l'exécution.

Pendant la compilation de l'héritage, les méthodes, re-définies ou non, conservent le même numéro que dans leurs classes parentes. Ceci garantît, en particulier, la re-utilisation polymorphe et sans danger pendant l'exécution, des programmes conçus pour les super-classes, par les objets instances des sous-classes. En effet, le code compilé pour ces programmes, selectionne un numéro de méthode qui correspond uniformément au même nom de méthode dans tous les enregistrements d'attributs.


next up previous
Next: Autres constructions Up: Liaison tardive Previous: Utilisation de Self
Maria-Viginia Aponte
2001-03-28