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 performances 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, un CLA "forme"SS pourrait avoir une méthode appelée «Getarea», car chaque forme a une zone. Une sous-classe "cercle" de "forme", cependant, implémenterait "Getarea" différemment de la façon dont une sous-classe "carrée" le ferait. Par conséquent, si un nouvel objet est créé de type "forme" et que 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 saura pas quelle 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.
La liaison dynamique permet la flexibilité d'utiliser des méthodes abstraites sans savoir quelle implémentation spécifique sera utilisée. Dans l'exemple "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 Getarea du cercle; Sinon, si la forme est un carré, appelez la méthode Getarea spécifique pourcarré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 une 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.