ESCUELA POLITECNICA NACIONAL PRINCIPIOS DE ORIENTACION A OBJETOS

Anuncio
ESCUELA POLITECNICA
NACIONAL
PRINCIPIOS DE ORIENTACION A
OBJETOS
AUTOR:
Ing. Raúl Córdova Bayas, M.Sc.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• AGENDA:
– Demanda de la Orientación a Objetos
– Abstracción y Ocultamiento de Datos
– Conceptos fundamentales de la Orientación a
Objetos
– Problemas de los lenguajes procedurales
– Campos de demanda de la O.O.
– Lenguajes orientados a objetos.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Demanda de la Orientación a Objetos
– Cambio de concepción a la hora de analizar,
diseñar y codificar aplicaciones.
– Permite escribir software de forma que esté
organizado en la misma manera que el
problema que trata de modelar.
– Uniformidad: representación de objetos lleva
implícita el análisis, diseño y codificación.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Comprensión: datos y procedimientos que
los manipulan agrupados en clases, que se
corresponden con las estructuras de
información que el programa trata.
• Flexibilidad: al tener relacionados
procedimientos y datos, un cambio
realizado sobre ellos queda reflejado
automáticamente en cualquier lugar.
4
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Estabilidad: los datos cambian menos que
los procedimientos.
• Reusabilidad: se realizan programas
mediante la combinación de objetos ya
definidos.
• Confiabilidad: los programas son más
fiables, por estar desarrrollados sobre
objetos fáciles de manipular.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Abstracción y Ocultamiento de Datos
– La actividad fundamental que ocurre en el
desarrollo de un programa o sistema es el
reconocimiento de abstracciones.
– Los programas son desarrollados a través del
análisis repetitivo del problema y de su
subdivisión en subproblemas.
– Existen dos tipos de abstracciones: la
Abstracción Procedural y la Abstracción de
datos.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Abstracción procedural
– Es un sinónimo para procedimiento o función.
– Cuando en un programa hacemos una llamada
de función, ésta es encarada como una “caja
negra”, es decir, ella ejecuta una determinada
función, sin que el programa llamante necesite
saber cuál algoritmo está siendo empleado en la
ejecución de esta función.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Abstracción de Datos
– Puede ser definida como un conjunto de
operaciones - procedimientos o funciones agrupadas en torno de una estructura de datos
común y, que debe quedar “escondida” de las
demás abstracciones del programa.
– Información que está escondida se dice que está
encapsulada.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Las técnicas que dan enfoque especial a los
datos son denominadas Métodologías
Orientadas a Datos.
• Entre estas técnicas se destacan las
Metodologías de Diseño de Bases de Datos
y las Metodologías Orientadas a Objetos.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Tipos Abstractos de Datos
– Tipo Abstracto de Datos o ADT (Abstract Data
Type) es una estructura de programa, orientada
al encapsulamiento de la información.
– El ADT restringe la visibilidad del dato a su
interior, haciendo con que el resto del sistema
tenga acceso a este dato apenas a través de las
operaciones definidas sobre él.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Estas operaciones constituyen la interface
entre el ADT y el exterior y son
denominadas métodos de acceso o
simplemente métodos.
• Estructuras de datos
– Son conjuntos de informaciones agregadas y
con relaciones estructurales establecidas entre
sí.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Las estructuras de datos más comunes son
las tablas, listas, árboles, grafos, conjuntos y
archivos.
• El estudio de las estructuras de datos
envuelve propiedades y operaciones.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Propiedades:
– Tipo de estructura: estática (como una matriz) o
dinámica (como una lista).
– Forma de representación: organizada
secuencialmente en la memoria o manipulada a
través de punteros.
– Forma de alocación y desalocación de
memoria: estática o dinámica.
– Densidad de la estructura.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Operaciones:
–
–
–
–
–
Creación e inicialización
Inclusión o exclusión de información
Acceso a los datos almacenados
Alteración de datos
Duplicación o modificación de la estructura
PRINCIPIOS DE
ORIENTACION A OBJETOS
• La finalidad principal de los ADT´s es
permitir el uso de las estructuras de datos
sin que sea necesario el conocimiento de los
detalles internos de implementación de
estas estructuras.
• Todo proceso que desee manipular la
estructura, necesita utilizar el método de
acceso conveniente, codificado en la forma
de una función o procedimiento.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Criterios de utilización de los ADT´s:
– Definición: los usuarios deben conocer la
definición de todos los métodos de acceso
aplicables a la estructura.
– Encapsulamiento de la información: el usuario
no debe conocer los métodos de manipulación
interna de la estructura.
– Integridad: el usuario debe manipular la
estructura solamente a través de los métodos
definidos para ella.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Ventajas del encapsulamiento de datos y
uso de ADTs
– Consistencia: decurre de la utilización
disciplinada de los datos, una vez que pocos
procedimientos tienen acceso a ellos.
– Flexibilidad: decurre de la facilidad con que se
puede alterar la estructura de un ADT, sin que
las alteraciones se propaguen a través de todo el
software.
PRINCIPIOS DE
ORIENTACION A OBJETOS
• Ventajas del uso de los métodos
orientados a datos
– Permiten descomponer un sistema de acuerdo
con la realidad.
– Permiten que las alteraciones efectuadas en el
sistema queden más localizadas que en el caso
de una descomposición funcional.
PRINCIPIOS DE
ORIENTACION A OBJETOS
– Permiten que el sistema descompuesto por
objetos sea mapeado en más de una CPU, lo
que torna este tipo de programación mucho más
atrayente para el desarrollo de sistemas de
tiempo real.
CONCEPTOS BASICOS
• 1. Objeto Representado
– Entidad del mundo real que posee determinados
atributos e identidad, y que se diferencia de los
demás objetos.
– Los objetos representados pueden ser:
• cosas tangibles y/o visibles, como un vehículo o una
persona.
• algo que puede ser entendido intelectualmente o
algo sobre lo que puede ser dirigido un pensamiento
o una acción, como un contrato o una factura.
CONCEPTOS BASICOS
• Un objeto representa un item, una unidad o
una entidad individual e identificable, sea
real o abstracta, con un papel bien definido
en el dominio del problema a ser resuelto.
• En un sistema bancario, un cliente es un
objeto real, mientras que las cuentas
corrientes y de ahorros son objetos
abstractos.
CONCEPTOS BASICOS
• 2. Objeto Representante
– Agregado de datos y operaciones que
manipulan esos datos.
• Para los objetos representados indicados
antes, los representantes tendrían los
mismos nombres: cliente, cuenta corriente y
cuenta de ahorros.
CONCEPTOS BASICOS
• Los datos (atributos) de cliente serían CI,
nombre, dirección, teléfono, estado civil.
Sus operaciones: crear, eliminar, modificar,
consultar cliente.
• Para las cuentas, los datos serían: número,
saldo actual, fecha de apertura, saldo
promedio. Y sus operaciones: abrir, cerrar,
consultar, depositar, cobrar cheque, retirar.
CONCEPTOS BASICOS
• Los objetos representantes poseen
identidad, comportamiento y estado.
• La identidad está compuesta por sus
atributos: CI, nombre, etc.
• El estado de un objeto incluye todas las
usualmente estáticas propiedades del objeto,
más los usualmente dinámicos valores
actuales de cada una de estas propiedades.
CONCEPTOS BASICOS
• El estado de un objeto cuenta estará
formado por su atributos: número, saldo
actual, etc. más los valores actuales de esos
atributos, como 1617301, $/. 800.000, etc.
• El comportamiento es la forma como un
objeto actúa y reacciona, en términos de sus
cambios de estado y del paso de mensajes.
CONCEPTOS BASICOS
• Para una cuenta, un mensaje depositar haría
que el objeto reaccione y actúe sobre su
saldo actual, haciendo con que éste se
actualice, de forma que el saldo actual sea
igual al saldo actual (anterior) más el valor
del depósito.
CONCEPTOS BASICOS
• 3. Clasificación
– Este concepto permite agrupar objetos con la
misma estructura de datos o atributos y el
mismo comportamiento u operaciones en
clases.
– Dicho de otra manera, una clase es un conjunto
de objetos que comparten una estructura común
y un comportamiento común.
CONCEPTOS BASICOS
• La clase Cliente estará formada por todos
los objetos cliente, por cuanto todos ellos
poseen los mismos atributos (no los mismos
valores) y las mismas operaciones.
• Además, a partir de una clase se puede
instanciar un objeto, esto es, a los atributos
de una clase se les puede dar valores, con lo
que se crea un objeto.
CONCEPTOS BASICOS
• 4. Herencia
– Heredar significa compartir los atributos y las
operaciones entre las clases, en base a un
relacionamiento jerárquico.
– Una clase puede ser definida en forma amplia y
después ser refinada en sucesivas subclases.
– De esta manera, las propiedades y operaciones
no necesitan ser repetidas en cada subclase.
CONCEPTOS BASICOS
• La herencia permite factorar las propiedades
y operaciones comunes a diferentes clases,
colocándolas dentro de una superclase
común, para poder utilizarlas luego sin
volver a crearlas.
• En un banco, una clase cuenta sería
definida como superclase, y las clases
cuenta corriente y cuenta de ahorros
como subclases de cuenta.
CONCEPTOS BASICOS
• 5. Polimorfismo
– Es la característica de la orientación a objetos
que permite tener operaciones con el mismo
nombre, asociadas a diferentes objetos (clases),
pero actuando de manera diferente.
– Polimorfismo significa también que el
remitente de un mensaje a otro objeto, cuando
se hace un paso de mensaje, no necesita
conocer el objeto receptor.
CONCEPTOS BASICOS
• El objeto receptor del estímulo es quien
determina cómo un estímulo deberá ser
interpretado, no el remitente.
• El remitente solamente necesita saber que
otra instancia puede desempeñar un
determinado comportamiento y no a qué
clase la instancia pertenece y, por lo tanto,
qué operación realmente efectúa la acción.
CONCEPTOS BASICOS
• 6. Enlace dinámico
– Los objetos se enlazan dinámicamente a través
de los mensajes que intercambian.
– Así, un objeto cliente puede enviar el mensaje
depositar con argumentos número de cuenta y
depósito hacia un objeto cuenta.
– El objeto cuenta será el responsable de realizar
esta operación, haciendo saldo actual = saldo
actual + depósito.
LENGUAJES
PROCEDURALES
• Las aplicaciones que tratan con objetos
complejos tienen serios problemas para
garantizar la consistencia de los datos
almacenados.
• Como los lenguajes procedurales no dan
importancia a los datos, sino a los procesos,
no pueden enfrentar de forma adecuada el
manejo de este tipo de estructuras.
LENGUAJES
PROCEDURALES
• En objetos, en cambio, se pueden utilizar
estructuras de datos complejas que permiten
describir objetos complejos y, asegurar su
consistencia, mediante la distribución de la
complejidad funcional entre todos los
procesos que manipulan el objeto.
LENGUAJES
PROCEDURALES
• Las técnicas procedurales o técnicas
estructuradas, los lenguajes y las
herramientas procedurales, están basados en
la abstracción procedural, esto es,
reconocen como lo más importante dentro
de un sistema a los procesos.
LENGUAJES
PROCEDURALES
• Se basan también en la técnica top-down
(de arriba hacia abajo), de forma que el gran
proceso, que es el sistema mismo, es
descompuesto en procesos cada vez de
menor tamaño, hasta llegar a un nivel lo
suficientemente bajo como para que cada
proceso pueda ser descrito fácilmente.
LENGUAJES
PROCEDURALES
• Los procesos de menor nivel pueden
entonces ser implementados mediante un
lenguaje procedural, típicamente como
funciones, donde cada función posee unos
parámetros de entrada y devuelve,
opcionalmente, uno o más valores al
proceso que la llama.
LENGUAJES
PROCEDURALES
• La identificación de procesos y su
descomposición no es una tarea fácil,
además de ser subjetiva.
• Otro problema que se presenta es que, al
organizarse un programa en torno a los
procesos, y siendo estos mucho más
volátiles que los datos, el mantenimiento es
mucho más complejo.
LENGUAJES
PROCEDURALES
• Otro problema es que, al crecer el sistema,
esto es, al aumentarse requerimientos, la
flexibilidad no es adecuada.
• No es una tarea sencilla aumentar funciones
a un programa, puesto que éstas deben estar
claramente relacionadas con las demás
funciones, lo que provoca grandes cambios
en el sistema.
LENGUAJES
PROCEDURALES
• Otro problema de la programación
procedural es que, al originarse un error en
el sistema e intentar corregirlo, sucede el
fenómeno denominado efecto de onda, esto
es, un error se empieza a propagar por todo
el programa, haciendo muy difícil su
mantenimiento.
LENGUAJES
PROCEDURALES
• Otro problema en el diseño de software
procedural radica en la poca representación
de la realidad.
• Los programas procedurales no representan
directamente los objetos del mundo real,
sino que representan más bien, el
comportamiento de esos objetos: se tiene
así una representación indirecta de la
realidad.
LENGUAJES
PROCEDURALES
• Los lenguajes procedurales no poseen
herencia ni facilidad de reutilización.
• Tampoco existe la posibilidad de nombrar
dos funciones o procesos con el mismo
nombre: no existe polimorfismo.
• Las funciones y los datos se encuentran
separados, por lo que no existe
encapsulamiento.
LENGUAJES
PROCEDURALES
• Las funciones pueden accesar de manera
indiscriminada a los datos, quedando éstos
desprotegidos: puede haber entonces,
inconsistencia e inseguridad en la
información.
• Los datos normalmente se almacenan en
archivos, lo que hace que puedan ser
redundantes e inconsistentes: no existe
integración de datos y procesos.
CAMPOS DE DEMANDA
•
•
•
•
Programación orientada a eventos.
Programación visual.
Bases de datos orientadas a objetos.
Sistemas de manejo de objetos complejos:
voz, video, imagen.
• Servidores de objetos.
• INTERNET e INTRANET.
CAMPOS DE DEMANDA
•
•
•
•
•
Ambientes Cliente-Servidor.
Data Warehouse y Data Mart.
Sistemas de tiempo real.
Sistemas de alta confiabilidad.
Software básico, software de gestión,
software empotrado, software de
inteligencia artificial, sistemas expertos y
sistemas de información geográfica.
LENGUAJES ORIENTADOS A
OBJETOS
• C++
– Es un lenguaje de uso general basado en C.
– Es un lenguaje híbrido, pues incluye las
características estructuradas de C.
– Usa el concepto de clase como un nuevo tipo de
datos.
LENGUAJES VISUALES
• Son nuevos tipos de lenguajes que han
aparecido para desarrollar interfaces de
sistemas, básicamente para sistemas de
bases de datos.
• Poseen la característica de ser orientados a
eventos y objetos.
• Los eventos son estímulos que los objetos
reciben.
LENGUAJES VISUALES
• Los objetos son denominados visuales, pues
representan elementos visuales, como
ventanas (windows), botones, íconos y
otros, propios del estándar Windows.
• Los eventos pueden ser la pulsación de un
tecla o de un botón del mouse, que permiten
activar scripts asociados al objeto.
LENGUAJES VISUALES
• El núcleo de este tipo de lenguajes es el
controlador o dispatcher.
• Este controlador, que proporciona el
lenguaje o el sistema operativo, identifica
un evento del sistema, llamando a la
aplicación, rutina u objeto asociado.
LENGUAJES VISUALES
• Una vez terminada esta rutina, el
controlador toma el control otra vez para
aceptar nuevos eventos.
• Ejemplos:
–
–
–
–
–
Visual Basic v.4.0, 5.0, 6.0
Visual FoxPro v.3.0
Power Builder v. 5.0, 6.0, 7.0
SQL Windows
Java (para INTERNET)
Descargar