Cuando uno plantea una clase en lugar de especificar todo el algoritmo en un único método (lo que hicimos en los primeros pasos de este tutorial) es dividir todas las responsabilidades de las clase en un conjunto de métodos.
Un método hemos visto que tiene la siguiente sintaxis:
Public Sub [nombre del método]() [algoritmo] End Sub
Veremos que hay varios tipos de métodos:
Un método puede tener parámetros:
Public Sub [nombre del método]([parámetros]) [algoritmo] End Sub
Los parámetros los podemos imaginar como variables locales al método, pero su valor se inicializa con datos que llegan cuando lo llamamos.
Confeccionar una clase que permita ingresar valores enteros por teclado y nos muestre la tabla de multiplicar de dicho valor. Finalizar el programa al ingresar el -1.
Module Module1 Public Class TablaMultiplicar Public Sub CargarValor() Dim valor As Integer Do Console.Write("Ingrese un valor (-1 para finalizar):") valor = Console.ReadLine() If valor <> -1 Then Calcular(valor) End If Loop While valor <> -1 End Sub Public Sub Calcular(ByVal v As Integer) Dim f, tabla As Integer For f = 1 To 10 tabla = f * v Console.Write(tabla) Console.Write("-") Next Console.WriteLine() End Sub End Class Sub Main() Dim tablamultiplicar As New TablaMultiplicar() tablamultiplicar.CargarValor() End Sub End Module
En esta clase no hemos definido ningún atributo, no se requieren.
El método Calcular recibe un parámetro llamado "v" de tipo entero, luego lo utilizamos dentro del método para mostrar la tabla de multiplicar de dicho valor:
Public Sub Calcular(ByVal v As Integer) Dim f, tabla As Integer For f = 1 To 10 tabla = f * v Console.Write(tabla) Console.Write("-") Next Console.WriteLine() End Sub
Como vemos los parámetros se indican entre paréntesis luego del nombre del método. Se le antecede la palabra clave ByVal al nombre del parámetro)
Un método puede no tener parámetros como hemos visto en problemas anteriores o puede tener uno o más parámetros (en caso de tener más de un parámetro los mismos se separan por coma)
El método CargarValores no tiene parámetros y tiene por objetivo cargar un valor entero por teclado y llamar al método Calcular para que muestre la tabla de multiplicar del valor que le pasamos por teclado:
Public Sub CargarValor() Dim valor As Integer Do Console.Write("Ingrese un valor (-1 para finalizar):") valor = Console.ReadLine() If valor <> -1 Then Calcular(valor) End If Loop While valor <> -1 End Sub
Como vemos al método Calcular lo llamamos por su nombre y entre paréntesis le pasamos el dato a enviar (debe ser un valor o variable entera)
En este problema en la Main solo llamamos al método CargarValor, ya que el método Calcular luego es llamado por el método CargarValor:
Sub Main() Dim tablamultiplicar As New TablaMultiplicar() tablamultiplicar.CargarValor() End Sub
Un método puede retornar un dato:
Public Function [nombre del método]([parámetros]) As [Tipo de dato] [algoritmo] return [dato] End Function
Cuando queremos que un método retorne un dato debemos definir una Function en lugar de un procedimiento Sub.
Cuando un método retorna un dato al final de la declaración de la función indicamos el tipo de dato que devuelve. Luego dentro del algoritmo en el momento que queremos que finalice el mismo y retorne el dato empleamos la palabra clave Return con el valor respectivo.
Confeccionar una clase que permita ingresar tres valores por teclado. Luego mostrar el mayor y el menor.
Module Module1 Public Class MayorMenor Public Sub cargarValores() Dim valor1, valor2, valor3, mayor, menor As Integer Console.Write("Ingrese primer valor:") valor1 = Console.ReadLine() Console.Write("Ingrese segundo valor:") valor2 = Console.ReadLine() Console.Write("Ingrese tercer valor:") valor3 = Console.ReadLine() mayor = CalcularMayor(valor1, valor2, valor3) menor = CalcularMenor(valor1, valor2, valor3) Console.WriteLine("El valor mayor de los tres es:" & mayor) Console.WriteLine("El valor menor de los tres es:" & menor) End Sub Public Function CalcularMayor(ByVal v1 As Integer, ByVal v2 As Integer, ByVal v3 As Integer) As Integer Dim m As Integer If v1 > v2 And v1 > v3 Then m = v1 Else If v2 > v3 Then m = v2 Else m = v3 End If End If Return m End Function Public Function CalcularMenor(ByVal v1 As Integer, ByVal v2 As Integer, ByVal v3 As Integer) As Integer Dim m As Integer If v1 < v2 And v1 < v3 Then m = v1 Else If v2 < v3 Then m = v2 Else m = v3 End If End If Return m End Function End Class Sub Main() Dim mm As New MayorMenor() mm.cargarValores() Console.ReadKey() End Sub End Module
Si vemos la sintaxis que calcula el mayor de tres valores enteros es similar al algoritmo visto en conceptos anteriores:
Public Function CalcularMayor(ByVal v1 As Integer, ByVal v2 As Integer, ByVal v3 As Integer) As Integer Dim m As Integer If v1 > v2 And v1 > v3 Then m = v1 Else If v2 > v3 Then m = v2 Else m = v3 End If End If Return m End Function
Lo primero que podemos observar que el método retorna un entero y recibe tres parámetros, como retorna un dato utilizamos la palabra clave Function:
Public Function CalcularMayor(ByVal v1 As Integer, ByVal v2 As Integer, ByVal v3 As Integer) As Integer
Dentro del método verificamos cual de los tres parámetros almacena un valor mayor, a este valor lo almacenamos en una variable local llamada "m", al valor almacenado en esta variable lo retornamos al final con un Return.
La llamada al método calcularMayor lo hacemos desde dentro del método CargarCalores:
mayor = CalcularMayor(valor1, valor2, valor3)
Debemos asignar a una variable el valor devuelto por el método CalcularMayor. Luego el contenido de la variable mayor lo mostramos:
Console.WriteLine("El valor mayor de los tres es:" & mayor)
Para mostrar un String y un Integer en el método WriteLine podemos utilizar el operador & para concatenar los dos datos. Esta línea la veníamos escribiendo:
Console.Write("El valor mayor de los tres es:") Console.WriteLine(mayor)
La lógica es similar para el cálculo del menor.