2. 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.
3. 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.
4. 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.)
5. 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.
6. 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.
7. 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.
8. 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.
9. 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á.
10. 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.
11. 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.
12. 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.
13. 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
14. 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.
15. 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.
16. 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
17. 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()
18. 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()
19. 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)
20. 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
21. 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
22. CREACIÓN DE UNA CLASE
Ejecutar Microsoft Visual Studio y crear un
nuevo Proyecto.
Diseñe el siguiente Formulario.
txtIdentificador btnDatos
23. 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
25. 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.
26. 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.
27. 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.
28. 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.
29. 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.
30. 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.
33. 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.
34. 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
35. Si abordamos este problema utilizando
campos de clase, puede ocurrir lo que
mostramos a continuación.
36.
37.
38. ¿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.
39.
40. 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.
41.
42. 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.
43. 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.