UNIVERSIDAD DE LOS ANDES
FACULTAD DE INGENIERÍA
POSTGRADO EN COMPUTACIÓN


Tema 2. Modelos de objetos

Prof. Isabel Besembel Carrera
Núcleo La Hechicera. Edif. Economía. 3er. piso. Ala 3S. Mérida. Venezuela.

Sesión 2. Modelos lógicos. Tabla de contenido:

Modelo de objetos OMG (Object Management Group):
Introducción
Arquitectura
Conceptos básicos
CORBA
Interfaces CORBA
Tipos
Operaciones y peticiones
Modelo de objetos ODMG-93 (Object Database Management Group):
Introducción
Jerarquía básica de tipos
Propiedades: Atributos y relaciones
Modelado de comportamiento
Objetos estructurados
Colecciones
Jerarquía de tipos
Transacciones
Referencia bibliográfica OMG:
Kim, W. Modern database systems. The object model, interoperability, and beyond. Addison Wesley / ACM Press. Capítulo 2. 1995.
Referencia bibliográfica ODMG:
Atwood, T. et al. The object database standard: ODMG-93. Morgan Kaufmann. Capítulo 2. 1994.

Programa del curso


Introducción OMG




Arquitectura de OMG


Una aplicación es un conjunto de clases e instancias que interactúan a través del agente o corredor de requerimientos de objetos, que es un bus de software que permite que los objetos hagan y reciban peticiones y respuestas.

Cada aplicación o servicio se modela como un objeto:
OS: Es la colección de objetos de servicio que proveen las funciones básicas para crear y mantener objetos de cualquier categoría.
FC: Es la colección de clases y objetos que proveen capacidades de propósito general que son útiles en cualquier aplicación.
OA: Son los objetos específicos de cualquier aplicación de usuario final.

Arquitectura de OMG

Conceptos básicos de OMG


Ejm: La firma del tipo Persona se define con:

	Cadena		nombre(Persona)
	Cadena		dirección(Persona)
			nombre(Persona, Cadena)

Si Empleado es un subtipo de Persona, hereda las operaciones anteriores y ademas puede contener

	Real		salario(Empleado)
DVal = Obj /\ NObj firma de Omega: omega : (X1: sigma1, X2: sigma2, ..., Xn: sigman) => (Y1: ro1, Y2: ro2,..., Ym: rom)
	          nombre 	         parámetros      		resultados

Cada tipo T que pertenece a OTipos tiene un conjunto de operaciones Ops(T) = {Omega1T, Omega2T,..}

Especialización y generalización son relaciones entre los tipos que están basadas en sus interfaces. Ellas definen las reglas por las cuales unos objetos de un tipo son aceptados en el contexto de otro tipo.

Herencia es un mecanismo para reusar estructura y comportamiento, lo cual permite que un tipo sea definido en términos de otro.


CORBA (Common Object Request Broker Architecture)-OMG


Arquitectura:

El servicio básico es el manejo de peticiones y respuestas de una pieza de código a otra. Estos dos objetos se denominan cliente y servidor. Cualquier objeto puede ser cliente, servidor o ambos.

Implementación:

Modelo del IDL:

Es usado para generar el código de llamadas de procedimientos a través de una interfaz de red, llamados stubs y skeletons. Las especificaciones IDL están disponibles tembién en el sistema de tiempo de ejecución para soportar la generación dinámica de peticiones.


Interfaces CORBA-OMG


Interfaz de CORBA

Interfaces de los tipos y de los objetos:

Los tipos se refieren a aquello que puede ser especificado en los argumentos o resultados de la firma de las operaciones.
Un nombre de interfaz es un tipo legal en IDL.


Tipos de datos OMG


El término objeto se reserva para aquellas cosas cuyas implementaciones están fuera de COR, pero que se acceden a través de él. Los pseudo-objetos son clases que soportan mecanismos de COR como objetos, ellos son:

Interfaces en el banco de interfaces para manejar la representación dinámica de IDL a tiempo de ejecución.

Implementaciones en el banco de las mismas para manejar la asignación de interfaz-implementación a tiempo de ejecución.

Otros objetos proporcionados por CORBA:

Object define aquellas operaciones aplicables a todos los objetos del sistema como: get_implementation, create_request, get_interface, duplicate, release, is_nil.
Una interfaz para crear referencias de objetos persistentes, como: object_to_string, string_to_object.


