Este documento presenta conceptos básicos de programación orientada a objetos como clases, objetos, herencia, métodos, eventos y características como abstracción, encapsulamiento y ocultamiento. También describe características de bases de datos orientadas a objetos como herencia, relaciones, integridad y el modelo estándar ODMG.
3. Conceptos básicos
Clase: definiciones de las propiedades y
comportamiento de un tipo de objeto concreto.
La instanciación es la lectura de estas
definiciones y la creación de un objeto a partir
de ellas.
Objeto: entidad provista de un conjunto de
propiedades o atributos (datos) y de
comportamiento o funcionalidad (métodos) los
mismos que consecuentemente reaccionan a
eventos. Se corresponde con los objetos reales
del mundo que nos rodea, o a objetos internos
del sistema (del programa). Es una instancia a
una clase.
4. Herencia simple: Una clase implanta el tipo de
objeto. Una Subclase hereda propiedades de su clase
padre, una subclase puede heredar la estructura y los
métodos ó algunos de los métodos.
Herencia múltiple. Cuando una clase hereda de mas
de una superclase se tiene herencia múltiple.
Método: Algoritmo asociado a un objeto (o a una
clase de objetos), cuya ejecución se desencadena
tras la recepción de un "mensaje". Desde el punto de
vista del comportamiento, es lo que el objeto puede
hacer. Un método puede producir un cambio en las
propiedades del objeto, o la generación de un
"evento" con un nuevo mensaje para otro objeto del
sistema.
5. HAY VARIOS TIPOS DE MÉTODOS QUE SON
COMUNES A LA MAYORÍA DE LAS CLASES:
CONSTRUCTORES: Un constructor es un método que
tiene el mismo nombre que la clase. Se ejecuta
cuando se crea un objeto de una clase. Por lo tanto, un
constructor contiene instrucciones para inicializar las
variables de un objeto.
DESTRUCTORES: Un destructor es un método que se
utiliza para destruir un objeto.
No todos los lenguajes orientados a objetos poseen
destructores.
ACCESORES: Un accesor es un método que devuelve
el valor de un atributo privado de otro objeto. Así es
como los objetos externos pueden acceder a los datos
encapsulados.
6. MUTADORES: Un mutador es un método que
almacena un nuevo valor en un atributo.
De este modo es como objetos externos pueden
modificar los datos encapsulados.
SOBRECARGA DE MÉTODOS: Una de las
características de las clases es que pueden tener
métodos sobrecargados, que son métodos que
tienen el mismo nombre pero que necesitan distintos
datos para operar.
POLIMORFISMO: En general, las subclases
heredan los métodos de sus superclases y los
utilizan como si fueran suyos. Sin embargo, en
algunas ocasiones no es posible escribir un método
genérico que pueda ser usado por todas las
subclases.
7. Evento: Es un suceso en el sistema (tal como una
interacción del usuario con la máquina, o un
mensaje enviado por un objeto). El sistema
maneja el evento enviando el mensaje adecuado
al objeto pertinente. También se puede definir
como evento, a la reacción que puede
desencadenar un objeto, es decir la acción que
genera.
8. Características asociadas al
POO
Abstracción: consiste en captar las
características esenciales de un objeto, así
como su comportamiento.
Ejemplo.
¿Qué características semejantes tienen
todos los automóviles?
Todos tendrán una marca, un modelo,
número de chasis, peso, llantas, puertas,
ventanas, etc. Y en cuanto a su
comportamiento todos los automóviles
podrán acelerar, frenar, retroceder, etc.
9. Ocultamiento: Es la capacidad de
ocultar los detalles internos del
comportamiento de una Clase y exponer
sólo los detalles que sean necesarios
para el resto del sistema.
El ocultamiento permite 2 cosas:
restringir y controlar el uso de la Clase.
10. Encapsulamiento: Consiste en unir en la
Clase las características y
comportamientos, esto es, las variables y
métodos. Es tener todo esto es una sola
entidad.
La utilidad del encapsulamiento va por la
facilidad para manejar la complejidad, ya
que tendremos a las Clases como cajas
negras donde sólo se conoce el
comportamiento pero no los detalles
internos, y esto es conveniente porque nos
interesará será conocer qué hace la Clase
pero no será necesario saber cómo lo
hace.
11.
12. Los SGBDOO son creados gracias a la
falta de capacidad semántica del
modelo relacional con el propósito de
atender nuevos tipos de aplicaciones.
o Diseño y fabricación en ingeniería
o Bases de datos graficas y de imágenes
o Bases de datos científicas
o Sistemas de información geográficas
o Bases de datos multimedia
o Accesos uniforme a sistemas de múltiples
bases de datos
13. Otro motivo para la creación de las
bases de datos orientadas a objetos es
el creciente uso de los lenguajes
orientados a objetos para el desarrollo
de aplicaciones.
14. Los objetos han entrado en el mundo de las
bases de datos de formas:
SGBD orientados a objetos puros: son SGBD
basados completamente en el modelo
orientado a objetos.
SGBD híbridos u objeto–relacionales: son
SGBD relacionales que permiten almacenar
objetos en sus relaciones (tablas).
15. Relaciones
Las bases de datos relacionales representan las
relaciones mediante las claves ajenas.
las bases de datos orientadas a objetos
implementan sus relaciones incluyendo en cada
objeto los identificadores de los objetos con los que
se relaciona. Un identificador de objeto es un
atributo interno que posee cada objeto. Ni los
programadores, ni los usuarios que realizan
consultas de forma interactiva, ven o manipulan
estos identificadores directamente. Los
identificadores de los objetos los asigna el SGBD y
es el único que los utiliza.
16. Integridad de las relaciones
Para que las relaciones funcionen en una
base de datos orientada a objetos pura, los
identificadores de los objetos deben
corresponderse en ambos extremos de la
relación.
La clase Aparejador tiene un atributo de tipo
conjunto llamado supervisa. Del mismo modo,
la clase Obra tiene un atributo llamado es
supervisada. Para garantizar la integridad de
esta relación, un SGBD orientado a objetos
puro deberá permitir que el diseñador de la
base de datos pueda especificar donde debe
aparecer el identificador del objeto inverso
17. Ejemplo de relaciones
relationship set<Obra> supervisa
inverse Obra::es supervisada
en la clase Aparejador y:
relationshipAparejador es supervisada
inverse Aparejador::supervisa
18. HERENCIA EN BDOO
En teoría, una base de datos orientada a
objetos debe soportar dos tipos de
herencia: la relación ―es un‖ y la relación
―extiende‖.
La relación ―es un‖, también se conoce
como generalización–especialización, crea
una jerarquía donde las subclases son
tipos específicos de las superclases.
Con la relación ―extiende‖, sin embargo,
una clase expande su superclase en lugar
de estrecharla en un tipo más específico.
19. El modelo estándar ODMG
Un grupo de representantes de la industria de las bases
de datos formaron el ODMG (ObjectDatabase
Management Group) con el propósito de definir
estándares para los SGBD orientados a objetos.
Este grupo propuso un modelo estándar para la
semántica de los objetos de una base de datos.
Los principales componentes de la arquitectura ODMG
para un SGBD orientado a objetos son los
siguientes:
Modelo de objetos.
Lenguaje de definición de objetos (ODL).
Lenguaje de consulta de objetos (OQL).
Conexión con los lenguajes C++, Smalltalk y Java.
20. MODELO DE OBJETOS
El modelo de objetos ODMG permite que tanto los
diseños, como las implementaciones, sean portables
entre los sistemas que lo soportan. Dispone de las
siguientes primitivas de modelado:
Los componentes básicos de una base de datos
orientada a objetos son los objetos y los literales:
Un objeto es una instancia auto contenida de una
entidad de interés del mundo real. Los objetos tienen
algún tipo de identificador único.
Un literal es un valor especifico, como ―Amparo‖ o
36. Los literales no tienen identificadores.
21. Los objetos pueden ser transitorios o persistentes.
Los objetos transitorios existen mientras vive el
programa de aplicación que los ha creado.
Estos objetos se usan tanto como
almacenamiento temporal como para dar apoyo
al programa de aplicación que se está
ejecutando.
Los objetos persistentes son aquellos que se
almacenan en la base de datos.
22. Lenguaje de Definición de
Objetos (ODL)
ODL es un lenguaje de especificación para
definir tipos de objetos para sistemas
compatibles con ODMG. ODL es el
equivalente del DDL (lenguaje de
definición de datos) de los SGBD
tradicionales.
Define los atributos y las relaciones entre
tipos, y especifica la signatura de las
operaciones.
23.
24.
25.
26. Lenguaje de Consulta de Objetos
(OQL)
OQL es un lenguaje declarativo del tipo de SQL que permite
realizar consultas de modo eficiente sobre bases de datos
orientadas a objetos.
OQL no posee primitivas para modificar el estado de los
objetos ya que las modificaciones se pueden realizar
mediante los métodos que estos poseen.
La sintaxis básica de OQL es una estructura
SELECT...FROM...WHERE..., como en SQL.
Por ejemplo, la siguiente expresión obtiene los nombres de
los departamentos de la escuela de ‗Ingeniería‘:
SELECT D. Nombre
FROM d in departamentos
WHERE D. Escuela = `Ingenieria';
27.
28.
29. Existen otras maneras de realizar consultas en las
bases de datos orientadas a objetos que pueden
llegar a resultar más sencillas que por intermedio
del lenguaje OQL
Basada en patrones: A la consulta se le da un
objeto ‗patrón‘, al cual se le dan las mismas
características (dar valor a sus atributos) de
losobjetos que se están buscando. La consulta
devuelve el conjunto de objetos que tienen dichas
características.
30. Basadas en API: A través métodos de clases
especiales, se especifican de forma
programática las restricciones que deben
cumplir los datos a consultar.
Consultas nativas: Se crean nuevas clases
en las cuales se programan los condicionales
que se usarán durante la consulta.
32. CARACTERÍSTICAS DE BDOO
Se intenta definir un sistema de BDOO y describe las
principales características en tres grupos:
MANDATORIAS: son las que el Sistema debe
satisfacer a orden de tener un sistema de BDOO
o Extensibilidad.- Proporciona los tipos de datos como:
Caracter, booleano, String, etc.
o Concurrencia.- Permite que varios usuarios tengan
acceso a una BD al mismo tiempo.
o Recuperación.- Cuando se hace una transacción
pero no se puede realizar y se regresa al mismo
estado.
o Facilidad de "Consultas a Modo".- Esto es que se
tienen diferentes estándares.
33. OPCIONAL: Son las que pueden ser añadidas
para hacer el sistema mejor pero que no son
mandatorias,
o Herencia Múltiple: Tienen características de
padres diferentes y proporcionan mecanismos
para saber de 2 o más opciones cual
conviene.
o Distribución: Que se puede tener parte de una
BD en un servidor y otra parte en otro.
o Sistema de Representación: Forma en cómo
se presentan los esquemas.
34. ABIERTAS: Son los puntos donde el
diseñador puede hacer un número de
opciones y estas son el paradigma de la
programación, la representación del
sistema ó el tipo de sistema y su
uniformidad.
35. Ventajas de los SGBDOO
Mayor capacidad de modelado:
o Un objeto permite encapsular tanto un estado como un
comportamiento.
o Un objeto puede almacenar todas las relaciones que tenga
con otros objetos.
o Los objetos pueden agruparse para formar objetos
complejos (herencia).
Aplicabilidad:
o Se pueden construir nuevos tipos de datos a partir de los ya
existentes
o Agrupar propiedades comunes de diversas clases e
incluirlas en una superclase, lo que reduce la redundancia.
o Reusabilidad de clases, lo que repercute en una mayor
facilidad de mantenimiento y un menor tiempo de desarrollo.
36. Lenguaje de consulta más expresivo:
o El acceso navegacional desde un objeto al siguiente es la
forma más común de acceso a datos en un SGBDOO.
Mientras que SQL utiliza el acceso asociativo.
o El acceso navegacional es más adecuado para gestionar
operaciones como los despieces, consultas recursivas,
etc.
Adecuación a las aplicaciones avanzadas de base de
datos.
o Hay muchas áreas en las que los SGBD tradicionales no
han tenido excesivo éxito como el CAD, CASE, OIS,
sistemas multimedia, etc. en los que las capacidades de
modelado de los SGBDOO han hecho que esos sistemas
sí resulten efectivos para este tipo de aplicaciones.
Mayores prestaciones.
o Los SGBDOO proporcionan mejoras significativas de
rendimiento con respecto a los SGBD relacionales.
37. DESVENTAJAS DE LOS SGBDOO
Carencia de un modelo de datos universal.
o No hay ningún modelo de datos que esté
universalmente aceptado para los SGBDOO y
la mayoría de los modelos carecen una base
teórica.
Carencia de experiencia.
o Todavía no se dispone del nivel de experiencia
del que se dispone para los sistemas
tradicionales.
Carencia de estándares.
o Existe una carencia de estándares general
para los SGBDOO.
38. Competencia. Con respecto a los SGBDR y los
SGBDOR.
o Estos productos tienen una experiencia de uso
considerable. SQL es un estándar aprobado y ODBC es
un estándar de facto. Además, el modelo relacional tiene
una sólida base teórica y los productos relacionales
disponen de muchas herramientas de soporte que sirven
tanto para desarrolladores como para usuarios finales.
La optimización de consultas compromete la
encapsulación.
o La optimización de consultas requiere una compresión de
la implementación de los objetos, para poder acceder a la
base de datos de manera eficiente. Sin embargo, esto
compromete el concepto de encapsulación.
El modelo de objetos aún no tiene una teoría
matemática coherente que le sirva de base.
39. DIFERENCIA ENTRE EL MODELO
DE OBJETOS Y EL MODELO
RELACIONAL
SGBD Relacionales
Los datos residen en la base de datos y los procesos se
encuentran en las aplicaciones desarrolladas mediante el
lenguaje de datos asociado al SGBD(SQL) inmerso en un
lenguaje de programación.
Desarrollo bajo Sistemas Relacionales:
o Modelo conceptual de datos — modelo lógico
Eficientes para aplicaciones tradicionales de negocios.
40. SGBD Orientados a objetos
Gestionan objetos en los cuales están encapsulados
los datos y las operaciones que actúan sobre ellos.
Desarrollo bajo SGBDOO: un único modelo
subyacente, implementado en el SGBBOO, al que
pueden acceder directamente las aplicaciones.
Intentan satisfacer necesidades de aplicaciones
más complejas.
Característica clave: poder que dan al diseñador de
la base de datos tanto para especificar la estructura
de los objetos complejos como las operaciones que
se pueden aplicar a estos objetos.