25 - Constructor de la clase


En Visual Basic .net podemos definir un método que se ejecute inicialmente y en forma automática. Este método se lo llama constructor de la clase.

El constructor tiene las siguientes características:

Problema 1:

Se desea guardar los sueldos de 5 operarios en un vector. Realizar la creación y carga del vector en el constructor.

Programa:

Module Module1
    Public Class PruebaConstructor

        Private sueldos(4) As Integer

        Public Sub New()
            Dim f As Integer
            For f = 0 To sueldos.GetUpperBound(0)
                Console.Write("Ingrese el sueldo:")
                sueldos(f) = Console.ReadLine()
            Next
        End Sub

        Public Sub Imprimir()
            Dim f As Integer
            For f = 0 To sueldos.GetUpperBound(0)
                Console.WriteLine(sueldos(f))
            Next
            Console.ReadKey()
        End Sub
    End Class


    Sub Main()
        Dim op As New PruebaConstructor()
        op.Imprimir()
    End Sub

End Module

Como podemos ver es el mismo problema que resolvimos cuando vimos vectores. La diferencia es que hemos sustituido el método Cargar con el constructor:

        Public Sub New()
            Dim f As Integer
            For f = 0 To sueldos.GetUpperBound(0)
                Console.Write("Ingrese el sueldo:")
                sueldos(f) = Console.ReadLine()
            Next
        End Sub

Debe llamarse obligatoriamente New, no hay forma que no se ejecute el constructor.

La ventaja de plantear un constructor en lugar de definir un método con cualquier nombre es que se llamará en forma automática cuando se crea un objeto de esta clase:

        Dim op As New PruebaConstructor()

Cuando se crea el objeto op se llama al método New en forma automática por tener definido un constructor la clase.

Finalmente llamamos al método imprimir:

        op.Imprimir()

Problema 2:

Plantear una clase llamada Alumno y definir como atributos su nombre y su edad. En el constructor realizar la carga de datos. Definir otros dos métodos para imprimir los datos ingresados y un mensaje si es mayor o no de edad (edad >=18)

Programa:

Module Module1

    Public Class Alumno

        Private nombre As String
        Private edad As Integer

        Public Sub New()
            Console.Write("Ingrese nombre:")
            nombre = Console.ReadLine()
            Console.Write("Ingrese edad:")
            edad = Console.ReadLine()
        End Sub

        Public Sub Imprimir()
            Console.WriteLine("Nombre:" & nombre)
            Console.WriteLine("Edad:" & edad)
        End Sub

        Public Sub EsMayorEdad()
            If edad >= 18 Then
                Console.Write(nombre & " es mayor de edad.")
            Else
                Console.Write(nombre & " no es mayor de edad.")
            End If
        End Sub
    End Class


    Sub Main()
        Dim alumno1 = New Alumno()
        alumno1.Imprimir()
        alumno1.EsMayorEdad()
        Console.ReadKey()
    End Sub

End Module

Declaramos la clase Alumno, sus dos atributos y definimos el constructor:

    Public Class Alumno

        Private nombre As String
        Private edad As Integer

        Public Sub New()
            Console.Write("Ingrese nombre:")
            nombre = Console.ReadLine()
            Console.Write("Ingrese edad:")
            edad = Console.ReadLine()
        End Sub

En la Main el constructor se llama en forma automática cuando creamos un objeto de la clase Alumno:

    Sub Main()
        Dim alumno1 = New Alumno()

Los otros dos métodos deben llamarse por su nombre y en el orden que necesitemos:

        alumno1.Imprimir()
        alumno1.EsMayorEdad()

Problemas propuestos

  1. Confeccionar una clase que represente un empleado. Definir como atributos su nombre y su sueldo. En el constructor cargar los atributos y luego en otro método imprimir sus datos y por último uno que imprima un mensaje si debe pagar impuestos (si el sueldo supera a 3000)
  2. Implementar la clase operaciones. Se deben cargar dos valores enteros en el constructor, calcular su suma, resta, multiplicación y división, cada una en un método, imprimir dichos resultados.
Solución
Module Module1

    Public Class EmpleadoFabrica

        Private nombre As String
        Private sueldo As Single

        Public Sub New()
            Console.Write("Ingrese el nombre del empleado:")
            nombre = Console.ReadLine()
            Console.Write("Ingrese su sueldo:")
            sueldo = Console.ReadLine()
        End Sub

        Public Sub PagaImpuestos()
            If sueldo > 3000 Then
                Console.Write("Debe abonar impuestos")
            Else
                Console.Write("No paga impuestos")
            End If
            Console.ReadKey()
        End Sub

    End Class


    Sub Main()
        Dim empleado1 As New EmpleadoFabrica()
        empleado1.PagaImpuestos()
    End Sub

End Module





Module Module1
    Public Class OperacionesCalculo

        Private valor1, valor2 As Integer

        Public Sub New()
            Console.Write("Ingrese primer valor:")
            valor1 = Console.ReadLine()
            Console.Write("Ingrese segundo valor:")
            valor2 = Console.ReadLine()
        End Sub

        Public Sub Sumar()
            Dim suma As Integer
            suma = valor1 + valor2
            Console.WriteLine("La suma es:" & suma)
        End Sub

        Public Sub Restar()
            Dim resta As Integer
            resta = valor1 - valor2
            Console.WriteLine("La resta es:" & resta)
        End Sub

        Public Sub Multiplicar()
            Dim multiplicacion As Integer
            multiplicacion = valor1 * valor2
            Console.WriteLine("La multiplicación es:" & multiplicacion)
        End Sub

        Public Sub Dividir()
            Dim division As Integer
            division = valor1 / valor2
            Console.WriteLine("La división es:" & division)
        End Sub

    End Class


    Sub Main()
        Dim opera As New OperacionesCalculo()
        opera.Sumar()
        opera.Restar()
        opera.Multiplicar()
        opera.Dividir()
        Console.ReadKey()
    End Sub

End Module

Retornar