Fecha y hora actual: Jueves 17 Ene 2019 04:11
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.16 - Clases, Código - VB Studio 2005

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.16 - Clases, Código - VB Studio 2005

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Lunes 16 Feb 2009 21:14

Título del mensaje: Curso VB .NET - Tema 1.16 - Clases, Código - VB Studio 2005

Responder citando

Curso de programación VB .NET - Tema 1.16 - Clases, Código - VB

1. Clases, Código VB.

1.1 Objetivos del tema.

Hemos visto los datos en el tema anterior, veamos ahora los métodos.
Veamos ahora los métodos desde VB, y como enfocarlos.

1.2 Introducción.
Los métodos es la zona donde se alberga el código ejecutivo de la clase, código ejecutivo de la clase porque en la captura de datos de las propiedades también hay código, pero es el dedicado a la validación de dicha captura de datos, y en el constructor, new, también hay código pero es el encargado de la fase de inicialización de marcar los valores iniciales requeridos en la clase para el objeto.

Si no existiera código en la misma, la clase puede seguir existiendo, pero lo único que podríamos hacer con ella es crear una estructura de datos, más o menos compleja.

1.3 Código en las Funciones, Procedimientos.
Para desarrollar una clase es necesario escribir un "pequeño programa", y ese pequeño programa se compone de una parte pública que son los métodos.

Estos métodos, podemos decir que son el punto de inicio de una acción, una acción que inicia el programa cuando reclama su presencia, es decir podríamos decir que una clase tiene un sin fin de puntos de inicio, cada uno de los métodos, además del principal que es el constructor, en VB new - si descartamos el código de las propiedades -, por lo tanto, como deseamos crear un código sencillo, estructurado y ordenado, es necesario que el código en el método sea breve.

Para ello el código de un método se compone, o se puede componer, de llamadas a procedimientos y funciones que se llaman desde el mismo.
Además de esa forma un procedimiento puede compartirse por varios métodos, lo que reduce el volumen de código de la clase.

Así que, en el interior de la clase escribiremos todos los procedimientos y funciones que se necesiten para poder desarrollar todas las acciones que sean necesarias en los métodos.
Como esos procedimientos y funciones se quedan en eso, no en métodos, se declararan como privadas, los métodos son públicos.

1.4 Código en los Métodos.
En los métodos, porque los procedimientos no se activan solos, y de alguna manera han de activarse, y eso se consigue mediante la ejecución ordenada del código que hay en cada uno de los métodos.

Hemos dicho que cada método es como un punto de inicio de un programa, pues en ese punto es donde empieza la acción, y ahí es donde a medida que se van ejecutando las líneas de código, se van escribiendo las llamadas a cada procedimiento.

En el ejemplo de clase que sigue, se ha creado un método que visualiza los números primos entre dos valores determinados.

Código:
Public Class Ejemplo
   Public Sub NumerosPrimos(ByVal Desde As Integer, ByVal Hasta As Integer)
      Dim x As Integer = Desde
      While x <= Hasta
         Select Case Primos(x)
            Case True
               Console.WriteLine("El número {0} es primo", x)
         End Select
         x = x + 1
      End While
   End Sub
   
   Private Function Primos(ByVal Numero As Long) As Boolean
      Dim X As Integer = 3
      Dim Final As Long
      Dim Result As Boolean = True
      Final = CLng(Numero / 2) + 1
      Select Case Numero Mod 2 <> 0
         Case True
            While X < Final And Result
               Result = Numero Mod X <> 0
               X = X + 1
            End While
         Case Else
            If Numero > 2 Then Result = False
      End Select
      Primos = Result
   End Function
End Class


En la clase vemos como disponemos de un procedimiento que es public, es un método, y de una función que es private, es una función, no es un método.

Podemos comprobarlo porque si escribimos en el entorno de programación, "Objeto." lo único que podemos ver es NumerosPrimos.



En ella vemos como en el método se llama a la función que devolverá cierto o falso en función de que el número sea primo o no.

Código:
Public Sub NumerosPrimos(ByVal Desde As Integer, ByVal Hasta As Integer)
   Dim x As Integer = Desde
   While x <= Hasta
      Select Case Primos(x)
         Case True
            Console.WriteLine("El número {0} es primo", x)
      End Select
      x = x + 1
   End While
End Sub


Si observamos el contenido del método, veremos como no encontramos nada que nos pueda resultar extraño, el código no incorpora nada raro, y no es nada más que un bucle mientras

Código:
While x <= Hasta


con una estructura condicional en su interior

