sesion 02 clases en_vb_net

46
Programación Orientada a Objetos Microsoft Visual Basic .Net

Upload: santos-rivera-lujan

Post on 06-Jul-2015

213 views

Category:

Education


0 download

DESCRIPTION

Mi web: riverasn.p.ht

TRANSCRIPT

Page 1: Sesion 02 clases en_vb_net

Programación Orientada a Objetos

Microsoft Visual Basic .Net

Page 2: Sesion 02 clases en_vb_net

Objeto

Un objeto es una agrupación de código, compuesta de propiedades y métodos, que pueden ser manipulados como una entidad independiente.

Propiedad:

Las propiedades definen los datos o información del objeto, permitiendo consultar o modificar su estado.

Métodos:

Son las rutinas que definen su comportamiento.

Page 3: Sesion 02 clases en_vb_net

Clases

Es el conjunto de especificaciones o normas que definen cómo va a ser creado un objeto de un tipo determinado.

Instancia de un objeto:

El proceso por el cuál se obtiene un objeto a partir de las especificaciones de una clase se conoce como instanciación de objetos.

Page 4: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Abstracción:

Es aquella característica que nos permite identificar un objeto a través de sus aspectos conceptuales.

Ejm. 1. Dos objetos automóvil, 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 clase automóvil, porque realizamos una abstracción o identificación mental de los elementos comunes que ambos tienen (ruedas, volante, motor, puertas, etc.)

Page 5: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Ejm. 2. 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.

Page 6: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Encapsulación:

Establece la separación entre la interfaz del objeto y su implementación, aportándonos dos ventajas fundamentales.

Proporciona seguridad al código de la clase, evitando accesos y modificaciones no deseadas.

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.

Page 7: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Encapsulación:

Ejm. 1. Cuando nosotros utilizamos un objeto automóvil, al presionar el acelerador, no necesitamos conocer la mecánica interna que hace moverse al coche, sabemos que el método Acelerar del automóvil es lo que tenemos que utilizar para desplazarnos, y simplemente lo usamos.

Page 8: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Encapsulación:

Ejm. 2. Si estamos creando un programa de gestión y nos proporcionan un objeto Cliente que tiene el método Agregar, y sirve para añadir nuevos clientes a la b/d, no precisamos conocer el código que contiene dicho método, simplemente lo ejecutamos y Añadimos a los clientes en nuestra aplicación.

Page 9: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Polimorfismo:

Determina que el mismo nombre de método, realizará diferentes acciones según el objeto sobre el que sea aplicado.

Ejm. 1. Tomamos dos objetos: Pelota y VasoCristal; si ejecutamos sobre ambos el método Tirar, el resultado en ambos caso será muy diferente; mientras que el objeto Pelota rebotará al llegar al suelo, el objeto VasoVidrio se romperá.

Page 10: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Polimorfismo:

Ejm. 2. Supongamos que disponemos de los objetos Ventana y Archivo; 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 Archivo, se tomará un archivo en el equipo del usuario y se dejará listo para realizar sobre él operaciones de lectura o escritura.

Page 11: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Herencia:

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 de la clase hija, que escribamos para extender sus funcionalidades.

Page 12: Sesion 02 clases en_vb_net

Características básicas de un sistema orientado a objetos

Herencia:

Ejm. 1. Podemos usar la clase Automóvil 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 AutoDeportivo, en la cual, además de todas las características mencionadas para la clase Automóvil, encontramos propiedades y comportamientos específicos como Turbo.

Page 13: Sesion 02 clases en_vb_net

Definir una clase Para definir una clase de emplea, la palabra clave Class.

Public Class cCliente

„ Miembros de clase

End Class

Una clase puede contener cualquiera de estos elementos (miembros):

Enumeraciones

Campos

Métodos (funciones o procedimientos)

Propiedades

Eventos

Page 14: Sesion 02 clases en_vb_net

Atributos

Los Atributos de clase se representan mediante Campos o Propiedades.

Los campos se implementan mediante variables públicas que se pueden leer y establecer directamente desde el exterior de la clase.

Public Nombre As String

Las Propiedades se recuperan y establecen como los Campos.

Page 15: Sesion 02 clases en_vb_net

