POLIMORFISMO

 

 

 

 

  Polimorfismo

 

 

  Polimorfismo basado en la Herencia

 

Volver a página principal

 

 

 

 

 

Polimorfismo

En este artículo veremos como dar de comer a distintas clases de felinos. :) También se puede ajustar un tipo de una clase base para poder utilizar tipos derivados diferentes. El polimorfismo trata de conseguir métodos genéricos con el fin de conseguir clases mucho más funcionales y adaptables.

Existen varias formas de crear polimorfismo: Real, el que comentaremos en este artículo, de tipo paramétrico o por inclusión, basado en la herencia y funciones con varias interpretaciones. También se puede crear polimorfismo aparente utilizando la sobrecarga (varias funciones con el mismo nombre pero parámetros diferentes).

Y ¿para qué utilizaré el polimorfismo? Pues ahora mismo para alimentar a nuestros felinos de los artículos anteriores :P  Vamos a ver... teníamos hecha la clase Animales y su derivada Felinos. Con estas dos clases podremos crear varios Animales-Felinos y les daremos de Comer mediante un nuevo método polimórfico que implementaremos dentro de la clase Felinos. El nuevo método será genérico para varios tipos de felinos, en nuestro caso implementaremos también  dos nuevas clases: Tigre y Gato. A ambas clases les tendremos que dar de comer pero al pobre tigre no lo alimentaremos con galletitas para gato, no? . La solución es crear un método polimórfico que acepte diferentes tipos de una misma subclase o familia y que gestione de forma personalizada a cada tipo.

La mejor forma de entender un método polimórfico es crearlo y ver como se comporta. Primero crearemos las clases primaria Animales y su subclase Felinos:

 

 

 

 

Public Class Animales

      Public Overridable Function Comer(ByVal Tipo As Object) As String

      End Function

End Class

 

 

Public Class Felinos

    Inherits Animales

    Public Overrides Function Comer(ByVal Tipo As Object) As String

       Select Case Tipo.Nombre

           Case "Gato" : Return "Galletas"

           Case "Tigre" : Return "Carne"

           Case Else : Return "Sólo Gatos y Tigres"

       End Select

   End Function

End Class

 

 

 

La clase Animales es una clase abstracta y sólo contendrá la definición de Comer y sus parámetros como guía para las subclases que hereden de esta. Así pues, en  Animales definiremos que el método Comer debe existir para luego implementarlo en la subclase Felinos. Para diferenciar los diferentes tipos que utilizarán el método Comer, utilizaremos un parámetro de tipo Object donde le pasaremos el objeto que quiere Comer. Las mismas clases se identificarán a la función Comer  mediante la función Nombre, incluidas en Tigre y Gato. De esta forma podemos dar de comer a todo Objeto que se identifique mediante el método Nombre. Fácil ¿verdad?

 

 

 

Public Class Tigre

    Inherits Felinos

    Public Function Nombre() As String

       Return "Tigre"

    End Function

End Class

 

Public Class Gato

    Inherits Felinos

    Public Function Nombre() As String

        Return "Gato"

    End Function

End Class

 

 

Las dos clases Gato y Tigre sólo contendrán una función que las identificará.

 

 

Dim Gato1 As New Gato()

Dim Tigre1 As New Tigre()

 

Console.WriteLine = Gato1.Comer (Gato1)

Console.WriteLine = Tigre1.Comer (Tigre1)

 

Resultado :

                     Galletas

                     Carne

 

 

 

 

Polimorfismo basado en la Herencia

 

También es posible crear polimorfismo basándonos en la herencia de una manera muy simple. Podemos declarar objetos de diferentes clases para acceder a los métodos base que hayan sido substituidos por otros:

 

 

 

Public Class Felinos

    Inherits Animales

    Public Overridable Sub Correr()

        {Codigo Correr Felinos }

    End Sub

End Class

 

Public Class Gato

    Inherits Felinos

    Public Overrides Sub Correr()

        {Codigo Correr Gato }

    End Sub

End Class

 

 

'Código que pondremos en la aplicación principal

 

Dim Gato1 As New Gato()

Dim Gato2 As New Felino()

 

Gato1.Correr 'Gato1 Ejecutará el método Base de Felinos

Gato2.Correr 'Gato2 Ejecutará el método que haya en la clase Gato

 

 

 

 

 

 

Volver a Título▲            ◄Índice principal►             Timeless web site