POO en Visual Basic

11
FACULTAD DE INGENIERÍAS Y ARQUITECTURA ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS E INFORMÁTICA LENGUAJE DE PROGRAMACION VISUAL CURSO: Lenguaje de Programación Visual -1- DOCENTE: Ing. CIP Fabián Silva Alvarado 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

Transcript of POO en Visual Basic

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 1 - DOCENTE: Ing. CIP Fabián Silva Alvarado

POO en Visual BasicTodo .NET Framework está basado en clases (u objetos). A diferencia de las versiones anteriores deVisual Basic, la versión .NET de este lenguaje basa su funcionamiento casi exclusivamente en las clasescontenidas 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. Sebasaba 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 ObjetosTodos los lenguajes basados en objetos, deben cumplir estos tres requisitos:

• Abstracción• Encapsulamiento• Herencia• Polimorfismo

HerenciaEsta 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 eldiseño de la aplicación proporcionando una estructura de relaciones entre las distintas clases. Tambiénadmite la reutilización de código porque sólo se debe codificar el comportamiento de clasesnuevas o distintas“.“La herencia es la capacidad de una clase de obtener la interfaz y comportamiento de una claseexistente.”Resumiendo: Gracias a la herencia podemos ampliar cualquier clase existente, además deaprovecharnos de todo lo que esa clase haga.EncapsulamientoSegún Visual Studio.NET: “La encapsulación es la capacidad de contener y controlar el acceso a un grupode elementos asociados. Las clases proporcionan una de las formas más comunes de encapsularelementos.”Cuando usamos las clases, éstas tienen una serie de características (los datos que manipula) así comouna serie de comportamientos (las acciones a realizar con esos datos). La encapsulación es esacapacidad 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 debeimportar que lo hace.Resumiendo: Establece la separación entre la interfaz del objeto y su implementación.PolimorfismoSegún la documentación de Visual Studio.NET: “El polimorfismo se refiere a la posibilidad de definirmúltiples clases con funcionalidad diferente, pero con métodos o propiedades denominados de formaidéntica, que pueden utilizarse de manera intercambiable mediante código cliente en tiempo deejecución.”Dicho de otra manera, puede tener múltiples clases que se pueden utilizar de forma intercambiable, sibien cada clase implementa las mismas propiedades o los mismos métodos de maneras diferentes. Elpolimorfismo es importante en la programación orientada a objetos puesto que permite usar elementos

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 2 - DOCENTE: Ing. CIP Fabián Silva Alvarado

que tienen el mismo nombre, independientemente del tipo de objeto que se esté utilizando en esemomento.Resumiendo: Determina que el mismo nombre de método realizará diferentes acciones según el objetosobre el que se ha aplicado.¿Qué es una clase?Los programas de Visual Basic se generan con objetos como formularios y controles. Los objetostambién se pueden utilizar para representar cosas reales como personas, equipos informáticos o inclusoalgo más abstracto, como una cuenta bancaria.Una clase es simplemente una representación de un tipo de objeto. Pensando en ella como un planoque describe el objeto. Así como un plano puede utilizarse para construir varios edificios, una clasepodemos 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 vezque arrastramos un control TextBox a un formulario, realmente está creando una nueva instancia de laclase 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 sedenomina creación de instancias.¿Qué hay dentro de una clase?

Todos los objetos tienen propiedades que describen sus atributos, métodos que definen susacciones y eventos que definen sus respuestas. Igualmente, la clase que define un objeto tiene suspropias propiedades, métodos y eventos (a veces llamados miembros) que se pasan a todas lasinstancias de esa clase.Algunos miembros de una clase son privados; sólo se tiene acceso a ellos mediante código dentro de laclase. Por ejemplo, una clase de cuenta bancaria puede tener un método para calcular un saldo. Lo lógicoes permitir que un programa lea ese balance pero no que pueda cambiarlo directamente.Puede ocultar losmiembros 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 valordeclarándolo como ReadOnly.

