INSTITUTO SUPERIOR TECNOLOGICO PRIVADO CIBERTEC DIRECCION ACADEMICA CARRERAS PROFESIONALES
Laboratorio de Programacin Orientada A Objetos I
Prctica N 01 Conceptos bsicos de programacin orientada a objetos
Logros del Taller:
- Reconoce los conceptos bsicos de la Programacin Orientada a Objetos - Realiza ejercicios prcticos que permitan poner en prctica los conceptos que aprenderemos en esta Unidad. - Propone una solucin alterna a la solucin presentada por el docente.
CASO 1: Promedio de Notas (Clase-Objeto)
Implemente una aplicacin que permita determinar el promedio y la condicion de un alumno en un determinado curso.
GUI Propuesto:
Tener en cuenta: Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes
- Al iniciar la aplicacin debera mostrar los cursos precargados en el cuadro combinado. - Todos los cursos tienen la misma formula para el calculo de su promedio.
- La lista de los cursos es: Programacin Orientada a Objetos I Lenguaje de Programacin I Analisis y Diseo de Sistemas I
CASO 2: Venta de Productos (Clase-Objeto)
Implemente una aplicacin que permita determinar los montos de una determinada venta de productos informaticos, al final debe determinar el monto subtotal, descuento del 7.5% y el monto neto a pagar por el usuario.
GUI Propuesto:
Tener en cuenta:
- Al iniciar la aplicacin debera mostrar los productos precargados en el cuadro combinado. - La lista de los productos y su precio son las siguientes: Impresora Inyeccion 150.00 Impresora Laser 320.00 Mouse Optico 60.00 Teclado Multimedia 50.00
Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes CASO 3: Registro de Pago de trabajadores (Clase-Objeto)
Implemente una aplicacin que permita controlar el registro de pagos a los empleados de una empresa. Dicho empleado cuenta con los siguientes atributos: nombres del trabajador, categora (A-B-C y D), minutos de tardanza y un numero de llamadas de atencin. Considere que por cada categora se establece un monto de sueldo como se muestra a continuacin:
Categora Monto $ A $ 2500.00 B $ 1500.00 C $ 1000.00 D $ 900.00
Y que por cada minuto de tardanza se le har un descuento de $ 5.00 y por cada llamada de atencin $ 10.00, en caso la cantidad de minutos de tardanza y numero de llamadas de atencin sea cero entonces recibir un incentivo del 15% sobre el monto asignado segn su categora.
GUI Propuesta:
Solucin:
1. Crear la clase Empleado y colocar el siguiente cdigo:
Public Class Empleado Private _nombres As String Private _categoria As String Private _tardanza As Integer Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes Private _atencion As Integer
Public Property nombres As String Get Return _nombres End Get Set(value As String) _nombres = value End Set End Property Public Property categoria As String Get Return _categoria End Get Set(value As String) _categoria = value End Set End Property Public Property tardanza As Integer Get Return _tardanza End Get Set(value As Integer) _tardanza = value End Set End Property Public Property atencion As Integer Get Return _atencion End Get Set(value As Integer) _atencion = value End Set End Property
Public Function determinaPago() Select Case _categoria Case "A" : Return 2500 Case "B" : Return 1500 Case "C" : Return 1000 Case Else : Return 900 End Select End Function
Public Function calculaPago() If _tardanza > 0 Or _atencion > 0 Then Return determinaPago() - ((_tardanza * 5) + (_atencion * 10)) Else Return determinaPago() + determinaPago() * 0.15 End If End Function End Class
2. Colocar el siguiente cdigo en el formulario:
Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes Public Class frmPago '1. Procedimiento que llena el cuadro combinado de Categoria Sub llenaCategoria() cboCategoria.Items.Add("A") cboCategoria.Items.Add("B") cboCategoria.Items.Add("C") cboCategoria.Items.Add("D") End Sub
'2. Procedimiento que configura el ListView Sub configuraLista() 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
'3. Funcion que captura valores del Formulario 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
'4. Codigo dentro del load del formulario Private Sub frmPago_Load() Handles MyBase.Load Call llenaCategoria() Call configuraLista() End Sub
'5. Codigo del boton Registrar Private Sub btnRegistrar_Click() Handles btnRegistrar.Click Dim objEmpleado As New Empleado
Dim fila As New ListViewItem(objEmpleado.nombres) fila.SubItems.Add(objEmpleado.categoria) fila.SubItems.Add(objEmpleado.tardanza) fila.SubItems.Add(objEmpleado.atencion) fila.SubItems.Add(objEmpleado.calculaPago) lvEmpleados.Items.Add(fila)
Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes lblTotal.Text = lvEmpleados.Items.Count End Sub End Class
CASO 4: Registro de Boletos Aereos (Metodo Constructor)
Implemente una aplicacin que permita controlar el registro de compras de boletos areos de una Agencia de Viajes en Lima. El empleado de registro debe considerar la fecha de registro de la compra, los nombres del cliente, el destino de los boletos comprados y la cantidad de las mismas. Al final deber mostrar el subtotal a pagar, el valor de IVA al 18% sobre el subtotal, el neto a pagar y el monto de la bolsa de viaje que para la agencia es una valor establecido como constante de $ 5000.00 y que por adquisicin de boletos a otros pases se incrementara en $ 500.00.
GUI Propuesto:
Tener en cuenta:
- La fecha de registro debe ser capturada desde el sistema. - Los destinos y los precios de cada uno de ellos lo estipula la Agencia de Viajes en la siguiente tabla:
Destino Costo por Boleto Argentina 1500.00 Colombia 800.00 Venezuela 1000.00 Costa Rica 2500.00 Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes
- Los datos del registro son: El numero de registro, el destino, el costo del boleto, la cantidad y el subtotal.
Solucin:
1. Crear la clase boleto y colocar el siguiente cdigo:
Public Class Boleto Private _cliente As String Private _destino As String Private _cantidad As Integer Private _bolsa As Double
Sub New() _bolsa = 5000 End Sub
Public Property cliente As String Get Return _cliente End Get Set(value As String) _cliente = value End Set End Property
Public Property destino As String Get Return _destino End Get Set(value As String) _destino = value End Set End Property
Public Property cantidad As Integer Get Return _cantidad End Get Set(value As Integer) _cantidad = value End Set End Property
Public ReadOnly Property bolsa As Double Get Return _bolsa End Get End Property
Public Function asignaCosto() As Double Select Case _destino Case "Argentina" : Return 1500 Case "Colombia" : Return 800 Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes Case "Venezuela" : Return 1000 Case "Costa Rica" : Return 2500 Case Else : Return 0 End Select End Function
Public Function calculaSubtotal() As Double Return _cantidad * asignaCosto() End Function End Class
2. Colocar el siguiente cdigo dentro del formulario:
Public Class frmAgencia '1. Declaracion de variables Globales Dim aSub@ = 0, N% = 0
'2. Procedimiento que limpia los controles del formulario Sub limpiaControles() cboDestino.SelectedIndex = -1 txtCantidad.Text = Nothing txtCliente.Focus() End Sub
'3. Procedimiento que configura el control ListView Sub configuraLista() lvBoletos.View = View.Details lvBoletos.GridLines = True lvBoletos.Columns.Add("N", 50) lvBoletos.Columns.Add("DESTINO", 200) lvBoletos.Columns.Add("COSTO", 100) lvBoletos.Columns.Add("CANTIDAD", 100) lvBoletos.Columns.Add("SUBTOTAL", 100) End Sub
'4. Procedimiento que llena el combo de Paises destinos Sub llenaDestinos() cboDestino.Items.Add("Argentina") cboDestino.Items.Add("Colombia") cboDestino.Items.Add("Venezuela") cboDestino.Items.Add("Costa Rica") End Sub
'5. Funciones de captura de valores ingresados en el formulario Function getCliente() As String Return txtCliente.Text End Function Function getDestino() As String Return cboDestino.Text End Function Function getCantidad() As Integer Return CInt(txtCantidad.Text) End Function
'6. Codigo dentro del load del formulario Private Sub frmAgencia_Load() Handles MyBase.Load Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes Call llenaDestinos() Call configuraLista() lblFecha.Text = Date.Today End Sub
'7. Codigo de bloqueo de letras Private Sub txtCantidad_KeyPress() Handles txtCantidad.KeyPress If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False ElseIf Char.IsSymbol(e.KeyChar) Then e.Handled = False ElseIf Char.IsSeparator(e.KeyChar) Then e.Handled = False ElseIf Char.IsWhiteSpace(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub
'8. Codigo del boton registrar Private Sub btnRegistrar_Click() Handles btnRegistrar.Click On Error GoTo imprevisto Dim objBoleto As New Boleto N += 1 objBoleto.cliente = getCliente() objBoleto.destino = getDestino() objBoleto.cantidad = getCantidad() aSub += objBoleto.calculaSubtotal Call imprimir(objBoleto) txtCliente.ReadOnly = True Exit Sub imprevisto: MessageBox.Show("Error en los datos...!", "Sistema", _ MessageBoxButtons.OK, MessageBoxIcon.Error) End Sub
'9. Procedimiento que permite imprimir dentro del control ListView Sub imprimir(ByVal x As Boleto) Dim fila As New ListViewItem(N) fila.SubItems.Add(x.destino) fila.SubItems.Add(x.asignaCosto) fila.SubItems.Add(x.cantidad) fila.SubItems.Add(x.calculaSubtotal) lvBoletos.Items.Add(fila)
lblSubtotal.Text = aSub.ToString("0.00") lblIVA.Text=(0.18*CInt(lblSubtotal.Text)).ToString("0.00") lblNeto.Text=(CInt(lblSubtotal.Text) Int(lblIVA.Text)).ToString("0.00") lblBolsa.Text = (x.bolsa + (500 * N)).ToString("0.00") limpiaControles() End Sub
Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes '10. Procedimiento que permite limpiar los controles y 'reinicializar las variables globales. Private Sub btnAnular_Click() Handles btnAnular.Click txtCliente.Text = Nothing limpiaControles() lvBoletos.Items.Clear() txtCliente.ReadOnly = False aSub = 0 N = 0 End Sub End Class
Casos Propuestos
La Empresa TOPTEN S.A. necesita tener un control de los pagos de sus vendedores como parte de los procesos de negocio de sus Sistema de Ventas, para lo cual cuenta con las siguientes Reglas de Negocio.
- El costo por hora trabajada se determina segn la categora del trabajador que se basa en la siguiente tabla:
Categoria Costo por Hora A S/. 40 B S/. 30 C S/. 20 D S/. 10
- Se le aplicara el 10% de descuento a su Salario Bruto. - Validar espacios en blanco y solo numeros en sus respectivas cajas. - Implementar la siguiente clase:
GUI Propuesto:
Programacion Orientada a Objetos I
Elaborado por: Equipo de Docentes
Asignar un valor fijo a las horas de trabajo cuando el usuario no registre las horas de trabajo con un valor de 30 horas use mtodo constructor. Sobrecargar el numero de horas de trabajo usando sobrecarga de mtodos.
Del caso anterior implemente el registro de pago de vendedores usando el control ListView.