¿Qué es el enlace dinámico?

En la informática, el enlace de nombre es la asociación de un identificador, como una función o nombre de variable, a una sección de código o datos. En el escenario más común, la unión estática, este mapeo se conoce en el momento de la compilación. En la unión dinámica, el objeto mapeado por una función no se conoce en el momento de la compilación y solo se puede determinar durante el tiempo de ejecución del programa. Por esta razón, la unión dinámica también se llama vinculación tardía. Aunque la unión dinámica ofrece flexibilidad no disponible con la unión estática, también implica más costos de rendimiento que la unión estática.

La unión dinámica está estrechamente relacionada con el polimorfismo, que forma parte de la programación orientada a objetos. El polimorfismo permite implementar el mismo nombre del método de diferentes maneras. Si el código no está escrito de tal manera que el método preciso no se pueda determinar en el momento de la compilación, entonces se debe usar la unión dinámica.

Por ejemplo, un CLA de "forma"SS podría tener un método llamado "GetArea", porque cada forma tiene un área. Sin embargo, una subclase "círculo" de "forma" implementaría "getArea" de manera diferente a la forma en que lo haría una subclase "cuadrada". Por lo tanto, si se crea un nuevo objeto de tipo "forma", y si el código llama al método "GetArea" en esa forma, el compilador no tendrá forma de saber si la forma terminará siendo un círculo o un cuadrado y, por lo tanto, no sabrá qué método GetArea llamar. Este es un ejemplo de enlace dinámico, porque el método GetArea correcto se mapeará solo en el tiempo de ejecución, después de que el programa sabe qué tipo de forma es el objeto.

La unión dinámica permite la flexibilidad de usar métodos abstractos sin saber qué implementación específica se utilizará. En el ejemplo de "forma", el código podría escribirse para evitar la unión dinámica utilizando explícitamente esta lógica: si la forma es un círculo, llame al método GetArea del círculo; más, si la forma es un cuadrado, llame al método específico de getArea paracuadrícula. El beneficio de la unión dinámica es que el código es más limpio y más mantenible que la alternativa. En el ejemplo de enlace estático, hay duplicación de código, y el código debe actualizarse cada vez que se agrega un nuevo tipo de forma.

Las desventajas de la unión dinámica son el rendimiento y la seguridad. En la unión estática, el compilador sabe exactamente qué código llamar y puede optimizar el código para ejecutar de manera más eficiente. La seguridad de los tipos puede ser un problema porque, en algunas implementaciones de enlace dinámico, se puede llamar a un método en un objeto que no admite el método. Por ejemplo, el método "GetArea" podría llamarse en un objeto que no es una forma y, por lo tanto, no tiene un método "GetArea", lo que podría resultar en un error de tiempo de ejecución. La unión estática evitaría este escenario al elevar un error de compilación.

OTROS IDIOMAS