PropiedadLos 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étodosLos 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 claseen sí puede utilizar.EventosUn programa puede responder a eventos externos, como por ejemplo, un usuario que hace clic en unbotón.

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 3 - DOCENTE: Ing. CIP Fabián Silva Alvarado

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 unnúmero de llamadas de atención. Considere que por cada categoría se establece un monto de sueldomensual como se muestra a continuación.CATEGORIA MONTOA 2500.00B 1500.00C 1000.00D 900.00Por cada minuto de tardanza se le hará un descuento de 5.00 y por cada llamada de atención 10.00, encaso 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:

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 4 - DOCENTE: Ing. CIP Fabián Silva Alvarado

3. Ahora diseñaremos el entorno de la aplicación, colocando los objetos necesarios para la solución delcaso:

Le asignaremos las siguientes propiedades:Form1 (objeto) Text Control de PagosLabel1 Text Control de Pago a EmpleadosGroupBox1 Text DatosLabel2 Text Empleado:Label3 Text Categoría:Label4 Text Minutos Tardanza:Label5 Text N Llamadas Atención:Label6 Text Total de Empleados:TextBox1 (Name) txtEmpleadoComboBox1 (Name)

DropDownStylecboCategoriaDropDownList

NumericUpDown1 (Name) nudTardanzaNumericUpDown2 (Name) nudLlamadasButton1 (Name)

TextbtnRegistrarRegistrar Empleado

Button2 (Name)Text

btnCerrarCerrar

ListView1 (Name) lvEmpleadosTextBox2 (Name) txtNroEmpleados

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 5 - DOCENTE: Ing. CIP Fabián Silva Alvarado

4. Ahora agregaremos una nueva clase al Proyecto: CEmpleado

5. Ahora implementaremos la clase CEmpleado:Public Class CEmpleado

'ATRIBUTOSPrivate empleado As StringPrivate categoria As StringPrivate tardanza As IntegerPrivate llamada As Integer

'PROPIEDADESPublic Property pEmpleado() As String

GetReturn empleado

End GetSet(ByVal value As String)

empleado = valueEnd Set

End Property

Public Property pCategoria() As StringGet

Return categoriaEnd GetSet(ByVal value As String)

categoria = valueEnd Set

End Property

Public Property pTardanza() As IntegerGet

Return tardanzaEnd GetSet(ByVal value As Integer)

tardanza = valueEnd Set

End Property

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 6 - DOCENTE: Ing. CIP Fabián Silva Alvarado

Public Property pLlamada() As IntegerGet

Return llamadaEnd GetSet(ByVal value As Integer)

llamada = valueEnd Set

End Property

'ASIGNAR EL PAGO SEGUN LA CATEGORIAPublic Function sueldoBasico()

Select Case categoriaCase "A"

Return 2500Case "B"

Return 1500Case "C"

Return 1000Case Else

Return 900End Select

End Function

'CALCULAR EL PAGO TENIENDO EN CUENTA: CATEGORIA, TARDANZA Y LLAMADAS DE ATENCIONPublic Function calcularPago()

If tardanza > 0 Or llamada > 0 ThenReturn sueldoBasico() - ((5 * tardanza) + (10 * llamada))

ElseReturn sueldoBasico() + sueldoBasico() * 0.15

End IfEnd Function

End Class

6. Ahora implementaremos en la ventana de código del Formulario:Public Class FrmPago

'1. procedimiento que permite agregar Items al cboCategoriaSub cargarCategorias()

With cboCategoria.Items.Add("A").Items.Add("B").Items.Add("C").Items.Add("D")

End WithEnd Sub'2. procedimiento que permite configurar la listaSub 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 WithEnd Sub

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 7 - DOCENTE: Ing. CIP Fabián Silva Alvarado

'3. Leer DatosFunction getNombreEmpleado() As String

Return txtEmpleado.TextEnd FunctionFunction getCategoria() As String

Return cboCategoria.TextEnd FunctionFunction getTardanza() As Integer

Return nudTardanza.ValueEnd FunctionFunction getLlamada()

Return nudLlamadas.ValueEnd Function

'4. Evento Load del Formulario

