next up previous
Next: Polymorphisme et liaison tardive Up: Les objets en Ocaml: Previous: Re-utilisation et polymorphisme

Liaison tardive

Avant d'exécuter un programme, on doit établir le lien entre chaque identificateur rencontré et sa valeur (ou son code): il s'agit du problème de la liaison d'identificateurs. Si le lien est établit au moment de la compilation on parle de liaison statique (ou précoce, early-binding), et lorsqu'il est retardé jusqu'à l'exécution du programme on parle de liaison tardive (ou dynamique, late-binding). Dans les dialectes ML (et dans une grande majorité de langages) la liaison des identificateurs est statique. Dans les dialectes Lisp, celle-ci est dynamique. Considérons l'exemple suivant en ML:

# let x = 3;;
val x : int = 3

# let f (y) = x+y;;
val f : int -> int = <fun>

f (2);;
- : int = 5

let x = 7;;
val x : int = 7

f (2)
- : int = 5

L'identificateur x dans le corps de f est lié statiquement à la valeur de x au moment de la définition de f, c.a.d., à la valeur 3. La redéfinition ultérieure de x ne change pas le comportément de f.

Dans les langages à objets, la liaison tardive concerne le lien entre une méthode et son code: un même identificateur de méthode peut être lié à un code différent au sein de chaque objet, et ainsi, c'est seulement à travers l'objet receveur qu'il est possible d'activer le code appropié.

Dans les langages objet, la liaison retardée est un moyen de plus au service de la re-utilisation. Comme nous l'avon vu, re-utilisation et polymorphisme des objets sont intimement liés. Nous retrouverons ces notions dans les deux cas étudiés par la suite. Ils correspondent aux deux schémas typiques de re-utilisation via la liaison tardive.



 
next up previous
Next: Polymorphisme et liaison tardive Up: Les objets en Ocaml: Previous: Re-utilisation et polymorphisme
Maria-Viginia Aponte
2001-03-28