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.


Así se Simula la Herencia en Visual Basic

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: psoft@latino.net.co
Derechos libres de reutilización solo para programación.