Bases de Datos I Unidad VII BASES DE DATOS I UNIDAD VII BASES DE DATOS ORIENTADAS A OBJETOS 7.1 BASES DE DATOS ORIENTADAS A OBJETOS La programación orientada a objetos es muy versátil. No se restringe únicamenteal diseño de programas, sino que es posible aplicar los mismo conceptos al diseño de bases de datos. El uso de una técnica orientada a objetos trasciende a laelección de la base de datos. El uso de esta técnica en el diseño de bases de datos aporta las cualidadesde esta metodología a nuestro diseño. Eficiencia, coherencia y un menor costea la hora de actualizar la estructura de las bases de datos son los principalesbeneficios que aporta. Como valor añadido, el uso de una misma técnica en el diseño, tanto de losprogramas como de las bases de datos proporciona coherencia a nuestro sistema. Las bases de datos orientadas a objetos unen dos tecnologías: La de las bases de datos y la de los lenguajes orientados a objetos. LosLenguajes OOP aportan gran capacidad en la manipulación de datos, pero noimplementan el almacenamiento y consulta de grandes volúmenes de datos. Por el contrario, las bases de datos convencionales aportan un dominio de lastécnicas de almacenamiento y consulta de grandes volúmenes de datos, aunque sucapacidad de manipulación es limitada. Las bases de datos orientadas a objetos pretenden unir la capacidad demanipulación de datos de los OPP con la capacidad de almacenamiento y consultade los DBMS. Instituto Tecnológico de Ciudad.Juárez 98 Bases de Datos I Unidad VII Las aplicaciones convencionales que agrupan programas y bases de datos, separan ambos entornos de manera clara. El desarrollador usa técnicas procedurales para la descomposición deproblemas y su codificación en funciones. Posteriormente se emplean técnicascomo las de Entidad – Relación para el diseño de la base de datos. Su codificación suele realizarse en un lenguaje de alto nivel como C, quelleva embebido código SQL. El término embebido describe la inclusión de un móduloescrito bajo otro lenguaje de programación dentro del código fuente. Elcompilador incorpora durante la fase de enlace el Run-Time correspondiente paraque pueda funcionar el código embebido. Como podrá observar, esta técnica presenta defectos evidentes: Por una parte, se utilizan diferentes técnicas para el desarrollo de ambosapartados, por lo que la tarea de diseño no se puede considerara como un todoúnico Por otra y en gran medida debida a la primera, los lenguajes que se utilizanpara la implementación difieren, dificultando las labores de mantenimiento. Ejemplos Como habrá podido observar a lo largo de esta monografía, nuestro propósitono ha siso el de enseñar una metodología ni la enseñanza de un determinadolenguaje de programación. El objetivo es por el contrario dar una panorámica de los conceptos de laprogramación orientada a objetos, de las metodologías y de las técnicas dedesarrollo de aplicaciones. Instituto Tecnológico de Ciudad.Juárez 99 Bases de Datos I Unidad VII En este apartado nos centraremos en lo aspectos más importantes en eldesarrollo de aplicaciones bajo OOP: identificación de objetos y análisis deasociaciones. 7.1.1 OBJETOS Y ASOCIACIONES. La parte más importante de todo diseño es el punto de entrada de ladefinición de requerimientos. En la observación atenta de los requerimientosse pueden hallar la mayoría de los objetos pertenecientes a nuestra aplicación. En este ejemplo nos centraremos en la identificación de objetos a partir delos requerimientos básicos de la aplicación. Este análisis es el primero que debe hacerse dentro de OOP y es también útilpara cualquier otra técnica de programación. Analicemos la siguiente definición de requerimientos: El <<sistema de tratamiento de información documental>> es ungestor de <<documentos>>, de tal manera que puedan clasificar en unoo varios <<índices>>, recuperar para su modificación, visualizar,para su consulta, reclasificar, archivar y destruir. El <<sistema>>procesa la petición del <<usuario>>, devolviendo un mensaje eindicando el éxito o el fracaso de la petición. De una manera general hemos indicado entre comillas los sustantivos y encursiva los verbos. De esta forma hemos identificado los objetos principales dela aplicación y las operaciones asociadas a cada uno de los objetos. Observe el siguiente diagrama. Instituto Tecnológico de Ciudad.Juárez 100 Bases de Datos I Unidad VII Hemos traducido los requerimientos a un conjunto de objetos. Estos están inconexos entre sí, pero aplicando la <<lógica>>podemos ver las relaciones que existen entre ellos. Sin salirnos de lasespecificaciones de la aplicación, vemos que existen las asociaciones queaparecen en la siguiente figura: Instituto Tecnológico de Ciudad.Juárez 101 Bases de Datos I Unidad VII Como podemos observar, algunas asociaciones cíclicas como Indice <>Documento. Estas asociaciones pueden simplificarse. También existen otras implícitasque examinaremos más adelante, como Usuario->Documento->Indice. Observemos gráficamente las asociaciones que mantienen los objetos entre síen la siguiente figura Como puede verse hay dos asociaciones sospechosas, ya que no son verbos sinolos sustantivos <<petición>> y <<mensaje>>. Estas dosasociaciones se pueden <<objetivar>> de tal manera que reúnan lascondiciones de un objeto. Para ello debemos volver a las especificacionesiniciales. Cuando se archiva un documento se debe indicar el nombre del documento asícomo los índices a los que se va a asociar. Las peticiones de recuperacióndeben incluir un índice y el nombre del archivo. Las consultas a los índicesdeben incluir el nombre del indice y una condición. A partir de este análisis se puede depurar con HERENCIA y posteriormenterealizar un <<ajuste fino>> Instituto Tecnológico de Ciudad.Juárez 102 Bases de Datos I Unidad VII 7.1.2 LA RELACION DE HERENCIA. A continuación vamos a centrarnos en la relación de herencia. Como ya sabemos ésta puede agrupar objeto son similares característica o bien especializar objetos a partir de una genérico. Observemos nuevamente los requerimientos de nuestro sistema: 7.2 Aplicaciones Orientadas a Objetos Cómo afectan los requerimientos anteriores para la elección de un lenguaje orientado a objetos como herramienta para el desarrollo de nuestros programas? Claridad Al ligar de forma evidente la estructura de la información con losprocedimientos que la manipulan, los programas ganan en claridad a la hora dedesarrollarlos y mantenerlos. Esto supone una ventaja frente a los lenguajesprocedurales , aunque éstos podrían suplir esta deficiencia mediante unacorrecta elección de los nombres de las variables y funciones, lo que sedenomina una <<oportuna codificación>>. Instituto Tecnológico de Ciudad.Juárez 103 Bases de Datos I Unidad VII Complejidad Cuando la complejidad de un problema es abarcable por una sola persona, resolverlo con una herramienta u otra no aporta grandes ventajas. Pero cuandoeste desarrollo la tiene que realizar un equipo grande, debe existir una formapara aislar partes de problema. Uno de los problemas más comúnes, y a su vez más simples de solucionar enel diseño de grandes sistemas, es el nombre que se da a las funciones y quetipo de datos manipulan éstas. En la realización de un sistema informático se utiliza un equipo de variaspersonas. El trabajo se divide en tres áreas funcionales: una parte del equipose encarga del interface de usuario, otra de la manipulación de datos y, la últimadel diseño de salidas impresas. Cada quipo utiliza funciones y datos suministrados por los otros miembros delequipo y a su vez diseña funciones para su uso interno y para el uso del restode los grupos. Si no se realiza la división del trabajo de forma adecuada puedeproducirse el caos. He aquí una pequeña enumeración de los problemas que sepueden encontrar. Las funciones desarrolladas por cada uno de los grupos no encajan con las necesidades de los demás. Otros grupos han elegido nombres de variables y funciones similares a los elegidos por nuestro grupo. Estas funciones y variables son prácticamente iguales a las desarrolladas por nosotros, pero varían ligeramente en el tratamiento de la información, por lo que no podemos sustituir nuestras funciones. Ambas deben coexistir aumentando la complejidad del programa de manera innecesaria. El resto de los grupos sólo cubren determinados aspectos de la información a tratar, pero no proporcionan toda la información necesaria para que el programa Instituto Tecnológico de Ciudad.Juárez 104 Bases de Datos I Unidad VII funcione. El resto de información debe suministrarse suplantando parte de la funcionalidad destinada a otros grupos. Algunas de las modificaciones que realizamos sobre variables locales o globales producen resultados imprevistos en el resto de los módulos. Tamaño Las aplicaciones orientadas a objetos son ideales para la realización deprogramas de gran tamaño. Las facilidades de encapsulación y asociación delas funciones a los datos que manipulan, simplifican el proceso de desarrollo.De hecho las bases de datos orientadas a objetos suponen un gran adelanto, yaque aúnan la flexibilidad en la manipulación de los OOP con la capacidad deconsulta de un DBMS (Data Base Management System). Relación entre Datos Por el mismo motivo se verán beneficiados aquellos programas que impliquenuna relación compleja entre los datos. Este tipo de complejidad permite lautilización de todas las ventajas de los lenguajes de programación orientadosa objetos. Propiedades como la herencia (donde los objetos pueden heredar estructura y operaciones de objetos predecesores), la encapsulación, etc.Muestran en este tipo de programas todas sus ventajas. Rapidez En este aspecto, los lenguajes orientados a objetos muestran una claradesventaja frente a otros lenguajes que se acercan más a las especificacionesde la máquina. Si la rapidez es crítica, puede elegir un lenguaje deprogramación como C, que aporta toda la funcionalidad de los lenguajesorientados a objetos con la rapidez y la compatibilidad de C. Instituto Tecnológico de Ciudad.Juárez 105 Bases de Datos I Unidad VII Gestión de recursos Las aplicaciones orientadas a objetos demandan normalmente más recursos delsistema que las aplicaciones procedurales. La creación dinámica de objetos,que ocupa un lugar en la memoria del ordenador, puede acarrear graves problemas.Una de las soluciones, que incluye alguno delos lenguajes OOP, es liberar amenudo el espacio que los objetos dejan de utilizar. Este procedimiento deoptimización como garbage collection (recolección de basura, implementado enjava), minimiza los efecto de la creación dinámica de objetos. Interface de usuario. El interface de usuario es uno de los aspectos más importantes en laprogramación actual. La aparición de sistemas de explotación que soportan uninterface gráfico de usuario como Windows, X-Windows o Presentation Managerhace que la mayoría de los usuarios prefieran que sus programas corran bajoeste tipo de interface. Este es uno de los puntos fuertes para la elección deun lenguaje OOP. La mayoría de los interfaces gráficos actuales han sido diseñadoso rediseñados en base a la OOP. Existen en el mercado librerías de clases que soportan todos los dispositivos de control de ventanas como menús, combo box,listas, barras de herramientas, etc. Lenguajes orientados a objetos Los lenguajes OOP implementan de manera distinta los conceptos de programaciónorientada a objetos. No existe el lenguaje perfecto capaz de satisfacer todaslas necesidades y que se adapte a todos los estilos. A Continuación unos consejos que nos facilitarán la elección del lenguajede programación adecuado: Si los programas se van a sentar en una cualidad concreta de los OOP como herencia, elija el que mejor soporte le dé. Los lenguajes interpretados sirven para realizar un desarrollo rápido o para aquellos programas que necesiten una actualización constante. Si el programa Instituto Tecnológico de Ciudad.Juárez 106 Bases de Datos I Unidad VII necesita rapidez o es crítico respecto al tamaño, considere el uso de lenguajes que incorporen compilador. No <<reinvente la rueda>>. Si el lenguaje le proporciona una librería de clases no intente reescribrlas de nuevo, use las que le ofrece el sistema. Es más tome como factor de elección las librerías de clases que el compilador incorpora o que estén disponibles en el mercado. Si necesita mejorar la calidad del programa previniendo errores, utilice un lenguaje que le permita definir las variables con sus tipos asociados. Si la memoria del sistema es limitada, utilice lenguajes que permitan la creación y destrucción automática de clases dependiendo de su utilización. ---------------------------------------------------------------------------------------------------------- 7.3 El Modelo Orientado a Objetos Las aplicaciones de las bases de datos en áreas como el diseño asistido por computadora, la ingeniería de software y el procesamiento de documentos no se ajustan al conjunto de suposiciones que se hacen para aplicaciones del estilo de procesamiento de datos. El modelo de datos orientado a objetos se ha propuesto para tratar algunos de estos nuevos tipos de aplicaciones. El modelo de bases de datos orientado a objetos es una adaptación a los sistemas de bases de datos. Se basa en el concepto de encapsulamiento de datos y código que opera sobre estos en un objeto. Los objetos estructurados se agrupan en clases. El conjunto de clases esta estructurado en sub y superclases basado en una extensión del concepto ISA del modelo Entidad - Relación. Puesto que el valor de un dato en un objeto también es un objeto, es posible representar el contenido del objeto dando como resultado un objeto compuesto. El propósito de los sistemas de bases de datos es la gestión de grandes cantidades de información. Las primeras bases de datos surgieron del desarrollo de los sistemas de gestión de archivos. Estos sistemas primero evolucionaron en bases de datos de red o en bases de datos jerárquicas y, más tarde, en bases de datos relacionales. Instituto Tecnológico de Ciudad.Juárez 107 Bases de Datos I Unidad VII Estructura de objetos El modelo orientado a objetos se basa en encapsular código y datos en una única unidad, llamada objeto. El interfaz entre un objeto y el resto del sistema se define mediante un conjunto de mensajes. Un objeto tiene asociado: un conjunto de variables que contienen los datos del objeto. El valor de cada variable es un objeto. Un conjunto de mensajes a los que el objeto responde. Un método, que es un trozo de código para implementar cada mensaje. Un método devuelve un valor como respuesta al mensaje. El término mensaje en un contexto orientado a objetos, no implica el uso de un mensaje físico en una red de computadoras, si no que se refiere al paso de solicitudes entre objetos sin tener en cuenta detalles específicos de implementación. La capacidad de modificar la definición de un objeto sin afectar al resto del sistema está considerada como una de las mayores ventajas del modelo de programación orientado a objetos. Jerarquía de clases En una base de datos existen objetos que responden a los mismos mensajes, utilizan los mismos métodos y tienen variables del mismo nombre y tipo. Sería inútil definir cada uno de estos objetos por separado por lo tanto se agrupan los objetos similares para que formen una clase, a cada uno de estos objetos se le llama instancia de su clase. Todos los objetos de su clase comparten una definición común, aunque difieran en los valores asignados a las variables. Así que básicamente las bases de datos orientados a objetos tienen la finalidad de agrupar aquellos elementos que sean semejantes en las entidades para formar un clase, dejando por separado aquellas que no lo son en otra clase. Instituto Tecnológico de Ciudad.Juárez 108 Bases de Datos I Unidad VII Por ejemplo: Retomemos la relación alumno-cursa-materia agregándole la entidad maestro; donde los atributos considerados para cada uno son alumno: Nombre, Dirección, Teléfono, Especialidad, Semestre, Grupo; Maestro: Nombre, Dirección, Teléfono, Número económico, Plaza, RFC; Materia: Nombre, Créditos, Clave. Los atributos de nombre, dirección y teléfono se repiten en la entidad alumno y maestro, así que podemos agrupar estos elementos para formar la clase Persona con dichos campos. Quedando por separado en alumno: Especialidad, semestre, Grupo. Y en maestro: Número económico, Plaza y RFC; la materia no entra en la agrupación (Clase persona) ya que la clase específica los datos de solo personas, así que queda como clase materia. Herencia Las clases en un sistema orientado a objetos se representan en forma jerárquica como en el diagrama anterior, así que las propiedades o características del elemento persona las contendrán (heredaran) los elementos alumno y maestro. Decimos que tanto la entidad Alumno y maestro son subclases de la clase persona este concepto es similar al utilizado en la de especialización (la relación ISA) del modelo E-R. Se pueden crear muchas agrupaciones (clases) para simplificar un modelo así que una jerarquía (en forma gráfica) puede quedar muy extensa, en estos casos tenemos que tener bien delimitados los elementos que intervienen en una clase y aquellos objetos que las heredan. Consultas orientadas a objetos Los lenguajes de programación orientados a objetos requieren que toda la interacción con objetos se realiza mediante el envío de mensajes. Consideremos el ejemplo de alumno-cursa-materia deseamos realizar la consulta de los alumnos que cursan la materia de Base de Datos 1, para realizar esta consulta se tendría que enviar un mensaje a cada instancia alumno Instituto Tecnológico de Ciudad.Juárez 109 Bases de Datos I Unidad VII Así un lenguaje de consultas para un sistema de bases de datos orientado a objetos debe incluir tanto el modelo de pasar el mensaje de objeto a objeto como el modelo de pasar el mensaje de conjunto en conjunto. Complejidad de Modificación En base de datos orientados a objetos pueden existir los siguientes cambios: Adición de una nueva clase: Para realizar este proceso, la nueva clase debe colocarse en la jerarquía de clase o subclase cuidando las variables o métodos de herencia correspondientes. Eliminación de una clase: Se requiere la realización de varias operaciones, se debe de cuidar los elementos que se han heredado de esa clase a otras y reestructurar la jerarquía. En sí la estructuración de modelos orientados a objetos simplifica una estructura evitando elementos o variables repetidas en diversas entidades, sin embargo el precio de esto es dedicarle un minucioso cuidado a las relaciones entre las clases cuando en modelo es complejo, la dificultad del manejo de objetos radica en la complejidad de las modificaciones y eliminaciones de clases, ya que de tener variables que heredan otros objetos se tiene que realizar una reestructuración que involucra una serie de pasos complejos. Instituto Tecnológico de Ciudad.Juárez 110