Código:
Select Case Primos(x)


para visualizar solo aquellos números que sean primos

Código:
Console.WriteLine("El número {0} es primo", x)


con su correspondiente incremento al final.

Código:
x = x + 1


Después su utilización en el programa principal será como vemos en el ejemplo.

Código:
Module Module1
   Sub Main()
      Dim Objeto As Ejemplo = New Ejemplo
      Objeto.NumerosPrimos(10, 50)
   End Sub
End Module


Y su aclaración …

Código:
Dim Objeto As Ejemplo = New Ejemplo


Declaramos el objeto y se instancia.

Código:
Objeto.NumerosPrimos(10, 50)


Y ejecutamos el método con el rango que deseamos visualizar.
Nada que nos pueda parecer extraño.
El único cambio está en el exterior.

Código:
Public Class Ejemplo


Que esta declarado dentro de una clase que se llama Ejemplo.
Y después en el programa principal.

Código:
Sub Main()
   Dim Objeto As Ejemplo = New Ejemplo
   Objeto.NumerosPrimos(10, 50)
End Sub


1.5 Métodos, procedimientos.
En el ejemplo anterior lo que hemos visto es un método en el formato de procedimiento.

Código:
Public Sub NumerosPrimos(ByVal Desde As Integer, ByVal Hasta As Integer)
   Dim x As Integer = Desde
   While x <= Hasta
      Select Case Primos(x)
         Case True
            Console.WriteLine("El número {0} es primo", x)
      End Select
      x = x + 1
   End While
End Sub


Es uno de los formatos de escritura de un método.
Si observamos el interior, como ya se ha comentado anteriormente, lo que encontramos es una estructura de las ya vistas anteriormente, programación estructurada.



1.6 Métodos, funciones.
Pero si deseamos saber si un número es primo, o es par, el método nos debe devolver un dato, que puede ser cierto o falso, o cualquier otro tipo de dato, que nos indicaría en éste caso, que el número es primo o es par.

Por lo tanto lo que necesitamos es una función que es la estructura con la que se obtiene un dato a partir de la ejecución de la misma, así que podemos convertir la función de antes en un método, basta con cambiarla de private a public:

Código:
Public Function Primos(ByVal Numero As Long) As Boolean
   Dim X As Integer = 3
   Dim Final As Long
   Dim Result As Boolean = True
   Final = CLng(Numero / 2) + 1
   Select Case Numero Mod 2 <> 0
      Case True
         While X < Final And Result
            Result = Numero Mod X <> 0
            X = X + 1
         End While
      Case Else
         If Numero > 2 Then Result = False
   End Select
   Primos = Result
End Function


Y así en nuestro programa podremos escribir:

Código:
Sub Main()
   Dim Objeto As Ejemplo = New Ejemplo
   Dim Numero As Integer
   Numero = CInt(Console.ReadLine)
   Select Case Objeto.Primos(Numero)
      Case True
         Console.WriteLine("El {0} es primo", Numero)
      Case Else
         Console.WriteLine("El {0} no es primo", Numero)
   End Select
End Sub


Primos nos devolverá un valor cierto o falso.

Código:
Select Case Objeto.Primos(Numero)


Que se usará en el Select Case, para emitir un mensaje u otro.
Esto permite una legibilidad más clara del programa.
Por lo que podemos comprobar que un método puede ser escrito como función o como procedimiento.
Solo hay que utilizar la sintaxis adecuada en cada momento.

1.7 Conclusiones.
Se ha visto en el tema donde se escribe el código dentro de una clase.
Que la clase se compone de procedimientos y funciones, y que cuando estos son públicos, se convierten en métodos.

Que el punto de partida son los métodos que componen la clase.
Y como una clase tiene muchos métodos, en realidad hay muchos puntos de partida.

Pero en realidad, tendríamos que decir que el punto de partida es New y que se ejecuta cada vez que se crea una instancia de la clase, ya que después podríamos decir que la clase, el objeto, queda a la espera de los métodos que sean ejecutados.

Añadamos también que en el interior de los métodos, procedimientos, funciones, lo que tenemos escrito son las estructuras de programación que vimos al inicio de curso.

    Estructuras lineales.
    Estructuras alternativas, condicionales
    Estructuras repetitivas.


Los métodos, son programas pequeños.

1.8 Ejercicios propuestos.
Mediante el uso de una clase en la que se contemplen métodos adecuados para resolver los siguientes enunciados.

Todos los ejercicios han de resolverse incorporando los métodos adecuados a la misma clase.

