Skip to main content

Qu'est-ce que la liaison dynamique?

En informatique, la liaison du nom est l'association d'un identifiant, comme une fonction ou un nom de variable, à une section de code ou de données.Dans le scénario le plus courant, la liaison statique, cette cartographie est connue au moment de la compilation.Dans la liaison dynamique, l'objet mappé par une fonction n'est pas connu au moment de la compilation et ne peut être déterminé que pendant le temps d'exécution du programme.Pour cette raison, la liaison dynamique est également appelée liaison tardive.Bien que la liaison dynamique offre une flexibilité non disponible avec la liaison statique, elle implique également plus de coûts de performance que la liaison statique.

La liaison dynamique est étroitement liée au polymorphisme, qui fait partie de la programmation orientée objet.Le polymorphisme permet d'implémenter le même nom de méthode de différentes manières.Si le code n'est pas écrit de telle manière que la méthode précise ne peut pas être déterminée au moment de la compilation, la liaison dynamique doit être utilisée.

Par exemple, une classe de forme peut avoir une méthode appelée getarea, car chaque forme a une zone.Une sous-classe Circle de forme implémenterait les Getarea différemment de la façon dont une sous-classe carrée le ferait.Par conséquent, si un nouvel objet est créé en forme de type, et si le code appelle la méthode getarea sur cette forme, le compilateur n'aura aucun moyen de savoir si la forme finira par être un cercle ou un carré, et donc il ne le saura pasquelle méthode getarea à appeler.Ceci est un exemple de liaison dynamique, car la méthode Getarea correcte sera mappée uniquement au moment de l'exécution, après que le programme sait quel type de forme est l'objet.être utilisé.Dans l'exemple de forme, le code pourrait être écrit pour éviter la liaison dynamique en utilisant explicitement cette logique: si la forme est un cercle, appelez la méthode des cercles getarea;Sinon, si la forme est un carré, appelez la méthode Getarea spécifique pour les carrés.L'avantage de la liaison dynamique est que le code est plus propre et plus maintenable que l'alternative.Dans l'exemple de liaison statique, il y a la duplication de code et le code doit être mis à jour chaque fois qu'un nouveau type de forme est ajouté.

Les inconvénients de la liaison dynamique sont les performances et la sécurité.En liaison statique, le compilateur sait exactement quel code appeler et peut optimiser le code pour exécuter plus efficacement.La sécurité de type peut être un problème car, dans certaines implémentations de liaison dynamique, une méthode peut être appelée sur un objet qui ne prend pas en charge la méthode.Par exemple, la méthode GETAREA peut être appelée sur un objet qui n'est pas une forme et n'a donc pas de méthode Getarea, ce qui pourrait entraîner une erreur d'exécution.La liaison statique empêcherait ce scénario en augmentant une erreur de compilation.