Está en la página 1de 7

Unidad 22.

La sobrecarga en las clases en VB


22.1. Objetivos del tema.
La sobrecarga, overload, es la posibilidad de tener varias versiones de un
mismo mtodo, vamos a ver como crearlo y como funciona desde el lenguaje
VB.
22.2. Introduccin.
Las caractersticas de la sobrecarga permite escribir varias versiones del
mismo mtodo, en VB no es necesario indicar con ninguna palabra previa que
un mtodo est sobrecargado basta con que existan dos procedimientos o
funciones con el mismo nombre pero tengan distintas lneas de parmetros.
22.3. Creacin.
En el ejemplo que sigue disponemos de tres mtodos new.
La segunda y la tercera son iguales, aunque las variables sean distintas, por lo
tanto deberamos eliminar una de las dos.

Public Class Ejemplos


Private Sub New()
End Sub

Public Sub New(ByVal Euros As Double)


End Sub

Public Sub New(ByVal Dolares As Double)


End Sub
End Class

Para este caso la solucin podra pasar por :

Public Class Ejemplos

Enum Monedas
Euro = 1
Dolar = 2
Libra = 3
Yen = 4
End Enum

Private Sub New()


End Sub

Public Sub New(ByVal Importe As Double, ByVal Cual As Monedas)


End Sub
End Class

En la solucin se utiliza una enumeracin, no vista todava, pero como se


puede observar es una definicin de opciones posibles para un valor.

La utilizacin de dicha clase podra quedar como sigue:

Podemos observar como se introduce un importe y luego solo hay que elegir
una de las opciones disponibles.

De esa forma no habra que utilizar una sobrecarga para resolver el problema.
Solo quedara escribir un mtodo convertir para realizar la conversin
adecuada en funcin de lo que se necesite.

Public Function Convertir(ByVal Cual As Monedas) As Double


Select Case Moneda
Case Monedas.Euro
Select Case Cual
Case Monedas.Dolar
Convertir = Import * 1.22
Case Monedas.Libra
Case Monedas.Yen
End Select
Case Monedas.Dolar

Case Monedas.Libra

Case Monedas.Yen

End Select
End Function

De tal forma que en el principal quedara.

Module Module1
Sub Main()
Dim Importe As Double = Console.ReadLine

Dim Objeto As Ejemplos = New Ejemplos(Importe, Ejemplos.Monedas.Euro)


Console.WriteLine(Objeto.Convertir(Ejemplos.Monedas.Dolar))
Console.ReadLine()
End Sub
End Module
No siempre es necesario realizar una sobrecarga.

En el siguiente ejemplo podemos ver repetido el mismo mtodo en tres


ocasiones, seran tres sobrecargas.

Public Sub Sobrecarga(ByVal Version1 As Integer)

End Sub

Public Sub Sobrecarga(ByVal Version2 As Integer, ByVal Otro As Boolean)

End Sub

Public Sub Sobrecarga(ByVal Version3 As Integer, ByVal Otro As Single)

End Sub

En el programa principal quedara reflejado como sigue:

Podemos ver en la siguiente imagen que la lnea de argumentos ha cambiado.

Solo es cuestin de elegir la que necesitemos.

Como hemos comentado, el realizar una sobrecarga no implica que haya que
reescribir el mtodo completo.

En el ejemplo que sigue podemos ver como las sobrecargas de cada mtodo
llaman al mismo procedimiento y lo que se hace es ofrecer distintas opciones
al usuario, completando por programa las carencias.

Public Class Ejemplos

Private Sub Escribe(ByVal Texto As String, _


ByVal ColorTexto As ConsoleColor, _
ByVal ColorFondo As ConsoleColor)
Console.ForegroundColor = ColorTexto
Console.BackgroundColor = ColorFondo
Console.WriteLine(Texto)
End Sub

Public Sub EscribirTexto()


Escribe("hola", ConsoleColor.White, ConsoleColor.Black)

End Sub

Public Sub EscribirTexto(ByVal Texto As String)


Escribe(Texto, ConsoleColor.White, ConsoleColor.Black)
End Sub

Public Sub EscribirTexto(ByVal Texto As String, _


ByVal ColorTexto As ConsoleColor, _
ByVal ColorFondo As ConsoleColor)
Escribe(Texto, ColorTexto, ColorFondo)
End Sub
End Class

En el principal su uso quedara as.

Module Module1
Sub Main()
Dim Objeto As Ejemplos = New Ejemplos
Objeto.EscribirTexto()
Objeto.EscribirTexto("Hola mundo")
Objeto.EscribirTexto("Hola", ConsoleColor.Blue, ConsoleColor.DarkBlue)
Console.ReadLine()
End Sub
End Module

Es importante recordar que desde los mtodos, podemos ejecutar cdigo


privado, funciones o procedimientos, lo cual reduce el volumen de cdigo que
hay que escribir, y reduce la posibilidad de errores.

Private Sub Escribe(ByVal Texto As String, _


ByVal ColorTexto As ConsoleColor, _
ByVal ColorFondo As ConsoleColor)
Console.ForegroundColor = ColorTexto
Console.BackgroundColor = ColorFondo
Console.WriteLine(Texto)
End Sub

Este procedimiento es llamado desde los tres mtodos, solo habra que
modificarlo una vez, y quedara actualizado para los tres.

22.4. Conclusiones.
La sobre carga, overload, nos permite que un mismo mtodo podamos tenerlo
escrito con distintas versiones y con el mismo nombre, de forma que podemos
tener distintos puntos de partida para una misma accin.
La sobrecarga se produce cuando el mtodo coincide en nombre pero no en el
nmero de argumentos o aunque tenga el mismo nmero de argumentos el
tipo de los mismos cambia.

También podría gustarte