1. Hallar el área y la longitud de una circunferencia, solicitando el radio de la misma R .
    Area = PI * R al cuadrado, Longitud = 2 * PI * R .

2. Hallar el área de un triángulo.
    Area = Base por Altura / 2.

3. Introducir un número A y visualizar si es o no primo.
4. Introducir una calificación (entre cero y diez), e imprimir su equivalente alfabético, según la siguiente tabla.
    De 3 -------> M.D.
    Desde 3 y menor que 5 -------> INS.
    Desde 5 y menor que 6 -------> SUF
    Desde 6 y menor que 7 -------> BIEN
    Desde 7 y menor que 9 -------> NOT.
    Desde 9 hasta 10 -------> SOB.

5. Introducir un valor en metros y visualizar su valor en millas terrestres, marinas , yardas y leguas.
    Milla terrestre = 1.609,34 m.
    Milla marina = 1.852,00 m.
    Yarda = 4.190 m.
    Legua = 0,9144 m.

6. Introducir una fecha en pantalla con el formato día, mes y año en tres variables numéricas, validar la fecha y emitir el mensaje de fecha incorrecta o correcta.
7. A partir de los siguientes valores de moneda extranjera, crear una función que a partir de un importe en pesetas devuelva su equivalente en la moneda que se indique.
    1 Franco francés 25,2400 25,3920
    1 Lira 0,0859 0,0864
    1 Libra esterlina 245,5560 247,0340
    1 Dólar americano 150,2280 151,1320
    1 Marco alemán 84,6480 85,1570
    1 Franco suizo 101,7550 102,3670
    1 Florín holandés 5,1170 75,5690
    1 Escudo portugués 0,8262 0,8312

8. Visualizar los números primos entre 10 y 200.

1.9 Solución a los ejercicios propuestos.
1. Hallar el área y la longitud de una circunferencia, solicitando el radio de la misma R .
    Area = PI * R al cuadrado, Longitud = 2 * PI * R .


El contenido de la clase es;
Código:
Public Class Ejercicios
   Public Sub New()
   End Sub
   Public Function AreaCirculo(ByVal Radio As Double) As Double
      AreaCirculo = Radio * Radio * 3.1415
   End Function
   Public Function LongitudCirculo(ByVal Radio As Double) As Double
      LongitudCirculo = Radio * 2 * 3.1415
   End Function
End Class


El programa principal:
Código:
Module Module1
   Sub Main()
      Dim Objeto As New Ejercicios
      Dim Radio As Double
      Console.WriteLine("Cálculo del área y longitud de un circulo")
      Radio = Console.ReadLine
      Console.WriteLine("Area de radio {0} es {1} ", Radio,
      Objeto.AreaCirculo(Radio))
      Console.WriteLine("Longitud radio {0} es {1} ", Radio,
      Objeto.LongitudCirculo(Radio))
      Console.ReadKey()
   End Sub
End Module


El resultado de la ejecución:


2. Hallar el área de un triángulo.
    Area = Base por Altura / 2.


El contenido de la clase es;
Código:
Public Class Ejercicios
   Public Sub New()
   End Sub
   Public Function AreaTriangulo(ByVal Base As Double, ByVal Altura As Double) As
      Double
      AreaTriangulo = Base * Altura / 2
   End Function
End Class


El programa principal:
Código:
Sub Main()
   Dim Base As Double
   Dim Altura As Double
   Dim Objeto as New Ejercicios
   Console.WriteLine("Cálculo del área de un triángulo")
   Console.WriteLine("Introducir Base")
   Base = Console.ReadLine
   Console.WriteLine("Introducir Altura")
   Altura = Console.ReadLine
   Console.WriteLine("Area triángulo de base {0} y altura {1} es {2} ", Base, Altura,
   Objeto.AreaTriangulo(Base, Altura))
   Console.ReadKey()
End Sub


El resultado de la ejecución:


3. Introducir un número A y visualizar si es o no primo.

El contenido de la clase es;
Código:
Public Class Ejercicios
   Public Sub New()
   End Sub
   Public Function Primos(ByVal Numero As Long) As Boolean
      Dim X As Integer = 3
      Dim Final As Long
      Dim Result As Boolean = True
      Select Case Numero Mod 2 <> 0
         Case True
            Final = CLng(Numero / 2) + 1
            While X < Final And Result
               Result = Numero Mod X <> 0
               X = X + 1
            End While
         Case Else
            If Numero > 2 Then Result = False
      End Select
      Primos = Result
   End Function
End Class