Atributos Las Propiedades se implementan mediante procedimientos Property Get y Property Set.

Private strNombre AS String

Property Nombre() As String

Get

Return strNombre

End Get

Set (ByVal Value As String)

strNombre=Value

End Set

End Property

El procedimiento Get devuelve el valor, mientras que Procedimiento Set le asigna el valor a la Propiedad.

Page 16: Sesion 02 clases en_vb_net

Métodos

Se implementan mediante procedimientos o subrutinas (Sub) y funciones (Function) declarados dentro de una clase

Function Saludo() As String

If Nombre<>”” Then

Return “Hola “ & Nombre

Else

Return “Hola Mundo”

End If

End Function

Page 17: Sesion 02 clases en_vb_net

Constructores y Destructores

Son métodos especiales que se emplean para la inicialización del objeto durante su construcción, y la limpieza del mismo durante su destrucción.

El Constructor se define con el procedimiento New.

Sub New (Nombre As String)

strNombre=Nombre

End Sub

El Destructor mediante el procedimiento Finalize.

Overrides Protected Sub Finalize()

Page 18: Sesion 02 clases en_vb_net

Creación y Destrucción de Objetos

Para crear un objeto se usa la cláusula New

Private mCliente AS cCliente

mCliente = New cCliente()

También se puede realizar ambas operaciones

Private mCliente As New cCliente()

otra forma

Private mCliente As cCliente=New cCliente()

Si el constructor admite parámetros

mCliente=New cCliente(“Luz”,18)

No se puede Destruir, pero si invocar el método Dispose.

mCliente.Dispose()

Page 19: Sesion 02 clases en_vb_net

Eventos

Se utilizan para notificar a los objetos sobre la ocurrencia de alguna situación especial.

Se agregan a la clase con la instrucción Events.

Event MiEvento(ByVal Sender As _ System.Object, ByVal NumEvento As Integer)

Para conseguir que se produzca el evento, se debe utilizar RaiseEvent.

RaiseEvent MiEvento(Me, NumEvento)

Page 20: Sesion 02 clases en_vb_net

Eventos

Para consumir un evento se necesita asociar de manera explicita el evento a un método (procedimiento) controlador de evento (event handler) para lo cual se utiliza la clausula Handles en combinación con Withevents.

Friend WithEvents Button1 As System.Windows.Forms.Button

Protect Sub Button1_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button1.Click

End Sub

Page 21: Sesion 02 clases en_vb_net

Eventos

También se puede asociar un evento a un método controlador de evento con la instrucción AddHandler que permite que un evento pueda asignarse a cualquier número de controladores de eventos.

AddHandler MyObject.Event1, AddressOf Me.MyEventHandler

Los métodos que controlan determinados eventos pueden modificarse de manera dinámica, si se utiliza en conjunto con la instrucción RemoveHandler, que remueve la asociación entre un evento y su controlador.

RemoveHandler MyObject.Event1, AddressOf Me.MyEventHandler

Page 22: Sesion 02 clases en_vb_net

CREACIÓN DE UNA CLASE

Ejecutar Microsoft Visual Studio y crear un nuevo Proyecto.

Diseñe el siguiente Formulario.

txtIdentificador btnDatos

Page 23: Sesion 02 clases en_vb_net

CREACIÓN DE UNA CLASE

Seleccione el la opción Proyecto del menú principal lo siguiente:

Seleccionar Clase

Ingresar el nombre

de la clase:

Empleado.vb

Agregar la clase

Page 24: Sesion 02 clases en_vb_net

Se mostrara lo siguiente:

Page 25: Sesion 02 clases en_vb_net

Creación de campos para la clase

Un campo de una clase no es otra cosa que una variable, generalmente con ámbito público, accesible desde el exterior de la clase.

El siguiente código muestra la creación de un campo para la clase Empleado.

Page 26: Sesion 02 clases en_vb_net

Creación de campos para la clase

Para manipular un campo desde código cliente, debemos instanciar un objeto, a continuación de la variable que lo contiene situar un punto ( . ), y finalmente el nombre del campo a manipular.

Page 27: Sesion 02 clases en_vb_net

Creación de propiedades para la clase

Una propiedad en la clase se define, por norma general, mediante dos elementos: una variable de propiedad y un procedimiento de propiedad.

