FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
POO en Visual Basic
Todo .NET Framework está basado en clases (u objetos). A diferencia de las versiones anteriores de
Visual Basic, la versión .NET de este lenguaje basa su funcionamiento casi exclusivamente en las clases
contenidas en .NET Framework, además casi sin ningún tipo de limitación.
La POO es una evolución de la programación por procedimientos llamada también estructurada. Se
basaba en funciones y procedimientos y el código que controlaba el flujo de las llamadas a estos.
Los tres pilares de la Programación Orientada a Objetos
Todos los lenguajes basados en objetos, deben cumplir estos tres requisitos:
•
•
•
•
Abstracción
Encapsulamiento
Herencia
Polimorfismo
Herencia
Esta es la característica más importante de la POO. Según la propia documentación de Visual Studio
.NET:
La herencia permite crear nuevas clases a partir de clases existentes. La herencia puede simplificar el
diseño de la aplicación proporcionando una estructura de relaciones entre las distintas clases. También
admite la reutilización de código porque sólo se debe codificar el comportamiento de clases
nuevas o distintas .
La herencia es la capacidad de una clase de obtener la interfaz y comportamiento de una clase
existente.
Resumiendo: Gracias a la herencia podemos ampliar cualquier clase existente, además de
aprovecharnos de todo lo que esa clase haga.
Encapsulamiento
Según Visual Studio.NET: La encapsulación es la capacidad de contener y controlar el acceso a un grupo
de elementos asociados. Las clases proporcionan una de las formas más comunes de encapsular
elementos.
Cuando usamos las clases, éstas tienen una serie de características (los datos que manipula) así como
una serie de comportamientos (las acciones a realizar con esos datos). La encapsulación es esa
capacidad de la clase de ocultarnos sus interioridades para que sólo veamos lo que tenemos que ver,
sin tener que preocuparnos de cómo está codificada para que haga lo que hace; simplemente nos debe
importar que lo hace.
Resumiendo: Establece la separación entre la interfaz del objeto y su implementación.
Polimorfismo
Según la documentación de Visual Studio.NET: El polimorfismo se refiere a la posibilidad de definir
múltiples clases con funcionalidad diferente, pero con métodos o propiedades denominados de forma
idéntica, que pueden utilizarse de manera intercambiable mediante código cliente en tiempo de
ejecución.
Dicho de otra manera, puede tener múltiples clases que se pueden utilizar de forma intercambiable, si
bien cada clase implementa las mismas propiedades o los mismos métodos de maneras diferentes. El
polimorfismo es importante en la programación orientada a objetos puesto que permite usar elementos
CURSO: Lenguaje de Programación Visual
-1-
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
que tienen el mismo nombre, independientemente del tipo de objeto que se esté utilizando en ese
momento.
Resumiendo: Determina que el mismo nombre de método realizará diferentes acciones según el objeto
sobre el que se ha aplicado.
¿Qué es una clase?
Los programas de Visual Basic se generan con objetos como formularios y controles. Los objetos
también se pueden utilizar para representar cosas reales como personas, equipos informáticos o incluso
algo más abstracto, como una cuenta bancaria.
Una clase es simplemente una representación de un tipo de objeto. Pensando en ella como un plano
que describe el objeto. Así como un plano puede utilizarse para construir varios edificios, una clase
podemos usarla para crear varias copias de un objeto.
Por ejemplo, el control TextBox lo define una clase TextBox, que define su aspecto y sus funciones. Cada vez
que arrastramos un control TextBox a un formulario, realmente está creando una nueva instancia de la
clase TextBox.
Cada control TextBox es una copia exacta, aunque distinta, de la clase que lo define, la clase TextBox.
Puesto que cada objeto es una instancia independiente de una clase, la acción de crear una clase se
denomina creación de instancias.
¿Qué hay dentro de una clase?
Todos los objetos tienen propiedades que describen sus atributos, métodos que definen sus
acciones y eventos que definen sus respuestas. Igualmente, la clase que define un objeto tiene sus
propias propiedades, métodos y eventos (a veces llamados miembros) que se pasan a todas las
instancias de esa clase.
Algunos miembros de una clase son privados; sólo se tiene acceso a ellos mediante código dentro de la
clase. Por ejemplo, una clase de cuenta bancaria puede tener un método para calcular un saldo. Lo lógico
es permitir que un programa lea ese balance pero no que pueda cambiarlo directamente.
Puede ocultar los miembros de una clase si los declara como Private o exponerlos si los declara como Public.
También puede permitir el acceso a una propiedad y a la vez impedir que el programa cambie su valor
declarándolo como ReadOnly.
Propiedad
Los procedimientos de propiedad tienen tres partes:
•
•
•
Una declaración de una variable privada para almacenar el valor de la propiedad.
Un procedimiento Get que expone el valor.
Un procedimiento Set que, como indica su nombre, establece el valor.
Métodos
Los métodos de una clase son simplemente procedimientos Sub o Function, declarados en la clase.
La mayoría de los métodos de clase son públicos, también se pueden agregar métodos que sólo la clase
en sí puede utilizar.
Eventos
Un programa puede responder a eventos externos, como por ejemplo, un usuario que hace clic en un
botón.
CURSO: Lenguaje de Programación Visual
-2-
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
CASO DESARROLLADO N 01:
Implemente una aplicación que permita controlar el registro de pago de los empleados de una empresa.
Dicho empleado con los siguientes atributos: nombre, categoría (A, B, C y D), minutos de tardanza y un
número de llamadas de atención. Considere que por cada categoría se establece un monto de sueldo
mensual como se muestra a continuación.
CATEGORIA
A
B
C
D
MONTO
2500.00
1500.00
1000.00
900.00
Por cada minuto de tardanza se le hará un descuento de 5.00 y por cada llamada de atención 10.00, en
caso la cantidad de minutos de tardanza y números de llamadas de atención sea cero, entonces recibirá
un incentivo del 15% sobre el monto asignado según su categoría.
Solución:
1. Cree una aplicación en Windows Forms:
2. Ahora modificamos el nombre a formulario inicial:
CURSO: Lenguaje de Programación Visual
-3-
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
3. Ahora diseñaremos el entorno de la aplicación, colocando los objetos necesarios para la solución del
caso:
Le asignaremos las siguientes propiedades:
Form1 (objeto)
Label1
GroupBox1
Label2
Label3
Label4
Label5
Label6
TextBox1
ComboBox1
NumericUpDown1
NumericUpDown2
Button1
Button2
ListView1
TextBox2
CURSO: Lenguaje de Programación Visual
Text
Text
Text
Text
Text
Text
Text
Text
(Name)
(Name)
DropDownStyle
(Name)
(Name)
(Name)
Text
(Name)
Text
(Name)
(Name)
-4-
Control de Pagos
Control de Pago a Empleados
Datos
Empleado:
Categoría:
Minutos Tardanza:
N Llamadas Atención:
Total de Empleados:
txtEmpleado
cboCategoria
DropDownList
nudTardanza
nudLlamadas
btnRegistrar
Registrar Empleado
btnCerrar
Cerrar
lvEmpleados
txtNroEmpleados
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
4. Ahora agregaremos una nueva clase al Proyecto: CEmpleado
5. Ahora implementaremos la clase CEmpleado:
Public Class CEmpleado
'ATRIBUTOS
Private empleado As String
Private categoria As String
Private tardanza As Integer
Private llamada As Integer
'PROPIEDADES
Public Property pEmpleado() As String
Get
Return empleado
End Get
Set(ByVal value As String)
empleado = value
End Set
End Property
Public Property pCategoria() As String
Get
Return categoria
End Get
Set(ByVal value As String)
categoria = value
End Set
End Property
Public Property pTardanza() As Integer
Get
Return tardanza
End Get
Set(ByVal value As Integer)
tardanza = value
End Set
End Property
CURSO: Lenguaje de Programación Visual
-5-
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
Public Property pLlamada() As Integer
Get
Return llamada
End Get
Set(ByVal value As Integer)
llamada = value
End Set
End Property
'ASIGNAR EL PAGO SEGUN LA CATEGORIA
Public Function sueldoBasico()
Select Case categoria
Case "A"
Return 2500
Case "B"
Return 1500
Case "C"
Return 1000
Case Else
Return 900
End Select
End Function
'CALCULAR EL PAGO TENIENDO EN CUENTA: CATEGORIA, TARDANZA Y LLAMADAS DE ATENCION
Public Function calcularPago()
If tardanza > 0 Or llamada > 0 Then
Return sueldoBasico() - ((5 * tardanza) + (10 * llamada))
Else
Return sueldoBasico() + sueldoBasico() * 0.15
End If
End Function
End Class
6. Ahora implementaremos en la ventana de código del Formulario:
Public Class FrmPago
'1. procedimiento que permite agregar Items al cboCategoria
Sub cargarCategorias()
With cboCategoria
.Items.Add("A")
.Items.Add("B")
.Items.Add("C")
.Items.Add("D")
End With
End Sub
'2. procedimiento que permite configurar la lista
Sub configurarLista()
With lvEmpleados
.View = View.Details
.GridLines = True
.Columns.Add("Empleado", 120)
.Columns.Add("Categoría", 80)
.Columns.Add("Min. Tard.", 80)
.Columns.Add("Num. Llam.", 80)
.Columns.Add("Pago S/.", 100)
End With
End Sub
CURSO: Lenguaje de Programación Visual
-6-
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
'3. Leer Datos
Function getNombreEmpleado() As String
Return txtEmpleado.Text
End Function
Function getCategoria() As String
Return cboCategoria.Text
End Function
Function getTardanza() As Integer
Return nudTardanza.Value
End Function
Function getLlamada()
Return nudLlamadas.Value
End Function
'4. Evento Load del Formulario
Private Sub FrmPago_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'llenar el combo
Call cargarCategorias()
'configurar la lista
Call configurarLista()
End Sub
Private Sub btnRegistrar_Click(sender As Object, e As EventArgs) Handles
btnRegistrar.Click
RegistrarDatos()
End Sub
Private Sub RegistrarDatos()
'creamos un objeto a partir de la clase CEmpleado
Dim oEmpleado As New CEmpleado
'verificar si los datos han sido ingresados
If validarDatos() < 0 Then Exit Sub
'asignacion de datos de entrada
oEmpleado.pEmpleado = getNombreEmpleado()
oEmpleado.pCategoria = getCategoria()
oEmpleado.pTardanza = getTardanza()
oEmpleado.pLlamada = getLlamada()
'mostrar los datos en la grilla
With lvEmpleados.Items.Add(oEmpleado.pEmpleado)
.SubItems.Add(oEmpleado.pCategoria)
.SubItems.Add(oEmpleado.pTardanza)
.SubItems.Add(oEmpleado.pLlamada)
.SubItems.Add(oEmpleado.calcularPago())
End With
'contar filas de la Lista
txtNroEmpleados.Text = lvEmpleados.Items.Count
End Sub
Private Function validarDatos() As Integer
If txtEmpleado.Text.Trim = "" Then
MsgBox("Ingrese el nombre del Empleado", 16, "Validacion")
Me.txtEmpleado.Text = ""
Me.txtEmpleado.Focus()
Return -1
ElseIf cboCategoria.SelectedIndex = -1 Then
MsgBox("Seleccione la Categoria", 16, "Validación")
CURSO: Lenguaje de Programación Visual
-7-
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
cboCategoria.Focus()
Return -1
End If
End Function
End Class
7. Formulario en Ejecución:
CURSO: Lenguaje de Programación Visual
-8-
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
EJERCICIOS PROPUESTOS
1. Una empresa evalúa a sus empleados bajo dos criterios: puntualidad y rendimiento. En cada caso
el empleado recibe un puntaje que va de 1 a 10, de acuerdo a los siguientes criterios:
Puntaje por puntualidad:- está en
función a los minutos de tardanza de
acuerdo a la siguiente tabla:
Puntaje por rendimiento:- está en
función a la cantidad de observaciones
efectuadas al empleado por no cumplir
sus obligaciones de acuerdo a la siguiente
tabla:
El puntaje total del empleado es la suma del
puntaje por puntualidad más el puntaje por
rendimiento. En base al puntaje total, el
empleado recibe una bonificación anual de
acuerdo a la siguiente tabla:
Diseñe un programa que determine el puntaje por puntualidad, el puntaje por rendimiento, el
puntaje total y la bonificación que le corresponden a un empleado de la empresa.
2. Una empresa desarrolladora de software ha puesto a la venta licencias de su programa de edición
de video Video Edit 2.0 a los siguientes costos unitarios:
Diseñe un programa que permita ingresar por cada venta el tipo de licencia y el número de
licencias y muestre luego de cada venta:
-
El importe a pagar para la venta efectuada.
El importe total recaudado de cada tipo de licencia.
El número de licencias vendidas de cada tipo de licencia.
El número de ventas efectuadas de cada tipo de licencia.
3. Diseñe un programa que permita ingresar de una en una las edades de un conjunto de personas y
muestre luego de cada ingreso:
- El número de personas mayores de edad.
- El número de personas menores de edad.
- La mayor edad ingresada.
CURSO: Lenguaje de Programación Visual
-9-
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
-
La menor edad ingresada.
4. Diseñe un programa para encuestar a un grupo de personas sobre sus preferencias en bebidas
gaseosas entre: Pepsi Cola, Coca Cola y Fanta. La empresa encuestadora desea saber lo siguiente:
- Cuántas personas, entre varones y mujeres, prefieren cada tipo de gaseosa.
- Cuántos varones prefieren cada tipo de gaseosa.
- Cuántas mujeres prefieren cada tipo de gaseosa.
5. En un cine, los precios de las
entradas son los mostrados en la
siguiente tabla:
Como oferta, el cine entrega un vale por media entrada si el número total de entradas adquiridas
(la suma del número de entradas generales más el número de entradas de niños) es mayor que 5.
Diseñe un programa que determine cuánto debe pagar un cliente por la compra de cierta cantidad
de entradas generales y/o de niños.
6. Al ingresar el día y el numero de un mes, devolver la estación del año de acuerdo a la siguiente tabla:
Estación
Verano
Otoño
Invierno
Primavera
Tiempo
Del 21 de Diciembre al 20 de Marzo
Del 21 de Marzo al 21 de Junio
Del 22 de Junio al 22 de Setiembre
Del 23 de Setiembre al 20 de Diciembre
7. Diseñe un programa que determine la cantidad de días y el nombre de un mes conociendo los
valores numéricos del mes y del año. son bisiestos todos los años divisibles por 4, excluyendo los
que sean divisibles por 100, pero no los que sean divisibles por 400.
8. Dados los siguientes tipos de papel y sus respectivas dimensiones:
Se conoce como área imprimible al área que queda libre luego de descontar los márgenes
superior, inferior, izquierdo y derecho. Diseñe un programa que permita obtener el área imprimible
de un tamaño de papel elegido, en cm2.
CURSO: Lenguaje de Programación Visual
- 10 -
DOCENTE: Ing. CIP Fabián Silva Alvarado
FACULTAD DE I NGENI ERÍ AS Y ARQUI TECTURA
ESCUELA PROFESI ONAL DE
I NGENI ERÍ A DE SI STEMAS E I NFORMÁTI CA
LEN GU AJE D E P R OGRAM ACI O N V I SU AL
9. Un hotel turístico tiene tres tipos de habitaciones, cuyos costos por día se dan en la tabla adjunta.
Como oferta, el hotel ofrece un descuento del 15% del importe bruto para más de 5 días de
hospedaje y 10% en caso contrario. Diseñe un programa que determine el importe bruto, el importe
del descuento y el importe a pagar por parte de un cliente. Además, el programa debe mostrar
información actualizada sobre el número de clientes por tipo de habitación y el importe total
pagado para los clientes ingresados hasta el momento.
CURSO: Lenguaje de Programación Visual
- 11 -
DOCENTE: Ing. CIP Fabián Silva Alvarado