Operaciones y peticiones OMG


El cliente inicia la petición mediante la llamada de un fragmento o mediante la construcción de la misma via la interfaz de invocación dinámica.

Semántica de la invocación

Semántica de la invocación:

Cuando una operación que no devuelve ninguna respuesta es invocada, ella será invocada a lo sumo una vez, lo cual no garantiza que se realice. Para el resto de las operaciones, ellas serán invocadas a lo sumo una vez si se obtiene una excepción y exactamente una vez si su resultado es exitoso.


Introducción ODMG-93


El modelo ODMG fue concebido en 1991 como una iniciativa conjunta entre las empresas productoras de software en Sistemas Manejadores de Bases de Datos Orientados por Objetos (SMBDOO) y Rick Cattell, debido a la falta apreciable de un estándar en el área. A partir de esa fecha se conformó el grupo de trabajo llegando en 1995 a la versión 1.1 del modelo estandar, cuyo resumen se presenta a continuación.

El modelo de los objetos se expresa brevemente como:

Tipos e instancias:


Jerarquía básica de tipos ODMG-93


El tipo Object tiene las siguientes propiedades ya definidas:

y las operaciones: El tiempo de vida de un objeto mutable es ortogonal a su tipo. Ellos son:

Este se define cuando el objeto se crea y no puede ser cambiado después. Objetos con tiempos de vida mayores pueden referirse a los que tienen tiempos de vida menores solamente en el periodo donde los menores existen.

Los objetos inmutables o literales tienen identidad pero no tienen oid. Su identificador es el valor del literal.
Las literales atómicos son:

Las literales estructuradas pueden ser: Se pueden definir operaciones adicionales para las literales solamente haciendo subtipos de ellas.

Propiedades ODMG-93: Atributos y relaciones


Los atributos se definen para cada tipo de objeto tomando literales como valores y sin tener oid. Su individualidad se determina por el objeto individual al cual se aplica. Ejm: attribute Integer edad;

Sus operaciones ya definidas son:

Se provee el valor nulo para cada literal.

Los atributos definen el estado sin importar si es implantado con un campo de una estructura de datos o una operación. Ejm: edad puede ser calculada en base a la fecha de nacimiento y la fecha actual.

Los atributos no son de primera clase y no pueden tener a su vez atributos ni relaciones.

Se pueden reescribir las operaciones ya definidas por el sistema.

Se pueden definir valores por defecto para los atributos, haciendo que el constructor le asigne dicho valor al momento de creación. Ejm: attribute Integer edad default 12;

Las relaciones solo pueden definirse entre tipos mutables. Las relaciones son binarias del tipo 1:1, 1:M y N:M. Ellas no tienen nombre pero si sus caminos en cada dirección. Los caminos se declaran dentro de la interfaz del tipo con relationship clase nombreDelRol inverse clase::nombreDelRol, donde la relación se da.
Ejm: Relación 1:M

Las relaciones mantienen la integridad referencial. Ellas no tienen oid y se identifican por los objetos que ellas asocian. Las relaciones 1:M y N:M pueden ordenarse. Hay una sola instancia en las N:M que implica la existencia de dos conjuntos de 1:M y cada una de ellas implica la existencia de un conjunto de relaciones 1:1.

Operaciones para relaciones N:M:

Operaciones para relaciones 1:M:

Operaciones para relaciones 1:1:


Modelado del comportamiento ODMG-93


Se representa con un conjunto de operaciones. Cada operación tiene una firma que contiene los nombres y tipos de los argumentos, excepciones y tipos y valores de regreso. Siempre se aplican sobre un solo objeto. No hay operaciones independientes de un tipo, ni pueden ser definidas para 2 o más tipos.

Las operaciones son únicas dentro de un tipo y pueden tener el mismo nombre para diferentes tipos. El tipo selecionado en el despachado de la operación será el tipo más específico del primer argumento.

Los argumentos pueden ser cualquier objeto denotable. Los resultados pueden ser cualquier objeto denotable o conjunto de ellos. Una operación sin valor de regreso especificado regresa nulo.

Las operaciones para el tipo Operation son:

Ellas no pueden ser llamadas por los programas en la mayoría de los lenguajes de programación.

El modelo asume una ejecución secuencial de las operaciones.

No requiere soporte para operaciones concurrentes ni paralelas ni remotas.

El lugar por omisión donde se efectúa una operación es donde fue invocada.