Page 28: Sesion 02 clases en_vb_net

Creación de propiedades para la clase

La variable de propiedad, tal y como su nombre indica, es una variable con ámbito privado a nivel de la clase, que se encarga de guardar el valor de la propiedad.

Page 29: Sesion 02 clases en_vb_net

Creación de propiedades para la clase

El procedimiento de propiedad (Property), es el encargado de actuar de puente entre el código cliente y la variable de propiedad, realizando las operaciones de acceso y asignación de valores a dicha variable.

Page 30: Sesion 02 clases en_vb_net

Creación de propiedades para la clase

Para crear una propiedad en nuestra clase, declararemos en primer lugar una variable Private, y en segundo lugar un procedimiento de tipo Property, que consta de dos bloques:

Get, para devolver el valor de la variable de propiedad.

Set, para asignárselo.

Page 31: Sesion 02 clases en_vb_net
Page 32: Sesion 02 clases en_vb_net

VENTAJAS EN EL USO DE PROPIEDADES

Page 33: Sesion 02 clases en_vb_net

Encapsulación a través de propiedades

Establece que el código de una clase debe permanecer, siempre que sea posible, protegido de modificaciones no controladas del exterior (código cliente).

Nuestra clase debe actuar como una especie de caja negra, que expone una interfaz para su uso, pero no debe permitir el acceso a la implementación de dicha interfaz.

Page 34: Sesion 02 clases en_vb_net

Encapsulación a través de propiedades

Supongamos que en nuestra clase Empleado necesitamos crear un elemento para guardar el sueldo pagado, pero el importe del sueldo deberá estar entre un rango de valores en función de la categoría del empleado.

Categoría Sueldo

1 0650 - 2000

2 2001 - 5000

3 5001 - 10000

4 > 10000

Page 35: Sesion 02 clases en_vb_net

Si abordamos este problema utilizando campos de clase, puede ocurrir lo que mostramos a continuación.

Page 36: Sesion 02 clases en_vb_net
Page 37: Sesion 02 clases en_vb_net
Page 38: Sesion 02 clases en_vb_net

¿Qué esta sucediendo? Hemos creado un objeto Empleado al que le hemos dado Categoría 1, sin embargo le estamos asignando un sueldo que no corresponde a su categoría, pero se nos permite hacerlo sin ningún problema, ya que no existe un medio de control que nos lo impida.

Afrontando el problema mediante el uso de propiedades, contamos con la ventaja de escribir código de validación en los correspondientes procedimientos Property, con ello encapsulamos el código de la clase, manteniendo a salvo las asignaciones incoherentes.

Page 39: Sesion 02 clases en_vb_net
Page 40: Sesion 02 clases en_vb_net

Propiedades de sólo lectura o sólo escritura

Se nos plantea un nuevo caso para nuestra clase Empleado, debemos guardar el valor del código de cuenta bancaria del empleado en el objeto, pero sin permitir que dicha información sea accesible desde el código cliente.

Igualmente y en función de los primeros dígitos de la cuenta bancaria, necesitamos mostrar el nombre de la entidad, pero sin permitir al código cliente su modificación, ya que esta va a ser siempre una operación que debe calcular el código de la clase.

Page 41: Sesion 02 clases en_vb_net
Page 42: Sesion 02 clases en_vb_net

Utilizando campos de clase no es posible resolver esta situación, ya que al ser de ámbito público, permiten tanto la escritura como lectura de sus valores.

Pero si empleamos propiedades, estas nos permiten la creación de las denominadas propiedades de sólo lectura o sólo escritura, en las que utilizando las palabras clave ReadOnly y WriteOnly, conseguimos que a una determinada propiedad, sólo podamos asignarle o recuperar su valor.

Page 43: Sesion 02 clases en_vb_net

Debido a esto, en una propiedad ReadOnly no podremos escribir el bloque Set, ya que no tendría sentido, puesto que no se va a utilizar.

Lo mismo podemos aplicar para una propiedad WriteOnly, sólo que en esta, el bloque que no podremos codificar será Get.

Page 44: Sesion 02 clases en_vb_net
Page 45: Sesion 02 clases en_vb_net
Page 46: Sesion 02 clases en_vb_net