Está en la página 1de 11

Programacion Orientada a Objetos I

Elaborado por: Equipo de Docentes




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.

30% PROM (LC,3,1) + 10% (NA1) + 20% (LP1) + 40% (LF1)

- 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

objEmpleado.nombres = getNombres()
objEmpleado.categoria = getCategoria()
objEmpleado.tardanza = getTardanza()
objEmpleado.atencion = getAtencion()

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.