El programa principal:
Código:
Sub Main()
   Dim Numero As Integer
   Dim Objeto as New Ejercicios
   Console.WriteLine("Números primos")
   Console.WriteLine("Introducir número")
   Numero = Console.ReadLine
   Select Case Objeto.Primos(Numero)
      Case True
         Console.WriteLine("El número {0} es primo ", Numero)
      Case Else
         Console.WriteLine("El número {0} no es primo ", Numero)
   End Select
   Console.ReadKey()
End Sub


El resultado de la ejecución:


4. Introducir una calificación (entre cero y diez), e imprimir su equivalente alfabético, según la siguiente tabla.
    De 3 -------> M.D.
    Desde 3 y menor que 5 -------> INS.
    Desde 5 y menor que 6 -------> SUF
    Desde 6 y menor que 7 -------> BIEN
    Desde 7 y menor que 9 -------> NOT.
    Desde 9 hasta 10 -------> SOB.


El contenido de la clase es;
Código:
Public Class Ejercicios
   Public Sub New()
   End Sub
   Public Function Calificacion(ByVal Nota As Single) As String
      Dim Texto As String = ""
      Select Case Nota
         Case 0 To 2.99
            Texto = "M.D."
         Case 3 To 4.99
            Texto = "Ins"
         Case 5 To 5.99
            Texto = "Suf"
         Case 6 To 6.99
            Texto = "Bien"
         Case 7 To 8.99
            Texto = "Not"
         Case 9 To 10.0
            Texto = "Sob"
         Case Else
            Texto = "Calificación erronea"
      End Select
      Calificacion = Texto
   End Function
End Class


El programa principal:
Código:
Sub Main()
   Dim Objeto as new Ejercicios
   Dim Nota As Single
   Console.WriteLine("Introducir nota ")
   Nota = Console.ReadLine
   Console.WriteLine(Objeto.Calificacion(Nota))
   Console.ReadKey()
End Sub


El resultado de la ejecución:


5. Introducir un valor en metros y visualizar su valor en millas terrestres, marinas , yardas y leguas.
    Milla terrestre = 1.609,34 m.
    Milla marina = 1.852,00 m.
    Yarda = 4.190 m.
    Legua = 0,9144 m.


El contenido de la clase es;
Código:
Public Class Ejercicios
   Public Sub New()
   End Sub
   Public Function Conversion(ByVal M As Single, ByVal T As String) As Single
      Dim C As Single
      Select Case T
         Case "T"
            C = CSng(M / 1609.34)
         Case "M"
            C = CSng(M / 1852)
         Case "L"
            C = CSng(M / 4190)
         Case "Y"
            C = CSng(M / 0.9144)
      End Select
      Conversion = C
   End Function
End Class


El programa principal:
Código:
Sub Main()
   Dim Objeto as new Ejercicios
   Dim Metros As Single
   Dim Tipo As String
   Console.WriteLine("Convertir distancia en metros ")
   Console.WriteLine("Introducir distancia en metros")
   Metros = Console.ReadLine
   Console.WriteLine("Introducir M/T/L/Y ")
   Tipo = Console.ReadLine
   Console.WriteLine(Objeto.Conversion(Metros, Tipo))
   Console.ReadKey()
End Sub


El resultado de la ejecución:


6. Introducir una fecha en pantalla con el formato día, mes y año en tres variables numéricas, validar la fecha y emitir el mensaje de fecha incorrecta o correcta.

El contenido de la clase es;
Código:
Public Class Ejercicios
   Public Sub New()
   End Sub
   Function Fecha(ByVal D As Integer, ByVal M As Integer, ByVal A As Integer) As Boolean
      Dim Fec As Boolean
      Select Case M
         Case 1, 3, 5, 7, 8, 10, 12
            Fec = D > 0 And D < 32
         Case 4, 6, 9, 11
            Fec = D > 0 And D < 31
         Case 2
            Select Case A Mod 100 = 0
               Case True
                  Fec = (D > 0 And D < 29) Or (D = 29 And A Mod 400 = 0)
               Case Else
                  Fec = (D > 0 And D < 29) Or (D = 29 And A Mod 4 = 0)
            End Select
      End Select
      Fecha = Fec
   End Function
End Class


El programa principal:
Código:
Sub Main()
   Dim Objeto as New Ejercicios
   Dim Dia As Integer
   Dim Mes As Integer
   Dim Year As Integer
   Console.WriteLine("Comprobar fecha ")
   Console.WriteLine("Introducir dia")
   Dia = Console.ReadLine
   Console.WriteLine("Introducir mes")
   Mes = Console.ReadLine
   Console.WriteLine("Introducir año")
   Year = Console.ReadLine
   Select Case Objeto.Fecha(Dia, Mes, Year)
      Case True
         Console.WriteLine("La fecha es correcta")
      Case Else
         Console.WriteLine("La fecha no es correcta")
   End Select
   Console.ReadKey()
