martes, mayo 23, 2006

Métodos

Mexicali, Baja California a 22 de Mayo de 2006.
Métodos
Métodos dentro de una Clase

Ya hemos definido anteriormente que una clase es un set de objetos que comparten caracteristicas comunes y comportamiento. Los objetos son parte de este set y son conocidos como instancias de la clase. Hemos visto que los atributos de una clase son implementados como campos y propiedades. Sabemos ahora que los campos contienen los datos de un objeto y las propiedades proveen acceso controlado a este estado.

Veremos ahora el comportamiento, el cual es la segunda dimensión de las clases. El comportamiento significa describir que es lo que puede hacer una instancia de la clase. Por ejemplo, un caballo puede trotar, brincar, comer, entre otras cosas. Todos los caballos pueden realizar estas acciones. El set de todas las acciones, que los objetos de una clase pueden realizar son llamados, Comportamiento. En la programación, el comportamiento es representado como métodos de una clase.

Un método es una función o una subrutina definida dentro del cuerpo de una clase, la cual realiza alguna acción cuando es llamada. Por ejemplo, un método que se llame Jump en la clase Horse podria calcular que tan alto puede brincar el caballo basado en su altura y regresar el valor al que lo mando llamar. Veamos el siguiente ejemplo:

Public Class Horse
Private m_name As String
Private m_color As String
Private m_height As Single

Public ReadOnly Property name() As String
Get
Return m_name
End Get
End Property

Public ReadOnly Property color() As String
Get
Return m_color
End Get
End Property

Public Property height() As Single
Get
Return m_height
End Get
Set(ByVal Value As Single)
If 1 <= Value And Value <= 2.5 Then
m_height = Value
End If
End Set
End Property

Public Sub New(ByVal name As String, ByVal Color As String, Optional ByVal height As Single = 1.5)
m_name = name
m_color = Color
MyClass.height = height

End Sub

Public Function jump() As Single
Return CSng(1.75 * m_height)
End Function
End Class


Aquí tenemos todos los campos declarados como privados, y tambien tenemos propiedades publicas para los atributos. El nombre y el color deben de ser proveidos cuando se construya el objeto caballo porque las propiedades nombre y color son declaradas como Readonly. La altura es opcional y puede ser modificada después.

La Nueva función Jump es un metodo de la clase que regresa la altura que el caballo puede brincar. En este ejemplo sencillo, siempre es el 75% de su altura. Este valor es calculado, convertido a Single y regresado.

Para usar el nuevo método que definimos:
Module Module1

Sub Main()
Dim C As Horse = New Horse("Negro", "Negro", 2.5)
Console.WriteLine("Nombre: {0} Color{1}", C.name, C.color)
Console.WriteLine("Distancia Brincada: {0}", C.jump)
Console.ReadLine()

End Sub

End Module


Los métodos normales de una clase (no constructors o propiedades) pueden ser llamados usando la notacion-punto familiar y proveyendo los paréntesis después de llamar al método. Si un método tuviera un argumento definido, necesitaríamos poner los valores de los parámetros dentro de los paréntesis. Si tuvieramos mas de un valor, necesitaríamos separarlos por comas.

Los métodos de las clases tiene modificadores de acceso, similares a los campos y propiedades. Estos pueden ser Public, Private, Protected, o Friend. El significado de los modificadores son los mismos como para las propiedades y los campos. Los métodos Publicos pueden ser llamados por cualquiera; los privados pueen serllamados solo por otros métodos o propiedades de la misma clase.

Como vimos del ejemplo anterior, los metodos tienen acceso a los otros miembros de la clase. Por ejemplo el metodo Jump usa el campo m_height para desarrollar su tarea. Algunos métodos pueden alterar alguno de los atributos del objeto, tambien a traves de propiedades (properties) (como un constructor, donde se use la propiedad height) o a traves del uso de los campos de la clase.

Si tuvieramos que crear dos objetos del tipo Horse, cada uno de ellos con su propia altura (height), y después llamar el Metodo Jump los valores que regresaria serian diferentes porque en cada caso el metodo regresaria el 75 porciento de la altura del objeto que mandamos llamar.

Module Module1
Sub Main()
Dim H as Horse = New Horse (“Bucefalus”, “black”, 2)
Dim g as Horse = New Horse (“Lightning”, “brown”, 1.75)

Console.WriteLine (“The horse {0} el color: {1} y la altura: {2}”, H.name, H.color, H.Jump())

Console.WriteLine (“The horse {0} el color: {1} y la altura: {2}”, g.name, g.color, g.Jump())
End Sub
End Module

En resumen podríamos decir que un método es una subrutina o una funcion definida dentro del cuerpo de la clase que podemos mandar llamar de un objeto (usando la notacion-punto) para pedirle al objeto que realice una tarea especifica.




Bibliografia VB .NET by Example p .276-278