Académique Documents
Professionnel Documents
Culture Documents
Unidad I.- Bases de Datos Orientada a Objetos Titular: Luis Armando Garca Eliseo
El propsito de los sistemas de bases de datos es la gestin de grandes cantidades de informacin. Las primeras bases de datos surgieron del desarrollo de los sistemas de gestin de archivos. Estos sistemas primero evolucionaron en bases de datos de red o en bases de datos jerrquicas y, ms tarde, en bases de datos relacionales. Entre las caractersticas comunes de estas viejas aplicaciones estn: Uniformidad. Existe un gran nmero de datos estructurados de manera similar, todos del mismo tamao (en bytes). Orientada en registros. Los datos bsicos constan de registros de longitud fija. Datos pequeos. Todos los registros son cortos. A menudo los registros tienen 80 bytes o menos, reflejando el tamao de las tarjetas perforadas, como era lo
El modelo orientado a objetos se basa en encapsular cdigo y datos en una nica entidad, llamada objeto. La interfaz entre un objeto y el resto del sistema se define mediante un conjunto de mensajes. El motivo de este enfoque puede ilustrarse considerando una base de datos de documentos en la que los documentos se preparan usando uno entre varios paquetes de software con formateador de texto. Para imprimir un documento debe
En general, 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 mtodo, que es un trozo de cdigo para implementar cada mensaje. Un mtodo devuelve un valor como respuesta al mensaje. El termino de mensaje en un contexto orientado a objetos no implica el uso de un mensaje fsico en una red de computadoras, sino que se refiere al paso de solicitudes entre objetos sin tener en cuenta detalles especficos de implementacin. Puesto que el nico interfaz externo que presenta un objeto es el conjunto de mensajes al que responde, es posible modificar la definicin de mtodos y variables sin afectar otros objetos. Tambin es posible sustituir una variable por un mtodo que calcule un valor. Por ejemplo, un objeto de documento puede contener una variable de tamao que contenga el numero de bytes de texto en el documento o bien un mtodo de tamao que calcule el tamao del documento leyendo el documento y contando el numero de bytes. La capacidad de modificar la definicin de un objeto sin afectar al resto del sistema est considerada como una de las mayores ventajas del modelo de programacin orientado a objetos.
1.3
Jerarqua de Clases
Normalmente en una base de dato existen muchos objetos similares. Por similar queremos decir que responden a los mismos mensajes, utilizan los mismos mtodos y tienen variables del mismo nombre y tipo. Sera un trabajo intil definir cada uno de estos objetos por separado. Por tanto, agrupamos los objetos similares para que formen una clase. A cada uno de estos objetos se les llama instancias de su clase. Todos los objetos de una clase comparten una definicin comn. Aunque difieran en los valores asignados a las variables. Ejemplo de clases en las bases de datos del banco son los clientes, las cuentas y los prstamos. El concepto de clases es similar al concepto de tipos abstractos de datos. Sin embargo, en el concepto de clase existen varios aspectos adicionales ms all de los de los tipos abstractos de datos. Para representar estas propiedades adicionales, tratamos cada clase como si fuera un objeto. Un objeto clase incluye: Una variable con valores es un conjunto cuyo valor es el conjunto de todos los objetos que son instancias de la clase. Implementacin de un mtodo para el nuevo mensaje, el cual crea una nueva instancia de la clase. Un esquema de base de datos orientada a objetos normalmente requiere un gran numero de clases. Sin embargo, a menudo se da el caso de que varias clases son similares. Por ejemplo, supngase que tenemos una base orientada a objetos para la aplicacin bancaria. Sera de esperar que la clase de cliente del banco fuera similar a la clase de empleados del banco en la definicin de variables de nombre, direccin, nmero de telfono, etc. Sin embargo existen variables especificas para los empleados (por ejemplo tasa-credito). Sera deseable definir una representacin para las variables comunes en un sitio. Esto puede hacerse slo si los empleados y los clientes estn combinados en una clase.
Empleado Cliente
Director
Cajero
Secretaria
Por brevedad no presentamos los mtodos asociados a estas clases, aunque estaran incluidos en la definicin completa de la base de datos bancaria.
incluyendo aquellos que sean instancias de Director, Cajero y Secretaria. empleado que no sean instancias de Director, ni de Cajero, ni de Secretaria. Normalmente, en sistemas orientados a objetos se elige la ltima forma. Es posible determinar el conjunto de todos los objetos de empleado en este caso tomando la unin de aquellos objetos asociados a todas las clases en el subrbol con raz en Empleado. Como observamos anteriormente, la jerarqua de clase/subclase es similar al concepto de especializacin en el modelo entidad relacin. Decimos que Cajero es una especializacin de Empleado porque el conjunto de todos los cajeros es un subconjunto de todos los empleados. Es decir, cada cajero es un empleado.
1.4
Herencia Mltiple
En la mayora de los casos, una organizacin jerrquica de clases es la adecuada para describir aplicaciones. En tales casos, todas las superclases de una clase son antepasados de otra en la jerarqua. Sin embargo, existen situaciones que no pueden representarse bien en una jerarqua de clases. Supngase que queremos distinguir entre cajeros y secretarias a tiempo completo y a tiempos partidos en el ejemplo de la figura ya mencionada. Adems supngase que necesitamos variables y mtodos diferentes para representar estos dos tipos de empleados. Podemos crear las subclases: Cajero-tiempo-patido, Cajero-tiempocompleto, Secretaria-tiempo-partido, Secretaria-tiempo-completo. La jerarqua resultante que se muestra a continuacin no proporciona un buen modelo de la empresa bancaria por varias razones: Persona
Empleado Cliente
Director
Cajero
Secretaria
Cajero a tiempo Cajero a tiempoSecretaria a Tiempo Partido completo Completo Como observamos anteriormente, existen ciertas
especficos de los empleados a tiempo completos y otros especficos de los de tiempo partido. En la figura anterior las variables y los mtodos para los empleados a tiempo completo deben estar definidas dos veces, una para Secretaria-tiempo-completo y otra para Cajero-tiempo-completo. Para los empleados a tiempo partidos existe una redundancia parecida. Esta redundancia no es deseable, ya que cada cambio de las propiedades de los empleados a tiempo completo o partido debe hacerse en dos sitios, lo que puede conducir a inconsistencias. La jerarqua no tiene forma de representar empleados que no sean cajeros ni secretarias, a menos que la ampliemos de manera que incluya las clases Empleado-tiempo-completo y empleados-tiempo-partido. Si tuviramos varias clasificaciones de trabajo en vez de las dos de este ejemplo sencillo, las limitaciones del modelo llegaran a ser ms aparentes. El concepto de Herencia Mltiple trata los problemas que acabamos de observar en el modelo orientado a objetos; este concepto de refiere a la capacidad de las clases para superclases. La relacin Persona clase/subclase se representa por un grafo con raz aciclica dirigido (DAG) en el que una clase puede tener ms de una superclase. Volvamos al ejemplo bancario. Utilizando un DAG podemos definir propiedades de empleo a tiempo completo y a Empleado Cajero a tiempo Cajero a tiempoSecretaria a completo partido Tiempo completo Director Cajero Secretaria Cliente Secretaria a 10 Tiempo partido heredar variables y mtodos de mltiples
Empleado Cliente
Director
Cajero
Secretaria
Utilizando DAG en la figura mencionada, podemos representar los empleados a tiempo completo y a tiempo partido que no son cajeros ni secretarias como instancias de las clases Tiempo-completo y Tiempo-partido, respectivamente. Cuando se emplea la herencia mltiple es posible que se d ambigedad en el caso en que pueda heredarse la misma variable o mtodo de ms de una superclase. En el ejemplo bancario, supngase que en vez de definir salario para la clase Empleado, definimos una variable pago para cada una de las clases completo, Tiempo-partido, Cajero y Secretaria como sigue: Tiempo-completo: pago es un entero de 0 a 100 000 que contiene el salario anual. Tiempo-partido: pago es un entero de 0 a 20 que contiene una fraccin de pago por hora. Cajero: pago es un entero de 0 a 20 000 que contiene el salario anual. Secretaria: pago es un entero entre 0 a 25 000 que contiene el salario anual. Tiempo-
11
Considrese la clase Secretaria-tiempo-partido. Podra heredar la definicin de pago de Tiempo-partido o de Secretaria. El resultado es diferente, dependiendo de la eleccin que se haga. Entre las opciones que pueden elegir las diversas implementaciones del modelo orientado a objetos estn las siguientes: Incluir las dos variables, renombrarlas como Tiempo-partido.pago y Secretaria.pago. Elegir una u otra basndose en el orden en el que se crearon las clases Tiempopartido y Secretaria. Obligar al usuario a que haga la eleccin en el momento en que se define la clase secretaria-tiempo-partido. No se ha aceptado ninguna solucin simple como la mejor. Cabe mencionar que no todos los casos de herencia mltiple conducen a ambigedad. Si en vez de definir pago, conservamos la definicin de la variable salario en la clase empleado, y no la definicin de la variable salario en la clase Empleado, y no la definicin en ningn otro sitio, entonces las clases Tiempo-partido, Tiempo-completo, Secretaria Tiempopartido, Tiempo-completo, Secretaria y Cajero heredan todas salario de Empleado. Puesto que las cuatro clases comparten la misma definicin de salario, no resulta ninguna ambigedad cuando la Secretaria-tiempo-partido, Seecretaria-tiempocompleto, etc., heredan salario.
1.5
Identidad de objetos
Los objetos en una base de datos orientada a objetos, normalmente corresponden a una entidad de la empresa que est modelando la base de datos. Una entidad conserva su identidad aun cuando algunas de sus propiedades cambien con el tiempo. Igualmente, un objeto conserva su identidad aun cuando algunos o todos los valores de las variables o las definiciones de los mtodos cambien con el tiempo. Este concepto de identidad no se aplica a las tuplas de una base de datos
12
13
reorganizacin de la base de datos puede resultar en un nuevo esquema de bases de datos con relaciones con nuevos nombres. La forma persistente de identidad es la que se requiere en los sistemas orientados a objetos. Estas formas de identidad sirven para distinguir entre identidad en sistemas orientados a objetos y punteros en organizacin fsica de datos. Los punteros de la memoria principal o de la memoria virtual solamente ofrecen identidad de Intraprograma. Los punteros a datos de un sistema de archivos en disco solamente ofrecen identidad de interprograma. As, la identidad de objetos es decir, la identidad persistente es una nocin ms fuerte que la que proporcionan los punteros. 1.6 Contenido de Objetos
Anteriormente observamos que el valor de una variable de un objeto es ella misma un objeto. Esto crea una jerarqua de contenido entre los objetos. Un objeto O2 es el hijo de un objeto O1 y si O1 contiene O2; es decir, O2 es el valor de una variable de O1. Los objetos que contienen otros objetos se denominan objetos compuestos. Para ilustrar el contenido considrese la base de datos simplificada de diseo de sistemas de computadoras de la siguiente figura. La base de datos contiene informacin en varios sistemas de computadoras. Cada sistema de computadoras contiene un conjunto de tarjetas, un conjunto de buses, un conjunto de dispositivos y un conjunto de chips y los buses proporcionan un conjunto de interfaces. Sistema de computadoras complejos o
Tarjeta
Bus
Dispositivo
Conjunto Instrucciones
Chips
Interfaces
14
La jerarqua de la figura muestra la relacin de contenido entre los objetos de una forma esquemtica listando los nombres de las clases en vez de los objetos individuales. Considrese la clase Sistema-computadores. Puede incluir las variables nombre-computador, id-proyecto, gestor, fecha-terminacin, las cuales contienen datos descriptivos acerca de una instancia de la clase. Aunque los valores de estas variables se consideran objetos, son instancias de tipos de datos estndar (como cadenas de caracteres) que se han implementado directamente a un nivel bajo por razones de rendimiento. La clase Sistema-computadores tambin incluyen las variables tarjeta, bus, dispositivo y conjunto-instrucciones. Estas variables toman como valores conjuntos de objetos de las clases Tarjeta, Bus, Dispositivo y Conjunto-instrucciones, respectivamente. En determinadas aplicaciones, un objeto puede estar contenido en varios objetos. En tales casos, la relacin de contenido se representa por un DAG en vez de mediante una jerarqua. El contenido es un concepto importante en los sistemas orientados a objetos porque permite que distintos usuarios vean los datos en diferentes granualidades.
1.7
Organizacin Fsica
La estructura de las bases de datos orientadas a objetos no presenta la uniformidad de las bases de datos relacionales. Para construir una estructura fcil de mantener, comnmente los objetos se representan as: Determinadas clases se tratan como clases bsicas de bloques que se construyen, que el sistema de computadoras implementa directamente.
15
campo contiene el valor del objeto para instancias de las clases bsicas, o bien el identificador del objeto por instancias de las clases que no sean bsicas.
enlazada de los objetos que son miembros del conjunto. La estructura fsica hace que sea posible utilizar registros de longitud fija para implementar una base de datos orientada a objetos, aunque la modificacin del esquema puede complicar esto. No todas las variables encajan convenientemente en la estructura que hemos descrito arriba. Algunas de las aplicaciones que se citaron al inicio de este tema incluyen tipos de datos altamente especializados que son grandes fsicamente y que, por razones practicas, normalmente se manipulan mediante programas de aplicaciones que no son parte del conjunto de mtodos con las clases: Datos de texto. El texto, normalmente se trata como una cadena de bytes que manipulan los editores y los formateadores. Datos de Audio. Comnmente, los datos de audio son una representacin comprimida digitalizada del habla que manejan aplicaciones software separada. Datos de vdeo y grficas. Los datos de vdeo pueden representarse como un mapa de bytes o como un conjunto de lneas, cajas y otros objetos geomtricos. Aunque algunos datos grficos a menudo se gestionan dentro del sistema de base de datos, en muchos casos se utilizan aplicaciones software especiales. Un ejemplo de los ultimo es un diseo VLSI. 1.8 Consultas orientadas a objetos
16
17