Académique Documents
Professionnel Documents
Culture Documents
Guía Práctica Nº 01
Sistemas Empresariales
Sintaxis de la Clase:
Class
Public Class NombreClase
End Function
End Sub
End Class
Dónde:
- NombreClase: Aquí se especifica el nombre de la clase, debe tener en cuenta que no debe
tener espacios en blanco ni usar caracteres especiales. Y finalmente un atributo, una función
o procedimiento de clase no debe tener el mismo nombre de la clase.
- Visibilidad: La visibilidad dentro de la clase depende del alcance que usted como
programador desea darle a un atributo, función o procedimiento estas pueden ser: Públicas
(Public), Privadas (Private) o Protegidas (Protected).
- _Atributo: Representa a un elemento de la clase normalmente los atributos de una clase son
privadas, pero como se mencionó antes esto dependerá del programador. Hay que tener en
cuenta que muchas veces los atributos guardan relación con los valores ingresados por el
usuario.
- Campo: Un campo dentro de la clase representa las propiedades de un atributo. Este definirá
las clausulas GET y SET de los campos. Como mencionamos anteriormente los atributos
normalmente son privados por tanto las llamadas desde el exterior a dicho atributo se debe
realizar desde una propiedad con asignación GET, eso quiere decir que GET devuelve el
valor contenido en el atributo y SET asigna un valor al mismo.
- Get: La implementación de GET hace que un atributo sea visible desde el exterior de la clase
y así misma.
- Set: La implementación de SET hace que el atributo de la clase pueda tener una asignación
de valor.
- Function Nombre_Funcion: Una función puede ser implementada dentro de una clase y
puede usar los atributos declarados en la misma, para una tarea específica hay que tener en
cuenta que de usted dependerá si esta función sea pública o privada.
Public (Público)
Puede obtener acceso al tipo o miembro cualquier otro código del mismo ensamblado o de
otro ensamblado que haga referencia a éste.
Private (Privado)
Solamente puede obtener acceso al tipo o miembro el código de la misma clase.
Protected (Protegido)
Solamente puede obtener acceso al tipo o miembro el código de la misma clase o de una
clase derivada.
- Aquí debemos definir los Atributos (Campos), Métodos y las Propiedades de los campos.
- Para poder ver el código debe presionar doble clic sobre el diagrama mostrado y se mostrará
lo siguiente:
End Get
Set(value As String)
End Set
End Property
End Get
Set(value As String)
End Set
End Property
End Get
Set(value As Integer)
End Set
End Property
End Get
Set(value As Integer)
End Set
End Property
End Class
Definición de un Constructor
Cuando no se implementa el constructor los valores son inicializados dependiendo del tipo de datos
en cero o null y serán las instrucciones SET quienes definan un valor inicial a los atributos de clase.
Sintaxis:
Método Constructor
Public Sub New
End Sub
Hay que tener en cuenta que los atributos _tardanza y _atención ya se encuentren declaradas
dentro de la clase y serán del mismo tipo que los valores enviados.
Sintaxis:
End Sub
Sintaxis:
Get
End Get
Set(Value As TipoDatos)
End Set
End Sub
Sintaxis:
Get
End Get
End Sub
Como verá en la implementación que ofrece NET ya no se publica la instrucción SET por lo tanto sólo
se puede devolver el valor y no modificarlo, se estará preguntando entonces de que me sirve, sólo
debe considerar este tipo de acción cuando un valor es constante. Veamos en el caso anterior, si el
número de llamadas de atención tiene para todos el valor cero (0) y no otro entonces la
implementación dentro de la clase sería de la siguiente manera:
Dentro de la Clase:
Sub New()
_atencion = 0
End Sub
Sintaxis:
Crear objeto
Dim NombreObjeto As New NombreClase
La cantidad de objetos creados desde una clase no tiene límite en ningún lenguaje de programación
orientado a objetos, sólo hay que tener en cuenta que los objetos no tenga el mismo nombre.
Veamos el ejemplo de crear un objeto de la clase Empleado:
Ahora ya podremos tener acceso a todos los elementos públicos de la clase Empleado por ejemplo:
- Invocar a sus métodos implica que la clase debe devolver un valor hacia la variable que lo
invoca.
Por cada minuto de tardanza se le hará un descuento de US$ 5.0 y por cada llamada de atención US$
10.0, en caso la cantidad de minutos de tardanza y número de llamadas de atención sea cero
entonces recibirá un incentivo del 15% sobre el monto asignado según su categoría.
GUI Propuesto:
Solución:
Get
Return _categoria
End Get
Set(value As String)
_categoria = value
End Set
End Property
End Class
Control Nombre
TextBox1 txtNombres
ComboBox1 cboCategoria
TextBox2 txtTardanza
TextBox3 txtAtencion
Button1 btnRegistrar
Button2 btnCancelar
ListView1 lvEmpleados
Label7 lblTotal
Sub llenarCategoria()
cboCategoria.Items.Add("A")
cboCategoria.Items.Add("B")
cboCategoria.Items.Add("C")
cboCategoria.Items.Add("D")
End Sub
Sub Limpiar()
txtNombres.Clear()
cboCategoria.SelectedIndex = -1
txtTardanza.Clear()
txtAtencion.Clear()
txtNombres.Focus()
End Sub
Sub configurarLista()
lvEmpleados.View = View.Details
lvEmpleados.GridLines = True
lvEmpleados.Columns.Add("Empleado", 120)
lvEmpleados.Columns.Add("Cat", 80)
lvEmpleados.Columns.Add("Min. Tard.", 80)
lvEmpleados.Columns.Add("Num. Aten.", 80)
lvEmpleados.Columns.Add("Pago $", 120)
End Sub
Function getNombres()
Return txtNombres.Text
End Function
Function getCategoria()
Return cboCategoria.Text
End Function
Function getTardanza()
Return Integer.Parse(txtTardanza.Text)
End Function
Function getAtencion()
Return Integer.Parse(txtAtencion.Text)
End Function
lvEmpleados.Items.Add(fila)
lblTotal.Text = lvEmpleados.Items.Count
Limpiar()
End Sub
End Class
Implemente una aplicación que permita controlar el registro de compras de boletos aéreos de una
Agencia de Viajes en Lima. El empleado de registro debe considerar la fecha de registro de la compra,
el nombre del cliente, el destino de los boletos comprados y la cantidad de las mismas. Al final deberá
mostrar el subtotal a pagar, el valor del IGV (18% sobre el subtotal), el neto a pagar y el monto de la
bolsa de viaje que para la agencia es un valor establecido como constante de US$ 500.0 y que por
adquisición de boletos a otros países se incrementara en US$ 50.0
GUI Propuesto:
Tener en cuenta:
- Los datos del registro son: El número de registro, el destino, el costo del boleto, la cantidad y
el subtotal.
Solución:
Sub New()
_bolsa = 500
End Sub
End Class
Control Nombre
TextBox1 txtCliente
ComboBox1 cboDestino
TextBox2 txtCantidad
Button1 btnRegistrar
Button2 btnCancelar
Button3 btnSalir
ListView1 lvBoletos
Label6 lblFecha
Label11 lblSubTotal
Label12 lblIGV
Label13 lblNeto
Label14 lblBolsa
e.Handled = True
End If
End Sub
'9. Código del botón Cancelar que permite limpiar los controles y
reinicializar las variables globales
Private Sub btnCancelar_Click(…) Handles btnCancelar.Click
subTotal = 0
nRegistro = 0
lblSubTotal.Text = ""
lblIGV.Text = ""
lblNeto.Text = ""
lblBolsa.Text = ""
txtCliente.ReadOnly = False
txtCliente.Clear()
cboDestino.SelectedIndex = -1
txtCantidad.Clear()
lvBoletos.Items.Clear()
txtCliente.Focus()
End Sub
End Class
Caso Propuesto
Una empresa necesita tener un control de los pagos a sus vendedores como parte de los procesos de
negocio de su Sistema de Ventas, para lo cual cuenta con las siguientes Reglas de Negocio:
El costo por hora trabajada se determina según la categoría del trabajador que se basa en la
siguiente tabla:
GUI Propuesto:
Consideraciones:
Asigne como valor fijo 30 a las horas de trabajo cuando el usuario no lo registre, defínalo en
el método constructor.
Sobrecargar el número de horas de trabajo usando sobrecarga de métodos.
Del caso anterior implemente el registro de pago de vendedores usando el control ListView.