Artículo |
Así se Simula la Herencia en Visual Basic |
Autor / Fuente |
Harvey Triana / Citasde la documentación de Class Inheritance Master, -Advanced Code Generator for VB4- |
Tema |
Programación Orientada a Objetos con Visual Basic |
Actualización |
Octubre 24 de 1997 |
Descripción |
Describe como Visual Basic puede simular herencia entre clases. |
Primero que todo, ¿qué es la Herencia?. La herencia es un concepto de la programación orientada a objetos, donde una clase reutiliza las propiedades y funciones (métodos) de una clase superior. Se dice que una clase hereda de la superclase a partir de una jerarquía estricta.
Por ejemplo, un perro y un gato tienen una cualidad: morder, en lugar de repetir el código del método morder en ambas clases, se crea una clase Carnívoros, y tanto la clase Perro como Gato heredan de la clase Carnívoro. Si necesita implementar algo nuevo en el método Morder, no tendrá que modificar el código de las clases Perro o Gato. -Que bueno ¿no?.
Para simular herencia, simplemente declara un objeto privado de la clase superior dentro de la clase heredada y relega a este objeto la ejecución de los métodos y propiedades. Vea el siguiente ejemplo:
VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "Carnivoro" Attribute VB_Creatable = False Attribute VB_Exposed = False '------------------------------------------------------- ' Clase Carnívoro ' Simulando Herencia. Ejemplo Harvey T. '------------------------------------------------------- DefInt A-Z Option Explicit Public Tipo As String Public Mamífero As Boolean Public Habitad As String Public Sub Morder(Optional Nombre As Variant) Dim s As String s = "El carnívoro de tipo «" & Tipo & "» acaba de morder." If Not IsMissing(Nombre) Then s = s + " Es una mascota y se llama «" & Nombre & "»" End If MsgBox s End Sub VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "Gato" Attribute VB_Creatable = False Attribute VB_Exposed = False '------------------------------------------------------- ' Clase Gato ' Simulando Herencia. Ejemplo Harvey T. '------------------------------------------------------- Option Explicit 'Simula una Superclase, ó que esta clase es una Subclase de 'que hereda de Carnivoro Private m_Carnivoro As New Carnivoro 'Propiedades exclusivas de esta clase Public Nombre As String Public Raza As String Public RatonesCazados As Integer '------------------------------------------------------ ' Muestra como heredar un método de la superclase '------------------------------------------------------ Sub Morder() m_Carnivoro.Morder Nombre End Sub '------------------------------------------------------ ' Es conveniente fijar las propiedades de la superclase '------------------------------------------------------ Private Sub Class_Initialize() With m_Carnivoro .Tipo = "Felino" .Habitad = "Hogar" .Mamífero = True End With End Sub '------------------------------------------------------ ' Muestra como heredar una propiedad de la superclase ' Así podremos usar miGato.Mamífero para saber si es ' mamífero. '------------------------------------------------------ Public Property Get Mamífero() As Boolean Mamífero = m_Carnivoro.Mamífero End Property
Para implementar las propiedades y métodos heredados, no necesita escribir código "inteligente", simplemente se delega la ejecución a la objeto privado de la superclase, en nuestro caso m_Carnivoro. Cualquier cambio en el código de la clase Carnívoro estará al servicio de las subclases digamos Gato, Perro, León, etc. (este es el objetivo de la herencia),. Esta técnica es muy poderosa y ofrece muchas de las ventajas de la herencia "pura" (VB no es un lenguaje OOP puro). Sin embargo, el programador necesitará crear procedimientos manualmente. Por ejemplo, para heredar una propiedad, es indispensable crear el par Get/Let aún si la superclase contiene la propiedad simple (Public). Para facilitar esto, existe software comercial que lo hace automáticamente, recomiendo « Class Inheritance Master, -Advanced Code Generator for VB4- », hasta donde sé, existe una versión Shareware del mismo.
Este vínculo bajará un proyecto con el ejemplo y este artículo «download».
Harvey Triana
Envíe sus comentarios a:
[email protected]
Derechos libres de reutilización solo para programación.