UniSQL DB2 SyBase OpenODB O2 GenStone Oracle Persistencia

Anuncio
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
7.1 INTRODUCCIÓN
Existe gran variedad de bases de datos disponibles, desde el sistema de bases de datos relacional
puro hasta el sistema de bases de datos orientado a objetos puros.
RDBS
Puro
DB2
RDBS
con algo de too
SyBase
Oracle
ODB
para un RDB
OpenODB
Persistencia
ODB
Estático
O2
Objectivity
OD1
Ontos
POET
ODB
Activo
GenStone
Itasca
Matisse
IDB
UniSQL
Figura # 1Clasificación de los Sistemas de Base de
Evolución de la tecnología de bases de datos.
Durante las tres décadas pasadas las tecnologías de los sistemas de información han pasado por
cuatro generaciones en su evolución y la quinta generación se encuentra en desarrollo. La
transición de una generación a la siguiente ocurre debido a la necesidad resultante del incremento
en la complejidad en las aplicaciones y al costo de implementación, mantenimiento y actualización
de las aplicaciones.
Generaciones de Bases de Datos
I. Sistema administradores de archivos.
Basados en el manejo de archivos separados.
II. Sistemas de base de datos jerárquicos.
III. Sistema de Base de datos CODASYL
Los dos anteriores se basan en la compartición de un sistema de base de datos integrado
por muchos usuarios en un ambiente de aplicación
IV. Bases de Datos relacionales
La simplicidad del modelo de datos permitió el desarrollo de lenguajes de consulta
como SQL, QUEL y QBE.
V. Se caracteriza por el enriquecimiento del modelo de datos así como de un conjunto de
funciones para implementar los requerimientos de las aplicaciones actuales.
La evolución de los sistemas de bases de datos es similar a la evolución de los lenguajes de
programación, los cuales van desde el lenguaje máquina, lenguaje ensamblador hasta los
lenguajes de alto nivel, esta evolución tiende a facilitar el trabajo de programación en aplicaciones
mas complejas, pero requiere la introducción de lenguajes sofisticados de procesamiento, como
son los ensambladores y compiladores.
Paola Romero Guillén
191
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
A continuación se hace un estudio de las ventajas y desventajas de una base de datos
convencional a una base de datos orientada a objetos.
Las bases de datos orientadas a objetos son una herramienta poderosa para los desarrolladores
de software.
Este tipo de bases de datos proporcionan un soporte completo para el modelo de programación
orientado a objetos usado en lenguajes como C++ y Java.
Este modelo es intuitivo, modela muy bien las relaciones y es muy conveniente para grandes
proyectos de software.
Las bases de datos convencionales son buenas manejando grandes cantidades de datos,
comparten datos entre programas y realizan búsquedas rápidas basadas por valor. Pero la
desventaja es que no tienen un buen modelo de las relaciones entre datos, todo es representado
como series de tablas bidimensionales.
Una base de datos orientada a objetos combina la semántica del lenguaje de programación
orientada a objetos con el manejo de datos y la facilidad de realizar búsquedas como las del
sistema de base de datos convencional.
Esto facilita el manejo de grandes cantidades de datos y el modelado de las relaciones entre ellos.
Si una base de datos orientado a objetos es integrada con un lenguaje de programación orientado
a objetos, entonces esta deberá soportar la semántica del lenguaje, las relaciones establecidas en
el programa deberán automáticamente ser representadas en la base de datos cuando los objetos
sean almacenados.
Modelo de programación orientado a objetos
El modelo natural de objetos y sus relaciones fue un factor primordial en el diseño de los lenguajes
como Simula, C++ y Java. Hoy las técnicas orientadas a objetos son siempre vistas como una
forma moderna de ingeniería de software. El uso inteligente del modelo de programación orientado
a objetos resulta en programas mejor estructurados y fáciles de entender.
Una base de datos que soporte el modelo de programación orientado a objetos debe cumplir con
los siguientes aspectos:
Clases y objetos.
Encapsulación.
Herencia.
Polimorfismo.
Tipos de datos definidos por el usuario.
Modelar las relaciones entre objetos.
Sistema de base de datos convencional
Los sistemas de bases de datos son diseñados para manejar grandes cantidades de datos y tienen
las siguientes características:
Almacenamiento permanente.
Búsquedas rápidas.
Comparte objetos entre programas.
Manejo sofisticado de errores para operaciones de bases de datos.
Los sistemas de bases de datos relacionales son sistemas estándar que actualmente son usados
en la mayoría del software desarrollado.
Estas bases de datos utilizan series de tablas bidimensionales. El modelo relacional define
estructuras, operaciones y principios de diseño usados con esas tablas.
Pero el crecimiento de la complejidad en los programas modernos y el incremento del uso de
modelos dinámicos de datos han colocado a las bases de datos tradicionales en su limite.
Las principales desventajas de usar bases de datos tradicionales son:
Paola Romero Guillén
192
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
Tipos de datos limitados.
Modelado de relaciones entre datos limitado.
No agrupan código con datos.
Tienen una limitada manipulación de datos.
Tienen una pobre integración con los lenguajes de programación.
No manejan transacciones grandes.
Sistema de Base de datos orientada a objetos
Una base de datos orientada a objetos es una base de datos que soporta completamente el
modelo orientado a objetos, esta diseñada para expresar las relaciones entre datos y al igual que
las bases de datos convencionales, es diseñada para manejar grandes cantidades de datos y
realizar búsquedas rápidas basadas por valor.
7.2 POET
La persistencia es una extensión del lenguaje el cual permite a los programadores almacenar y
acceder objetos. Poet escogió implementar la persistencia como una extensión de C++, la cual es
portable, eficiente, fácilmente extensible y particularmente, maneja una buena expresión de
relaciones entre objetos. La extensión esta limitada a la declaración de la sintaxis para las clases
persistentes, pero proporciona un precompilador el cual convierte las clases persistentes a código
C++ y una librería de clases que implementa la base de datos orientada a objetos.
En Poet una clase es persistente si esta es definida usando la palabra “persistent”. Cada objeto de
una clase persistente tiene la habilidad de almacenarse a sí mismo en una base de datos. Poet,
además, maneja correctamente todos los aspectos de identidad y comportamiento de los objetos.
Poet proporciona una base de datos orientada a objetos con un soporte completo para la
semántica de C++. Es una herramienta poderosa y fácil de usar.
Cuando se dice que Poet es orientado a objetos significa que puede soportar las siguientes
características:
Encapsulamiento.
Herencia.
Polimorfismo.
Tipos de datos definidos por el usuario.
Identidad.
Modelado natural de relaciones entre objetos.
Cuando se dice que es una base de datos es porque proporciona las siguientes características:
Gran capacidad de almacenamiento.
Búsquedas rápidas basadas por valor.
Comparte objetos entre programas.
Manejo sofisticado de errores en operaciones de bases de datos.
Y cuando se dice que Poet es una base de datos orientada a objetos es porque soporta:
Resolución de referencias en el programa.
Relaciones uno a muchos.
Búsquedas basadas por valor con almacenamiento de resultados.
Índices.
Manejo inteligente de objetos.
Miembros transitorios.
El modelo relacional es simple y elegante, pero es fundamentalmente diferente al modelo de
objetos. Las bases de datos relacionales no fueron diseñadas para almacenar objetos. Se ha
mostrado que las bases de datos relacionales están pobremente adaptadas para expresar los
atributos básicos de los objetos, como encapsulamiento, herencia, polimorfismo, identidad,
referencias entre objetos y tipos de datos definidos por el usuario.
Paola Romero Guillén
193
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
Finalmente, una base de datos orientada a objetos simplifica de gran manera el manejo de objetos,
debido a que ellas soportan directamente el modelo de objetos.
Las compañías que proporcionan sistemas de bases de datos orientadas a objetos han
comenzado a definir un estándar para este tipo de tecnología. Ellos están organizados en el Object
Database Management Group (ODMG) y la primera versión de este estándar ha sido publicado en
septiembre 1993. El estándar ODMG-93 establece lo esencial para la programación de bases de
datos orientadas a objetos, especialmente lo que debe cumplir el modelo orientado a objetos y el
lenguaje de programación orientada a objetos.
Después de haber mostrado una pequeña introducción acerca del Poet y para que nos sirve se
presentan una serie de pasos para exponer el manejo del Poet como implementación de nuestro
problema.
1. Conocimiento de clases persistentes que son:
•
•
•
•
Esp_Producto
Esp_Cliente
Venta
Factura
2. Diagrama de clases habilitado en RRose C++
3. Registrar el modelo de la siguiente forma:
menu Tools/Poet/Registrer Current Model
Figura # 2
4. Crear la base de datos y diccionario para el
modelo:
• Menu Tools/Poet/Create Poet Dictionary and
empty Data Base
• Seleccionar nombre dado al modelo
Figura # 3
5. Creación de archivos .hcd en Rrose C++:
•
•
Seleccionar Menu Tools/Poet/Create HCD
Dar clic en el nombre del modelo
// POET header file for 'PProy' model.
Paola Romero Guillén
Figura # 4
194
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
// Generated by POET Rose Link.
#include "poet.hxx"
// forward
persistent
persistent
persistent
persistent
declaraions:
class Factura;
class Especificacion;
class Espcliente;
class Venta;
persistent class Espcliente
{
private:
PtString
num_cte;
PtString
nombre;
PtString
RFC;
PtString
domicilio;
protected:
public:
};
Espcliente& operator=(const Espcliente& espc);
int Espcliente(const Espcliente & espc);
int Espcliente();
int ~Espcliente();
PtString getClave();
int Imprimir_Esp();
persistent class Factura
{
private:
PtString
nombre;
useindex nombreIX;
PtDate
fecha;
int
terminada;
Factura& operator=(const Factura& fact);
int Factura(Factura fact);
protected:
public:
depend lset<Venta*>
Espcliente pCliente;
};
ventas;
int Factura();
virtual int ~Factura();
virtual void suma_art(Especificacion* pEsp2, int cantidad);
void esCompletada();
long total();
void entra_cliente(PtString numero);
indexdef nombreIX : Factura
{
nombre;
Paola Romero Guillén
195
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
};
persistent class Especificacion
{
private:
PtString
nombre;
long precio;
PtString
clave;
int Especificacion(const Especificacion & esp);
Especificacion& operator=(const Especificacion& esp);
protected:
public:
};
int Especificacion();
virtual int ~Especificacion();
int Imprimir_Esp();
PtString getClave();
long getPrecio();
persistent class Venta
{
private:
int
cantidad;
Venta & operator=(const Venta & pventa);
int Venta(const Venta& pventa);
protected:
public:
Especificacion*
};
pEsp;
int Venta();
int ~Venta();
long getsubtotal();
Paola Romero Guillén
196
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
7.3 COMPILADOR PTXX
Figura # 5
Ahora que tiene todas las declaraciones de las clases en archivos con extensión *.hcd, se ejecuta
el compilador PTXX, el cual hará lo siguiente:
Crea el diccionario de las clases, usando las declaraciones de las clases persistentes.
Crea declaraciones de clases en C++ de las clases persistentes, para que el compilador pueda
interpretarlas.
Crea información extendida en tiempo de ejecución para las clases que Poet conoce como cargar,
almacenar, y las búsquedas.
Crea clases que permiten el acceso a las clases en la base de datos y para la realización de
búsquedas.
Cuando los archivos .hcd del proyecto sean compilados. El PTXX genera tres tipos de archivos:
.HXX, .CXX y .PTX.
Nombre
Diccionario de clases
Clase Factory
Archivo de cabecera
para la clase Factory
Formato
Propósito
Una base de datos que Esquema de la base de
describe las clases que datos.
están en tu base de
datos.
Archivo .CXX
Describe como
construir y manejar los
objetos.
Archivo .PTX
Clases Query, AllSet.
Ondemand y set para
las clases persistentes.
Declaración de la clase Archivo .HXX
Definición de clases de Archivo .OCD
objetos
Como usarse
PTXX lo mantiene
automáticamente.
Compilar y ligar al
programa.
Este es
automáticamente
incluido por la
declaración del archivo
cabecera en el archivo.
No se necesitan incluir.
Representación
Incluidos en los
estándar de C++ de las códigos fuente de la
declaraciones en los
aplicación.
archivos .HCD
Representación
PTXX lo realiza cuando
precompilada de los
construye el esquema
archivos .HCD
para la base de datos y
el diccionario de las
clases.
Tabla # 1
Paola Romero Guillén
197
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
El Developer’s Workbench permite crear proyectos para manejar los archivos *.HCD. se presenta a
continuación una serie de pasos que guiaran en la realización de un proyecto en Poet.
1.Crear un proyecto seleccionando:
Menu File/New Workbook
El nombre del servidor deberá ser siempre LOCAL
cuando se use una edición personal, quiere decir
que será estrictamente usada por un solo usuario.
Figura # 6
2. Crear el proyecto para el modelo, seleccione:
Menu Project/New...
Figura # 7
3. Agregar los archivos .hcd, seleccione:
Menu Project/Add item..
Dar clic en Cancel
Figura # 8
4. Se guarda el proyecto seleccionando:l
Menu Project/save as..
Figura #9
Paola Romero Guillén
198
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
5. Modificación de opciones en:
Menu Options/Directories
Una vez creado el proyecto se modifican
las opciones del mismo, para agregar
todas las rutas de donde Poet buscara los
archivos “include”
Figura # 10
6. Ejecutar el compilador PTXX para crear
base de datos y archivos factory en:
Builder/Build All
Figura # 11
7.Abrir base de datos:
Menu File/Open Database..
Elegir Menu Objects/Browser Extent
El Extent muestra las clases en un panel del
lado izquierdo de la ventana, cuando una de
esas clases es seleccionada, se enlistan los
objetos para esa clase del lado derecho.
Figura # 12
Dar doble clic en el objeto seleccionado y despliega sus especificaciones
Aquí nos muestra las especificaciones del
objeto seleccionado
Figura # 13
Paola Romero Guillén
199
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
7.4. COMPILACIÓN EN VISUAL C++
Una vez que se tienen generados todos los archivos y la base de datos junto con su diccionario, el
paso siguiente será crear un proyecto en Visual C++, el cual creará el ejecutable para manejar la
base de datos.
Pasos para compilar en C++
1. Se crea un Workspace en Visual C++, seleccionando en el menú principal File\New.
En la pestaña Workspace proporcione el nombre en Workspace Name y la ruta
donde se creará en Location.
2. Click derecho sobre el Workspace creado y en el menú seleccione Add New Project.
En la pestaña Project se selecciona el proyecto de tipo 32 Console, se especifica
el nombre del proyecto en Project Name y se selecciona la opción de Add to
current Workspace.
Figura # 13
3. Se crean dos carpetas dentro del proyecto, llamadas Source Files y Header Files.
4. En el menú Project se selecciona la opción Project\Settings.. para agregar las rutas de
acceso de donde se tomaran los archivos “include”.
Figura # 14
5. Agregar los archivos necesarios para el proyecto:
El archivo que abrirá y cerrará la base de datos (PoetApp.cxx, PoetApp.hxx).
El archivo principal de la aplicación –interface- (MenuApp.cxx, MyApp.cxx,
MenuApp.hxx).
Archivos adicionales para manejar tipos de datos y entrada de los mismos
(Conio.cxx, Goodies.hxx).
Archivos *.cpp que tendrán las definiciones de las funciones miembro de las
clases persistentes que han sido declaradas en los archivos *.HXX.
Nota:
Los archivos con extensión .CXX se agregan a la carpeta Source Files.
Los archivos con extensión .HXX se agregan a la carpeta Header Files.
Paola Romero Guillén
200
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
6. Se selecciona en el menú principal Build\Build ProyectV.exe.
En ese momento Visual C++, agrega al proyecto los archivos “include” necesarios
para los archivos existentes en el proyecto, en una carpeta llamada External
Dependencies, los archivos agregados son aquellos con extensión .CXX, .PTT,
.PTX para cada clase persistente de la base de datos, además de todos los .HXX
que se encuentran en la carpeta INC del Poet (Poet.hxx, ptcomp.hxx, etc.).
7. Seleccione los archivos con las extensiones .PTT,.CXX y .PTX de cada una de las clases
para moverlos de la carpeta External Dependencies al Proyecto y queden fuera de las
carpetas.
Figura # 16
Figura # 15
8. Los archivos con extensión .CXX tienen un icono diferente a los demás, este icono indica
que los archivos son agregados a la construcción del archivo ejecutable, seleccione cada
uno de ellos y de un clic derecho con el mouse, elija Settings..., y en la ventana que
aparece seleccione la opción que dice Exclude File From Build, en ese momento el icono
será modificado, y con esto se asegura que los únicos archivos para la construcción serán
los .CPP.
Figura # 17
9. Compile nuevamente para construir el archivo ejecutable. Seleccione del menú Build\Build
ProjectV.exe.
Paola Romero Guillén
201
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
Una vez compilado el proyecto se puede correr el ejecutable y de esa manera visualizar la
aplicación terminada del caso de uso del proceso de desarrollo el cual fue Facturación Versión 1.
Paola Romero Guillén
202
Descargar