Private Sub FrmPago_Load(sender As Object, e As EventArgs) Handles MyBase.Load'llenar el comboCall cargarCategorias()'configurar la listaCall configurarLista()

End Sub

Private Sub btnRegistrar_Click(sender As Object, e As EventArgs) HandlesbtnRegistrar.Click

RegistrarDatos()End Sub

Private Sub RegistrarDatos()'creamos un objeto a partir de la clase CEmpleadoDim oEmpleado As New CEmpleado'verificar si los datos han sido ingresadosIf validarDatos() < 0 Then Exit Sub

'asignacion de datos de entradaoEmpleado.pEmpleado = getNombreEmpleado()oEmpleado.pCategoria = getCategoria()oEmpleado.pTardanza = getTardanza()oEmpleado.pLlamada = getLlamada()

'mostrar los datos en la grillaWith 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 ListatxtNroEmpleados.Text = lvEmpleados.Items.Count

End Sub

Private Function validarDatos() As IntegerIf txtEmpleado.Text.Trim = "" Then

MsgBox("Ingrese el nombre del Empleado", 16, "Validacion")Me.txtEmpleado.Text = ""Me.txtEmpleado.Focus()Return -1

ElseIf cboCategoria.SelectedIndex = -1 ThenMsgBox("Seleccione la Categoria", 16, "Validación")

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 8 - DOCENTE: Ing. CIP Fabián Silva Alvarado

cboCategoria.Focus()Return -1

End IfEnd Function

End Class

7. Formulario en Ejecución:

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 9 - DOCENTE: Ing. CIP Fabián Silva Alvarado

EJERCICIOS PROPUESTOS

1. Una empresa evalúa a sus empleados bajo dos criterios: puntualidad y rendimiento. En cada casoel empleado recibe un puntaje que va de 1 a 10, de acuerdo a los siguientes criterios:Puntaje por puntualidad:- está enfunción a los minutos de tardanza deacuerdo a la siguiente tabla:Puntaje por rendimiento:- está enfunción a la cantidad de observacionesefectuadas al empleado por no cumplirsus obligaciones de acuerdo a la siguientetabla:El puntaje total del empleado es la suma delpuntaje por puntualidad más el puntaje porrendimiento. En base al puntaje total, elempleado recibe una bonificación anual deacuerdo a la siguiente tabla:Diseñe un programa que determine el puntaje por puntualidad, el puntaje por rendimiento, elpuntaje 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ónde 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 delicencias 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 ymuestre luego de cada ingreso:- El número de personas mayores de edad.- El número de personas menores de edad.- La mayor edad ingresada.

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 10 - DOCENTE: Ing. CIP Fabián Silva Alvarado

- La menor edad ingresada.4. Diseñe un programa para encuestar a un grupo de personas sobre sus preferencias en bebidasgaseosas 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 lasentradas son los mostrados en lasiguiente 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 cantidadde 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 TiempoVerano Del 21 de Diciembre al 20 de MarzoOtoño Del 21 de Marzo al 21 de JunioInvierno Del 22 de Junio al 22 de SetiembrePrimavera 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 losvalores numéricos del mes y del año. son bisiestos todos los años divisibles por 4, excluyendo losque 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árgenessuperior, inferior, izquierdo y derecho. Diseñe un programa que permita obtener el área imprimiblede un tamaño de papel elegido, en cm2.

FACULTAD DE INGENIERÍAS Y ARQUITECTURAESCUELA PROFESIONAL DE

INGENIERÍA DE SISTEMAS E INFORMÁTICA

LENGUAJE DE PROGRAMACION VISUAL

CURSO: Lenguaje de Programación Visual - 11 - DOCENTE: Ing. CIP Fabián Silva Alvarado

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 dehospedaje y 10% en caso contrario. Diseñe un programa que determine el importe bruto, el importedel descuento y el importe a pagar por parte de un cliente. Además, el programa debe mostrarinformación actualizada sobre el número de clientes por tipo de habitación y el importe totalpagado para los clientes ingresados hasta el momento.