Taller de aplicaciones
                                                                    de escritorio

                ...
clase Coche, porque realizamos una abstracción o identificación mental de los elementos comunes que
ambos tienen (ruedas, ...
Herencia
Se trata de la característica más importante de la OOP, y establece que partiendo de una clase a la que
denominam...
Creación de clases
Volvamos al ejemplo expuesto al comienzo de este tema, en el cuál, habíamos dejado a nuestro
programado...
Se creará de esta forma un nuevo fichero de código (EMPLEADO.VB), mostrándose el editor de código
con su contenido. Observ...
Acá se muestra que el objeto solo es referenciado por lo tanto se producirá una excepción que el
objeto no fue instanciado...
4.- Object: La clase base de todas las clases de .NET
Las clases existentes en la biblioteca de clases del .NET Framework,...
Function o de tipo Sub respectivamente.
Las propiedades
Son las "características" de las clases y la forma de acceder "púb...
Supongamos que queremos tener dos funciones (o más) que nos permitan hacer operaciones con
diferentes tipos de datos, y qu...
2.- Programando:

Public Class Practica01

    Structure alumno
        Public nombre As String
        Public nota As Int...
lsvDatos.Items.Clear()
         cContador = 0
         ReDim aIntegrantes(cContador)
         txtNombre.Clear()
         t...
Upcoming SlideShare
Loading in …5
×

Clase numero 6

1,209 views

Published on

  • Be the first to comment

  • Be the first to like this

Clase numero 6

  1. 1. Taller de aplicaciones de escritorio 2010 III CICLO TALLER DE APLICACIONES DE ESCRITORIO – VISUAL BASIC .NET Objetivos: • Conocer los conceptos básicos de programación orientada a objetos. • Conocer la creación de objetos y clases. WINDOWS FORMS 1.- La programación orientada a objetos 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 limitaciones. Debido a esta dependencia en las clases del .NET Framework y sobre todo a la forma "hereditaria" de usarlas, Visual Basic .NET tenía que ofrecer esta característica sin ningún tipo de restricciones. Aunque no soy muy dado a esto de las cosas teóricas, vamos a ver de qué va todo esto de la programación orientada a objetos y cuáles son las "condiciones" que cualquier lenguaje que se precie de serlo debe cumplir. Los tres pilares de la Programación Orientada a Objetos Según se dice por ahí, cualquier lenguaje basado en objetos debe cumplir estos tres requisitos: 1. Abstracción 2. Herencia 3. Encapsulación 4. Polimorfismo Abstracción La abstracción es aquella característica que nos permite identificar un objeto a través de sus aspectos conceptuales. Las propiedades de los objetos de una misma clase, pueden hacerlos tan distintos que sea difícil reconocer que pertenecen a una clase idéntica. No obstante, nosotros reconocemos a qué clase pertenecen, identificando además, si se trata de la misma clase para ambos. Ello es posible gracias a la abstracción. Tomemos como ejemplo dos objetos coche, uno deportivo y otro familiar; su aspecto exterior es muy diferente, sin embargo, cuando pensamos en cualquiera de ellos, sabemos que ambos pertenecen a la PROF. MARIO ANTONIO HUAPALLA MORALES 1
  2. 2. clase Coche, porque realizamos una abstracción o identificación mental de los elementos comunes que ambos tienen (ruedas, volante, motor, puertas, etc.). Del mismo modo que hacemos al identificar objetos reales, la abstracción nos ayuda a la hora de desarrollar una aplicación, permitiéndonos identificar los objetos que van a formar parte de nuestro programa, sin necesidad de disponer aún de su implementación; nos basta con reconocer los aspectos conceptuales que cada objeto debe resolver. Por ejemplo, cuando abordamos el desarrollo de un programa de gestión orientado a objetos, realizamos una abstracción de los objetos que necesitaríamos para resolver los procesos del programa: un objeto Empleado, para gestionar al personal de la empresa; un objeto Factura, para gestionar las ventas realizadas de productos; un objeto Usuario, para verificar las personas que utilizan la aplicación, etc. Encapsulación La encapsulación establece la separación entre el interfaz del objeto y su implementación, aportándonos dos ventajas fundamentales. Por una parte proporciona seguridad al código de la clase, evitando accesos y modificaciones no deseadas; una clase bien encapsulada no debe permitir la modificación directa de una variable, ni ejecutar métodos que sean de uso interno para la clase. Por otro lado la encapsulación simplifica la utilización de los objetos, ya que un programador que use un objeto, si este está bien diseñado y su código correctamente escrito, no necesitará conocer los detalles de su implementación, se limitará a utilizarlo. Tomando un ejemplo real, cuando nosotros utilizamos un objeto Coche, al presionar el acelerador, no necesitamos conocer la mecánica interna que hace moverse al coche, sabemos que el método Acelerar del coche es lo que tenemos que utilizar para desplazarnos, y simplemente lo usamos. Pasando a un ejemplo en programación, si estamos creando un programa de gestión y nos proporcionan un objeto Cliente que tiene el método Alta, y sirve para añadir nuevos clientes a la base de datos, no precisamos conocer el código que contiene dicho método, simplemente lo ejecutamos y damos de alta a los clientes en nuestra aplicación. Polimorfismo El polimorfismo determina que el mismo nombre de método, realizará diferentes acciones según el objeto sobre el que sea aplicado. Al igual que sucedía en la encapsulación, el programador que haga uso del objeto, no necesita conocer los detalles de implementación de los métodos, se limita a utilizarlos. Pasando a un ejemplo real, tomamos dos objetos: Pelota y VasoCristal; si ejecutamos sobre ambos el método Tirar, el resultado en ambos casos será muy diferente; mientras que el objeto Pelota rebotará al llegar al suelo, el objeto VasoCristal se romperá. En un ejemplo aplicado a la programación, supongamos que disponemos de los objetos Ventana y Fichero; si ejecutamos sobre ambos el método Abrir, el resultado en Ventana será la visualización de una ventana en el monitor del usuario; mientras que en el objeto Fichero, se tomará un fichero en el equipo del usuario y se dejará listo para realizar sobre él operaciones de lectura o escritura. PROF. MARIO ANTONIO HUAPALLA MORALES 2
  3. 3. Herencia Se trata de la característica más importante de la OOP, y establece que partiendo de una clase a la que denominamos clase base, padre o superclase, creamos una nueva clase denominada clase derivada, hija, o subclase. En esta clase derivada dispondremos de todo el código de la clase base, más el nuevo código propio de la clase hija, que escribamos para extender sus funcionalidades. A su vez podemos tomar una clase derivada, creando una nueva subclase a partir de ella, y así sucesivamente, componiendo lo que se denomina una jerarquía de clases, que explicaremos seguidamente. Existen dos tipos de herencia: simple y múltiple. La herencia simple es aquella en la que creamos una clase derivada a partir de una sola clase base, mientras que la herencia múltiple nos permite crear una clase derivada a partir de varias clases base. El entorno de .NET Framework sólo permite utilizar herencia simple. Como ejemplo real de herencia, podemos usar la clase Coche como clase base; en ella reconocemos una serie de propiedades como Motor, Ruedas, Volante, etc., y unos métodos como Arrancar, Acelerar, Frenar, etc. Como clase derivada creamos CocheDeportivo, en la cuál, además de todas las características mencionadas para la clase Coche, encontramos propiedades y comportamiento específicos como ABS, Turbo, etc. Un ejemplo basado en programación consistiría en disponer de la ya conocida clase Empleado. Esta clase se ocupa, como ya sabemos, de las operaciones de alta de empleados, pago de nóminas, etc.; pero en un momento dado, surge la necesidad de realizar pagos a empleados que no trabajan en la central de la empresa, ya que se trata de comerciales que pasan la mayor parte del tiempo desplazándose. Para realizar dichos pagos usaremos Internet, necesitando el número de tarjeta de crédito y la dirección email del empleado. Resolveremos esta situación creando la clase derivada CiberEmpleado, que hereda de la clase Empleado, en la que sólo tendríamos que añadir las nuevas propiedades y métodos para las transacciones electrónicas, puesto que las operaciones tradicionales ya las tendríamos disponibles por el mero hecho de haber heredado de Empleado. Jerarquías de clases Como decíamos en un apartado anterior, uno de los fines de la OOP consiste en la clasificación del código; para ello se emplean jerarquías o árboles de clases, en los que a base de niveles, se muestra un conjunto de clases conectadas por una relación de herencia. Observemos el esquema de la Figura 192, en el que se muestra un ejemplo de la jerarquía de clases de medios de transporte. PROF. MARIO ANTONIO HUAPALLA MORALES 3
  4. 4. Creación de clases Volvamos al ejemplo expuesto al comienzo de este tema, en el cuál, habíamos dejado a nuestro programador desarrollando los procesos de un empleado dentro de una aplicación de gestión empresarial. Recordemos que se planteaba el problema de que ante el crecimiento del programa, el mantenimiento del código, al enfocarse de modo procedural, podía volverse una tarea realmente difícil. Vamos a replantear este diseño, encauzándolo bajo una perspectiva orientada a objeto, que nos permita un uso más sencillo del código y un mantenimiento también más fácil. Para lo cual desarrollaremos una clase que contenga todas las operaciones a realizar por el empleado; en definitiva, crearemos la clase Empleado, cuyo proceso describiremos a continuación. Podemos escribir una clase en VB.NET utilizando diferentes tipos de aplicación, en este caso emplearemos una aplicación de consola. Iniciaremos en primer lugar VS.NET, creando un proyecto de tipo consola. A continuación seleccionaremos el menú Proyecto + Agregar clase, que nos mostrará la ventana para agregar nuevos elementos al proyecto. El nombre por defecto asignado por el IDE para la clase será Class1; cambiaremos dicho nombre por Empleado, y pulsaremos Abrir. PROF. MARIO ANTONIO HUAPALLA MORALES 4
  5. 5. Se creará de esta forma un nuevo fichero de código (EMPLEADO.VB), mostrándose el editor de código con su contenido. Observemos en este sentido, que la definición de una clase se realiza utilizando las palabras clave Class...End Class; entre estas palabras escribiremos el código de la clase. Public Class Empleado End Class 2.- Creación de un Objeto Por Referencia e Instancia. Se referencia al objeto hacia una variable: Dim Variable as [Objeto] Creando el objeto o Instanciandolo: Variable = New [Objeto] 1.2 Creación de un Objeto Por Referencia e Instancia a la vez. Se referencia e instancia a la vez: Dim Variable as New [Objeto] Una vez creado el objeto se puede hacer uso de sus métodos y propiedades. Ejemplo: PROF. MARIO ANTONIO HUAPALLA MORALES 5
  6. 6. Acá se muestra que el objeto solo es referenciado por lo tanto se producirá una excepción que el objeto no fue instanciado. Si ahora instanciamos el objeto veremos que no produce ninguna excepción. 3.- Uso de Clases en .NET Como vimos en los laboratorios anteriores, los tipos de datos se dividen en dos grupos: tipos por valor y tipos por referencia. Los tipos por referencia realmente son clases, de la cuales debemos crear una instancia para poder usarlas, cuando instanciamos una clase esta se crea en la parte lejana de la memoria llamada heap, y las variables que la contienen solo hacen una referencia a la dirección de su ubicación en la que la CLR ha almacenado el objeto recién creado. En el .NET Framework la mayor parte a usar será una clase, la creación de formularios, la creación de módulos, y las clases mismas etc., toda estas se grabaran con la extensión vb si usamos como lenguaje predeterminado Visual Basic, para C# la extensión sera .cs. PROF. MARIO ANTONIO HUAPALLA MORALES 6
  7. 7. 4.- Object: La clase base de todas las clases de .NET Las clases existentes en la biblioteca de clases del .NET Framework, derivan de una clase principal llamada object, es decir así lo indiquemos o no cualquier clase que definamos o usemos tendrá el comportamiento Todas las clases de .NET se derivan de la clase Object, es decir, lo indiquemos o no, cualquier clase que definamos tendrá el comportamiento heredado de esa clase. El uso de la clase Object como base del resto de las clases de .NET es la única excepción a la herencia simple soportada por .NET, ya que de forma implícita, todas las clases de .NET se derivan de la clase Object independientemente de que estén derivadas de cualquier otra. De los miembros que tiene la clase Object debemos resaltar el método ToString, este método está pensado para devolver una representación en formato cadena de un objeto. 5.- Definir una clase En Visual Basic 2005, todo el código que queramos escribir, lo tendremos que hacer en un fichero con la extensión .vb, dentro de ese fichero es donde escribiremos nuestro código, el cual, tal como dijimos anteriormente siempre estará incluido dentro de una clase, aunque un fichero de código de VB puede contener una o más clases, es decir, no está limitado a una clase por fichero. En Visual Basic 2005 las clases se definen usando la palabra clave Class seguida del nombre de la clase, esa definición acaba indicándolo con End Class. 6.- Los miembros de una clase Una clase puede contener cualquiera de estos elementos (miembros): • Enumeraciones • Campos • Métodos (funciones o procedimientos) • Propiedades • Eventos Aquí una breve descripción: Los campos Son variables usadas para mantener los datos que la clase manipulará. Los métodos Son las acciones que la clase puede realizar, normalmente esas acciones serán sobre los datos que contiene. Dependiendo de que el método devuelva o no un valor, podemos usar métodos de tipo PROF. MARIO ANTONIO HUAPALLA MORALES 7
  8. 8. Function o de tipo Sub respectivamente. Las propiedades Son las "características" de las clases y la forma de acceder "públicamente" a los datos que contiene. Por ejemplo, podemos considerar que el nombre y los apellidos de un cliente son dos características del cliente. Los eventos Son mensajes que la clase puede enviar para informar que algo está ocurriendo en la clase. Esquema de una Clase: Public Class Empleados Dim Codigo As Integer Public bEstado As Boolean Private sCta As String Public Property Cuenta() Get Return sCta End Get Set(ByVal value) sCta = value End Set End Property Public Function BuscaEMpleado(ByVal _codigo As Integer) As String Return "Felipe Castañeda" End Function End Class Uso de la clase: 7.- Creación de Procedimientos Sobre Cargados La sobrecarga de funciones (tanto para funciones como para procedimientos Sub), es una característica que nos permite tener una misma función con diferentes tipos de parámetros, ya sea en número o en tipo. PROF. MARIO ANTONIO HUAPALLA MORALES 8
  9. 9. Supongamos que queremos tener dos funciones (o más) que nos permitan hacer operaciones con diferentes tipos de datos, y que, según el tipo de datos usado, el valor que devuelva sea de ese mismo tipo. Ejemplo de procedimientos sobre cargados: Sub VerificarDatos() 'Codigo a ejecutar '..... '....................... End Sub Sub VerificarDatos(ByVal xVar1 As String) 'Codigo a ejecutar '..... '....................... End Sub Function VerificarDatos(ByVal xVar1 As String, ByVal xVar2 As Integer) As Boolean 'Codigo a ejecutar '..... '....................... End Function Sub VerificarDatos(ByVal ParamArray xVar1() As String) 'Codigo a ejecutar '..... '....................... End Sub Llamada a un Procedimiento Sobre Cargado: Laboratorio 5 1.- Diseñe el siguiente formulario: PROF. MARIO ANTONIO HUAPALLA MORALES 9
  10. 10. 2.- Programando: Public Class Practica01 Structure alumno Public nombre As String Public nota As Integer End Structure Dim aIntegrantes() As alumno Dim cContador As Integer Private Sub Agregar(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdAgregar.Click If Len(Trim(txtNombre.Text)) = 0 Or Len(Trim(txtNota.Text)) = 0 Then MessageBox.Show("Faltan datos...", "Error") Exit Sub End If cmdMostrar.Enabled = True ReDim Preserve aIntegrantes(cContador) aIntegrantes(cContador).nombre = txtNombre.Text aIntegrantes(cContador).nota = txtNota.Text cContador += 1 txtNombre.Focus() End Sub Private Sub Mostrar(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdMostrar.Click Dim i As Integer lsvDatos.Items.Clear() For i = 0 To aIntegrantes.GetUpperBound(0) Dim item As New ListViewItem(aIntegrantes(i).nombre) item.SubItems.Add(aIntegrantes(i).nota) lsvDatos.Items.Add(item) Next End Sub Private Sub Modificar(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdModificar.Click If lsvDatos.SelectedItems.Count <> 0 Then lsvDatos.SelectedItems(0).SubItems(0).Text = txtNombre.Text lsvDatos.SelectedItems(0).SubItems(1).Text = txtNota.Text Dim i As Integer i = lsvDatos.SelectedItems(0).Index aIntegrantes(i).nombre = txtNombre.Text aIntegrantes(i).nota = txtNota.Text End If End Sub Private Sub SeleccionLista(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles lsvDatos.SelectedIndexChanged If lsvDatos.SelectedIndices.Count = 0 Then Exit Sub txtNombre.Text = lsvDatos.SelectedItems(0).SubItems(0).Text txtNota.Text = lsvDatos.SelectedItems(0).SubItems(1).Text End Sub Private Sub Limpiar(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdLimpìar.Click PROF. MARIO ANTONIO HUAPALLA MORALES 10
  11. 11. lsvDatos.Items.Clear() cContador = 0 ReDim aIntegrantes(cContador) txtNombre.Clear() txtNota.Clear() txtNombre.Focus() cmdMostrar.Enabled = False End Sub End Class Ejercicio: 1.- Diseñe y programe el siguiente formulario: Conclusiones: • Aprendimos el uso y creación de clases, objetos. • Aprendimos las Principales característica de la programación orientada a objetos. PROF. MARIO ANTONIO HUAPALLA MORALES 11

×