End Sub


El resultado de la ejecución:


7. A partir de los siguientes valores de moneda extranjera, crear una función que a partir de un importe en pesetas devuelva su equivalente en la moneda que se indique.
    1 Franco francés 25,2400 25,3920
    1 Lira 0,0859 0,0864
    1 Libra esterlina 245,5560 247,0340
    1 Dólar americano 150,2280 151,1320
    1 Marco alemán 84,6480 85,1570
    1 Franco suizo 101,7550 102,3670
    1 Florín holandés 5,1170 75,5690
    1 Escudo portugués 0,8262 0,8312


El contenido de la clase es:
Código:
Public Class Ejercicios
   Public Sub New()
   End Sub
   Public Function ConversionMoneda(ByVal Pesetas As Single, ByVal Moneda As String) As Single
      Dim Result As Single
      Select Case Moneda
         Case "F"
            Result = CSng(Pesetas / 25.24)
         Case "L"
            Result = CSng(Pesetas / 0.0859)
         Case "I"
            Result = CSng(Pesetas / 245.556)
         Case "D"
            Result = CSng(Pesetas / 150.228)
         Case "M"
            Result = CSng(Pesetas / 84.648)
         Case "S"
            Result = CSng(Pesetas / 101.755)
         Case "H"
            Result = CSng(Pesetas / 5.117)
         Case "P"
            Result = CSng(Pesetas / 0.826)
      End Select
      ConversionMoneda = Result
   End Function
End Class


El programa principal:
Código:
Sub Main()
   Dim Objeto as New Ejercicios
   Dim Pesetas As Integer
   Dim Moneda As Char
   Console.WriteLine("Convertir moneda ")
   Console.WriteLine("Introducir pesetas")
   Pesetas = Console.ReadLine
   Console.WriteLine("Introducir moneda F/L/I/D/M/S/H/P")
   Moneda = Console.ReadLine
   Console.WriteLine("El importe de {0} pesetas en la moneda {1} es {2} ",
   Pesetas, Moneda, Objeto.ConversionMoneda(Pesetas, Moneda))
   Console.ReadKey()
End Sub


El resultado de la ejecución:

Si observamos al escribir Objeto. En el entorno de VB, aparece lo siguiente:

Que son todos los métodos que hemos escrito, en el formato de función.
Si repasamos el tema 12, también podemos ver que no hay diferencia entre sus soluciones y las de éste, excepto lo de poner las funciones como públicas en la clase, en lugar de private.

8. Visualizar los números primos entre 10 y 200.

El contenido de la clase es:
Código:
Public Class Ejercicios
   Public Sub New()
   End Sub
   Public Sub NumerosPrimos(ByVal Desde As Integer, ByVal Hasta As Integer)
      Dim x As Integer = Desde
      While x <= Hasta
         Select Case Primos(x)
            Case True
               Console.WriteLine("El número {0} es primo", x)
         End Select
         x = x + 1
      End While
   End Sub
End Class


El programa principal
Código:
Sub Main()
   Dim Objeto as New Ejercicios
   Objeto.NumerosPrimos(10,200)
   Console.ReadKey()
End Sub


En los ejercicios anteriores se había utilizado funciones para cada uno de los métodos, en éste ejercicio la solución pasa por la utilización de un procedimiento.

Código:
Public Sub NumerosPrimos(ByVal Desde As Integer, ByVal Hasta As Integer)



Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Necesito ayuda en este codigo en lenguaje c

EmmanuelTR9 C, C#, Visual C++ 0 Lunes 08 Oct 2018 18:38 Ver último mensaje
El foro no contiene ningún mensaje nuevo

ayuda ayuda para este codigo que me sale error ...

DiegoBV C, C#, Visual C++ 0 Jueves 02 Ago 2018 23:52 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Dudas al instanciar clases heredadas

MMCA Java 0 Viernes 26 Ene 2018 21:34 Ver último mensaje
El foro no contiene ningún mensaje nuevo

SIMPLIFICANDO CODIGO

JESYMCA JavaScript 0 Domingo 21 Ene 2018 00:00 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Duda codigo en Python - Red Neuronal con numpy ...

Daniel_wUNTG Python 1 Sábado 21 Oct 2017 22:27 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,