Academia.eduAcademia.edu

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.

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