|
|
Este artículo describe el modo de simular en VB5 la herencia de clases. Se sumministra asimismo un enlace a un complemento de VB5 que permite realizar esta implementacion de forma automática.
Una de las caracteristicas más típicas de los lenguajes orientados a objeto es la herencia. Así vemos que C++ permite la herencia múltiple. Java solo permite la herencia simple pero permite definir interfaces que las clases pueden implementar, consiguendo así una funcionalidad similar.
Consultando la documentacion de VB5, podemos percatarnos de que este lenguaje no soporta herencia. Según la misma documentacion, VB implementa el polimorfismo por medio de interfaces. Una vez definido un interface, cualquier clase puede implementar dicho interface y dada una referencia a esa clase, el lenguaje será capaz de transformarla en una referencia al interface. Esto es la esencia misma del polimorfismo, sin embargo no se reutiliza el código y el trabajo que debe hacer el programador aumenta.
Hay que destacar que la definicion de un interface en VB es exactamente igual a la de una clase y que una clase puede implementar toda la interface pública de otra.
Analizando el trabajo que hace un compilador de C++ al crear una clase derivada de otra, vemos que primero se crea una instancia de la clase base, llamando a su constructor, y posteriormente se crea la clase derivada. Las llamadas a funciones -o accesos a datos miembro- de la clase derivada se desvían a los métodos -y datos- de la clase base excepto en el caso de que la clase derivada sobrecargue la función.
Un modo relativamente complicado de reutilizar código en VB5 consiste en realizar manualmente lo mismo que cualquier compilador haría para implementar la herencia:
Este modo de implementar la herencia, en especial el paso tercero, aumenta considerablemente la cantidad de código que hay que escribir manualmente respecto a un lenguaje que implemente la herencia en modo nativo. Sin embargo VB5 nos ofrece la posiblidad de añadir complementos al entorno integrado de desarrollo, un complemento que realiza esta simulacion de herencia se puede descargar desde estas mismas páginas, para descargarlo pulse aquí.
Otro inconveniente de esta implementacion es que deja a la vista del programador todos los detalles que normalmente quedan ocultos en la implementacion de la herencia. Esto no se puede evitar pero se compensa porque, a cambio, el programador puede manipular directamente el mecanismo de herencia. Por ejemplo, una clase puede delegar la implementacion de varios interfaces (no solo uno) a otra clase o tambien puede impelementar un interface con código enteramente nuevo, sin necesidad de construir un objeto de la clase base.