Las excepciones son objetos y pueden organizarse en jerarquías subtipo/supertipo.

La raíz de dicha jerarquía es el tipo Exception proveido por el sistema. Este tipo incluye una operación para desplegar el mensaje, el tipo de excepción y terminar el proceso. La información sobre la causa de la excepción y su contexto se pasa al manejador de excepciones como una propiedad del objeto excepción.


Objetos estructurados ODMG-93


Las colecciones tienen un número variable de elementos del mismo tipo y no tienen ranuras. Se aceptan subtipos del tipo especificado.
Inserción y recuperación se hacen en base a posiciones absolutas o relativas, al inicio, fin, antes o después. Ademas se puede definir un predicado para recuperar elementos.

Pueden ser ordenadas o no, por orden de llegada o por valor. Pueden permitir la repetición de objetos o no.

Las estructuras tienen un número fijo de ranuras, cada una conteniendo un objeto o un literal. Inserciones, eliminaciones y recuperaciones se hacen con el nombre de la ranura y el operador punto.

El modelo soporta conjunto de estructuras, arreglos de ellas, etc.


Colecciones ODMG-93


Una colección es un objeto que agrupa otros objetos. Ejm: conjunto de, lista de, etc.

Se pueden definir sobre referencias o punteros a objetos.

Este es un tipo parametrizado, por lo cual permite el chequeo de tipo a tiempo de compilación.

Cada colección tiene su identidad inmutable.

Hay dos tipos de colecciones: predicate_defined y insertion_defined. Las primeras usan el predicado es del tipo T haciendo que todas las instancias de la extensión sean de tipo T. Las otras son responsabilidad del programador.

La inclusión de un objeto de tipo T en la colección no es automática, asi como tampoco su exclusión.

Se puede iterar sobre los elementos de la colección con un iterador. Para colecciones desordenadas el orden de iteración es arbitrario.

La operación create_iterator se define para la colección y puede tener mas de uno.

Las colecciones definidas por el sistema son:

Collection <T> (tipo abstracto)
Las implementaciones pueden definir el almacenamiento y rendimiento relacionado con las propiedades y operaciones de una colección, por lo cual el soporte de lo siguiente es opcional.

Tipo Set <T>

Son colecciones desordenadas que no permiten duplicados. Ella redefine:

y define las operaciones adicionales

Tipo Bag <T>

Son colecciones desordenadas que permiten duplicados. Ella redefine

y define otras operaciones como

Tipo List <T>

Son colecciones ordenadas por orden de inserción, que permiten duplicados. Ella define otra propiedad current_position : Integer redefine algunas operaciones heredadas como

y define algunas nuevas operaciones como

Tipo Array <T>

Son arreglos unidimensionales de longitud variable. En la creation se define un tamaño inicial y luego si cambia de tamaño este puede cambiarse implicita o explicitamente. Implicitamente, mediante asignación a posiciones fuera de rango. Ella redefine

y define operaciones como

Tipo Structure

Es un tipo sin nombre que agrupa elementos. Cada elemento se compone de un par nombre, valor, donde el valor puede ser de cualquier subtipo del tipo Denotable_Object. Como ellas se componen de literales pueden ser valores de los atributos.

Las operaciones definidas para el tipo Structure e1 : T1, ... , en : Tn son

Literales estructurados:

Se definen los mismos tipos pero esta vez inmutables.

Jerarquía de tipos ODMG-93


La jerarquía completa de tipos es la siguiente:

Todos los tipos son instancias del tipo Type que a su vez es subtipo e instancia del tipo Atomic_Object. Los metadatos que definen el esquema de una base de datos son accesibles con las mismas operaciones definidas por el usuario a sus tipos.

El tipo Type tiene las siguientes propiedades

La compatibilidad de tipos mutables está definida en la jerarquía de los mismos.

Transacciones ODMG-93


Los programas que usan datos persistentes se organizan dentro de transacciones que son las unidades de atomicidad, consistencia e integridad. El modelo soporta transacciones anidadas con alcance dinámico. Las operaciones definidas en el tipo Transaction son
Operaciones sobre la base de datos:

Cada base de datos tiene un esquema que contiene el conjunto de las definiciones de sus tipos.

Una BD lógica puede ser almacenada en una o más BD físicas.

Cada BD es una instancia del tipo Database.

Los nombres de sus tipos y sus extensiones son globales para la BD una vez abierta.

Programa