Base de Datos Orientadas A Objetos-Rodriguez de Leon
Base de Datos Orientadas A Objetos-Rodriguez de Leon
Base de Datos Orientadas A Objetos-Rodriguez de Leon
Resumen
El paradigma de la programación orientada a objetos. Necesidad
de tipos complejos de datos. El modelo de datos orientado a objetos.
Lenguajes orientados a objetos. Lenguajes de programación persis-
tentes. Sistemas C++ persistentes, sistemas Java persistentes
Índice
1. Orientación a objetos 3
1.1. Los objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Clases de objetos . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. polimorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4. sobrecarga de operadores . . . . . . . . . . . . . . . . . . . . 6
1.5. Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6. Herencia múltiple . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7. Identidad de los objetos . . . . . . . . . . . . . . . . . . . . . 8
1.8. Continentes de objetos . . . . . . . . . . . . . . . . . . . . . . 9
1
ÍNDICE 2
4.4. Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.5. Consultas con tipos complejos . . . . . . . . . . . . . . . . . . 16
4.5.1. Acceso a datos estructurados . . . . . . . . . . . . . . 16
4.5.2. Expresiones de ruta . . . . . . . . . . . . . . . . . . . . 16
4.5.3. Atributos de tipo colección . . . . . . . . . . . . . . . 16
4.6. Funciones y procedimientos . . . . . . . . . . . . . . . . . . . 17
4.6.1. Funciones y procedimientos en SQL . . . . . . . . . . 17
1 ORIENTACIÓN A OBJETOS 3
1. Orientación a objetos
Los conceptos de la programación orientada a objetos tienen origen en
Simula 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-
Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo.
Fueron refinados más tarde en Smalltalk, que fue desarrollado en Simula en
el Xerox PARC, pero diseñado para ser un sistema completamente dinámico
en el cual los objetos se podrı́an crear y modificar “en marcha” en lugar de
tener un sistema basado en programas estáticos.
La programación orientada a objetos introduce nuevos conceptos, que a
veces no son más que nombres nuevos aplicados a conceptos antiguos, ya
conocidos. Entre ellos destacan los siguientes:
Herencia las clases no están aisladas, sino que se relacionan entre sı́, for-
mando una jerarquı́a de clasificación. Los objetos heredan las propiedades
y el comportamiento de todas las clases a las que pertenecen.
lamiento de los datos y del código relacionados con cada objeto en una sola
unidad cuyo contenido no es visible desde el exterior.
Conceptualmente, todas las interacciones entre cada objeto y el resto
del sistema se realizan mediante mensajes. Por tanto, la interfaz entre cada
objeto y el resto del sistema se define mediante un conjunto de mensajes
permitidos.
En general, cada objeto está asociado con:
clase Empleado:
string nombre
string apellidos
string dirección
date fecha-alta
int sueldo
def sueldo-anual(self):
return self.sueldo * 14
def nombre-completo(self):
return self.nombre + ’ ’ + self.apellidos
def antigüedad(self):
return hoy() - self.fecha_alta
Empleado
string nombre
string apellidos
string dirección
date fecha-alta
int sueldo
int sueldo-anual()
string nombre-completo()
date antigüedad()
set-dirección(string)
1.3. polimorfismo
En programación orientada a objetos se denomina polimorfismo a la ca-
pacidad del código de un programa para ser utilizado con diferentes tipos
de datos u objetos. También se puede aplicar a la propiedad que poseen
algunas operaciones de tener un comportamiento diferente dependiendo
del objeto (o tipo de dato) sobre el que se aplican.
a = complex(1, 3.4)
b = complex(-2, 0.54)
a.suma(b)
a = complex(1, 3.4)
b = complex(-2, 0.54)
a = a + b
1.5. Herencia
Los esquemas de las bases de datos orientadas a objetos suelen necesitar
gran número de clases. Frecuentemente, sin embargo, varias de las clases
son parecidas entre sı́. Son parecidas porque definen iguales atributos y
métodos. No son idénticas porque cada clase define, además, atributos y/o
métodos que no comparte con las demás.
Serı́a conveniente definir una representación de los atributos y métodos
comunes en un solo lugar. Esto puede hacerse creando una nueva clase,
que contendrá solo las caracterı́sticas comunes, y redefiniendo las clases
originales como especializaciones de la nueva clase.
1 ORIENTACIÓN A OBJETOS 7
Los identificadores de los objetos son únicos; es decir, cada objeto tiene
un solo identificador y no hay dos objetos que tengan el mismo identificador.
Los identificadores de los objetos no tienen por qué estar en una forma con
la que los seres humanos se encuentren cómodos; pueden ser números
grandes, por ejemplo. La posibilidad de guardar el identificador de un
objeto como un campo de otro objeto es más importante que tener un
nombre que resulte fácil de recordar. Utilizar un identificador de un objeto
como atributo de otro se denomina referenciar un objeto.
2 LENGUAJES ORIENTADOS A OBJETOS 9
Persistencia por marcas Una variante del enfoque anterior es marcar los
objetos como persistentes después de haberlos creado. Todos los ob-
jetos se crean como transitorios, pero, si un objeto tiene que persistir
más allá de la ejecución del programa, se le marca de manera explı́cita.
3 LENGUAJES DE PROGRAMACIÓN PERSISTENTES 12
4.2.4. Constructores
Hay que definir funciones constructoras para crear valores de tipos es-
tructurados. En SQL-1999 y en muchos otros lenguajes se utiliza una función
con el mismo nombre que un tipo estructurado como función constructora.
De manera predeterminada, cada tipo estructurado tiene un constructor
sin argumentos, que establece los atributos a sus valores predefinidos.
Cualquiera otra función constructora tiene que crearse explı́citamente.
Puede haber más de una constructora para el mismo tipo estructurado;
4 BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS 15
aunque tengan el mismo nombre, sólo tienen que ser distinguibles por el
número de argumentos y sus tipos.
4.3. Herencia
La herencia puede hallarse en el nivel de los tipos o en el nivel de las
tablas. En primer lugar se considerará la herencia de los tipos y después en
el nivel de las tablas.
4.4. Referencias
Los lenguajes orientados a objetos proporcionan la posibilidad de hacer
referencia a los objetos. El atributo de un tipo puede ser una referencia a
4 BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS 16
select tı́tulo
from libros
where ’base de datos’ in (unnest(lista-palabras-clave))
select tı́tulo
from libros
where recuento-autores(tı́tulo) > 1