Download Presentación de PowerPoint - Departamento de Ingeniería de
Document related concepts
no text concepts found
Transcript
HERRAMIENTAS CASE PARA MODELAMIENTO DE DATOS ORIENTADO A OBJETOS Segunda parte Herencia • Herencia es a relación entre clases por medio de la cual una clase deriva parte de su definición de otra clase • La herencia define una jerarquía de abstracción, en la cual una subclase hereda de una o más superclases • Ventajas de la herencia: – Se puede construir sobre lo que ya se tiene – Se puede reutilizar lo que ya se tiene • La herencia describe una relación “es un” o “clase de” Relaciones Superclase-Subclase • En la cima de la jerarquía de clases está la clase más general – De ella descienden todas las demás, son clases especializadas • Subclases son versiones especializadas de sus superclases – En herencia simple, la subclase hereda únicamente de una superclase – En herencia múltiple, la subclase hereda de más de una superclase • Especialización es el proceso de crear subclases que heredan la estructura y/o comportamiento de superclases y añaden o modifican estructura y comportamiento según necesidades Guía para identificar relaciones Super-Sub en forma descendente Mirar frases con sustantivos con varios adjetivos sobre el nombre de la clase – Ejemplo: Banco de Comercio y Banco de Inversiones • Especializar únicamente cuando la subclase tiene un comportamiento significativo – Ejemplo: • Los vendedores ganan comisión sobre las ventas y tienen un salario básico • A veces los productos están registrados por un número de serie otros por lote Guía para identificar relaciones Super-Sub en forma ascendente • Ver clases con atributos o métodos similares • Agruparlas colocando los atributos y métodos comunes en la superclase • Ejemplo: – Clientes, vendedores, y empleados, todos tienen dirección • Crear una clase Direccion para manejar toda la lógica de la dirección – Todos los productos tienen nombre e identificación • Crear una superclase Producto que contenga esos atributos • Tener cuidado de no forzar clases que contengan una estructura generalizada preconcebida Guía para identificar relaciones Super-Sub – Reutilización • Colocar los atributos y métodos tan alto como sea posible en la jerarquía • Al mismo tiempo, no crear clases altamente especializadas en la cima de la jerarquía – Ejemplo: Ninguna superclase debe tener solo una subclase • Usar varias iteraciones para conseguir este balance Indicativo de herencia Relación de herencia Herencia en PowerDesigner • En PowerDesigner la herencia se llama generalización • Para dibujar una relación de herencia entre dos clases: 1. En la paleta, hacer clic en la herramienta Generalización 2. Hacer clic y soltar una línea de generalización de la subclase a la superclase Propiedades de la herencia en PowerDesigner • Propiedades de la Generalización : – – – – – – – Name Code Comment Parent Child Stereotype Visibility Herencia de atributos y operaciones • Definir atributos y operaciones al más alto nivel en la jerarquía de herencia – La herencia resalta las similitudes entre clases • Subclases heredan de una clase: – Todos los atributos – Todas las operaciones • Cada subclase puede añadir atributos • Cada subclase puede aumentar o redefinir las operaciones heredadas • Atención –en forma nativa CORBA no soporta sobrecarga – La sobrecarga ocurre cuando varias operaciones definidas en la misma clase tienen el mismo nombre pero tienen diferentes argumentos Relaciones heredadas • Definir relaciones al más alto nivel en la jerarquía de herencia • Subclases de una clase heredan todas las relaciones • Cada subclase también puede participar en relaciones adicionales Herencia vs Agregación • Herencia y agregación a menudo se confunden – herencia representa una relación “es-un” o “tipo-de” – Agregación representa una relación “tiene-un” • Ejemplos: – Vendedor es un empleado; – Una orden tiene un Ítem Usar las palabras claves “es un” y “tiene un” para encontrar la relación correcta Herencia múltiple • En sistemas orientados a objetos a una clase se le permite heredar de más de una superclase – Esta clase de herencia se conoce como herencia múltiple • Ejemplo, UtilidadVehiculo hereda de las clases Tractomula y Carro VehiculoMotor Tractomula UtilidadVehiculo Carro Bus Problemas con herencia múltiple • Hay varios problemas con la herencia múltiple, entre otros: – Las subclases pueden heredar el mismo atributo de dos superclases diferentes – Las subclases pueden heredar la misma operación de dos superclases diferentes – La mayoría de los lenguajes orientados a objetos no soportan bien la herencia múltiple • PowerBuilder y Java manejan herencia simple • Trabajo adicional: Delegar ciertos atributos u operaciones en clases asociadas, usar agregación, o usar interfases en Java (se ven más adelante) Interfase • Una interfase es un conjunto de operaciones usadas para especificar el comportamiento externo de una clase, objeto u otra entidad – En el caso de una clase u objeto, la interfase incluye la firma de las operaciones • La interfase es un concepto UML que también está en Java – No suportado en PowerBuilder – Se puede ver como un “contrato” para un conjunto de clases Uso de interfases • Una interfase es similar a una clase abstracta, tiene atributos y operaciones como una clase, pero las operaciones son virtuales, no hay implementación de las operaciones • Para crear una interfase: – En la paleta, dar clic en la herramienta “Interface” o – Seleccionar “Mode Interfaces” del menú principal para definir interfase (continúa …) Uso de interfases • Para vincular una clase a una interfase, asociar la interfase con la clase que “realiza” la interfase – Para establecer este vínculo, en la paleta dar clic en “Realization Drawing”, y dibujar la realización de la clase a la interfase Propiedades de “Interface” – – – – – – – Name Code Comment Stereotype Visibility Generate Inner to Propiedades de “Realization” – – – – – – Name Code Comment Interface clase Stereotype Implementación de interfases • Las interfases son como entidades de clases que tienen operaciones (generalmente abstractas) y atributos • “To Be Implemented” es una facilidad que muestra qué operaciones de la interfase que su clase implementa se tienen que implementar • Al hacer clic en “Implement”, copia la firma de la operación a su clase para implementación Uso de interfases • Evita herencia múltiple – Las interfases ayudan a evitar la herencia múltiple teniendo una clase que soporta múltiples interfases • Forza polimorfismo – Las interfases ayudan a usar polimorfismo forzando a las clases a soportar todos los atributos y operaciones de una interfases – Asegura un método consistente de nombre y llamado a través de múltiples clases Final • UML y Java soportan “final clases” – Clases que no se pueden heredar • Esto ayuda a asegurar que las clases no van a ser mal utilizadas por otros desarrolladores • Ejemplos: – Clases para seguridad – Clases con formas de trabajo Paquete (package) • Paquete es un mecanismo de propósito general para organizar elementos en grupos • Típicamente un modelo orientado a objetos se organiza en paquetes – Se puede pensar que un modelo completo es un paquete de alto nivel que contiene cualquier otro paquete dentro de él – Se usan paquetes para focalizar la funcionalidad en el sistema • Cada paquete tienen al menos un diagrama – Puede tener más de un diagrama Paquetes en PowerDesigner <<Sistema>> Mi sistema Paquetes • El concepto de paquetes en PowerDesigner corresponde al concepto de paquetes de Java, es decir, un conjunto de grupos de clases que ejecutan funciones relacionadas • Ejemplos: – El paquete AWT, parte del API, incluye clases para crear un sistema gráfico de ventanas – El paquete IO, usado por el sistema de E/S, streams, persistencia, y archivos • Se pueden usar paquetes para referirse a agrupamientos tanto físicos como lógicos de los elementos de un modelo – Se usan para particionar o para desarrollar (continúa …) Paquetes • El uso de paquetes ayuda a garantizar la jerarquía del sistema – Un paquete puede contener otros paquetes • Se pueden anidar paquetes para formar una jerarquía – Esta capacidad de anidamiento ayuda a agrupar las clases, tal como una jerarquía de directorios puede ayudar a organizar los archivos – Cuando se genera código Java, un paquete se genera como un directorio en el sistema de archivos de destino Jerarquía de paquetes • En PowerDesigner, los paquetes se muestran en el navegador como niveles separados Propiedades de los paquetes – – – – – – Name Code Comment Stereotype Namespace Default diagram Estereotipos de paquetes • Estereotipos comunes de paquetes: – – – – – – – – – Facade Framework Metamodel Model Stub Subsystem System SystemModel TopLevel Espacio de nombres • Un espacio de nombres define el alcance en el cual un nombre y el código de un objeto de cualquier tipo dado debe ser único • Entonces, el nombre de un objeto de un modelo se puede forzar a que sea único a nivel de un modelo, paquete o subpaquete • En UML y Java,por default, los nombres de las clases deben ser únicos a nivel de paquete – Java resuelve esto en el momento de ejecución utilizando la variable CLASSPATH – PowerBuilder resuelve esto en el momento de ejecución utilizando la lista de la librería • En un modelo orientado a objetos, el paquete es el valor por omisión para el espacio de nombres Dependencia de paquetes • Un paquete es un concepto de desarrollo de software • Uno de los objetivos principales es minimizar la dependencia de paquetes • Ejemplo: Mi Paquete1 depende de Mi Paquete2, significa que uno o más elementos en el Paquete1 dependen de uno o más elementos en el Paquete2 – Un cambio en un Paquete puede requerir de uno o más cambios en los elementos fuente del paquete dependiente Relaciones de Paquetes • El único tipo de relación entre paquetes es la relación de dependencia – Si una clase en un paquete se refiere a una clase en otro paquete, se debe añadir una dependencia de relación a nivel de paquete – Evaluar clases y diagramas de clases para determinar relaciones entre paquetes Dependencia de paquetes - Implicaciones • Ejemplo: – Siempre que se haga un cambio en “Service package”, “Client package” se debe volver a compilar y a probar – “Client package” no se puede reutilizar independientemente porque él depende de “Service package” Interfase pública de un paquete • Cada clase en un paquete tiene un parámetro de visibilidad que se puede colocar en público, paquete, privado, o protegido – Solamente las clases públicas pueden ser utilizadas por clases en otros paquetes • Evaluar las partes públicas y privadas de un paquete – No todas las clases en un paquete deben hacer parte de la interfase pública del paquete Evitar dependencias circulares • Una jerarquía de paquetes debe ser asimétrica • Tratar de evitar el siguiente escenario: El paquete A usa el Paquete B y el Paquete B usa el Paquete A – La dependencia circular entre los paquetes A y B es un indicativo para tratarlos como un único paquete • Evitar este tipo de círculo entre más de dos paquetes – Ejemplo: El paquete A usa el Paquete B, el Paquete B usa el Paquete C y el Paquete C usa el Paquete A • Estas dependencias circulares se deben romper reestructurando uno o más paquetes Reestructuración de paquetes • Se debe pensar en la reestructuración de paquetes en un modelo si: – Hay un acoplamiento fuerte entre los paquetes, lo que significa que los paquetes se deben combinar – Hay dependencia en doble vía entre los paquetes, lo que significa que las clases se deben reorganizar • La interfase de un paquete debe encapsular su implementación en una interfase pública tal como lo hace una clase – Evaluar las consideraciones de reutilización – Para que sea reutilizable, un paquete debe tener pocas dependencias • Ejemplo: mirar los paquetes de Java Reglas del negocio • Una “Regla del negocio” es algo que se debe cumplir • Ejemplo de Reglas de negocio: – Las leyes gubernamentales – Requerimientos del cliente – Guía de cumplimiento interno • Las reglas del negocio a menudo comienzan como simples observaciones – Ejemplo: “Los clientes llaman por los número gratis para colocar sus pedidos” – Durante el diseño hay que desarrollar esas observaciones en expresiones más detalladas Reglas del negocio • Ejemplos: – Lo que puede comprar un cliente de acuerdo a la línea de crédito – Información que debe proporcionar un cliente cuando hace un pedido • Las reglas del negocio complementan los modelos gráficos con información que no se puede representar fácilmente en forma gráfica • Ejemplos: – La regla “un empleado pertenece a uno y solo un departamento”, indica el tipo de relación entre un empleado y un departamento – Fórmulas algebraicas, restricciones, reglas de validación Reglas del negocio - Propiedades – – – – – – Name Code Comment Type Expression Notes Tipos de reglas del negocio • Restricciones – Condición a chequear sobre un valor • Definición – características o propiedades de un objeto en el sistema • Hechos – cosas ciertas o existentes en el sistema • Fórmulas – calculos empleados en el sistema • Requerimientos – especificación funcional en el sistema • Validación – restricción sobre un valor en el sistema Reglas del negocio y modelado con objetos Las reglas del negocio se pueden ligar a los siguientes objetos en un modelo orientado a objetos: • • • • • • • • • • • • • • Domains Classes Interfaces Attributes Identifiers Operations Associations Generalizations Realizations Dependencies Use Cases Actors Objects Messages Dominio • Un dominio es el conjunto de valores válidos para un data ítem • En el caso de PowerDesigner, existen con el mismo significado en los tres modelo OOM, CDM y PDM • Los dominios se usan para forzar manejo consistente de datos en el sistema Dominio - Propiedades – – – – – – – – – – Name Code Comment Stereotype Data type Multiplicity Standard checks Additional checks Rules Dependencies Selección del tipo de datos • Seleccionar un clasificador – Una Clase o Interfase se puede usar como un tipo de dato – Usar la herramienta seleccionadora de clasificación para mostrar la lista Propiedades de dominio – “Detail” • “Detail” sirve para mejorar la generación de código y tipos de datos en la generación de un CDM o PDM • Aquí los tipos de datos son internos de PowerDesigner • “Persistent” se ve más adelante Dominios y divergencia • Ventana Model Options – Se puede forzar “non-divergence” entre un dominio y los data ítem que usan el dominio • Si se forza “nondivergence”, un data ítem no puede tener un tipo de dato diferente del dominio • Se dice que se tiene un modelo “honest” Diagrama de Secuencia • En un sistema en funcionamiento los objetos interactúan entre sí – Las interacciones suceden a través del tiempo – Los objetos interactúan mandándose mensajes • Un mensaje hace que un objeto haga algo • El diagrama de clases representa la parte estática • El diagrama de secuencia muestra la parte dinámica de las interacciones • Representa un trabajo producto del proceso de diseño Modelamiento de interacciones • Durante el análisis se puede hacer el modelamiento de las interacciones, si es necesario, pero típicamente es una técnica de modelamiento durante el diseño y la construcción • Se pasa del “qué” al “cómo” • Objetivos del modelado de interacciones: – Ver el comportamiento entre objetos – Mostrar de forma detallada las interacciones que ocurren entre objetos a través del tiempo – Detallar la distribución de operaciones entre clases Diagrama de Secuencia • Con el diagrama de clases y analizando los casos de uso se puede conceptualizar las partes del sistema pero queda pendiente la interacción entre ellas • Esta información hace más sencillo el trabajo de los programadores – Les da una visión de cómo codificar las clases y ponerlas a trabajar juntas • Un diagrama de secuencia se puede usar para refinar la descripción de un caso de uso y ayuda a encontrar objetos adicionales – Típicamente se tiene un diagrama de secuencia para el flujo principal de eventos y uno por cada sub-flujo independiente del caso de uso Diagramas de Secuencia y sistemas multicapa • Los diagramas de secuencia son indispensables para el desarrollo de sistemas multicapa (multi-tier systems) • Generalmente la interacción y coordinación entre objetos de diferentes capas es compleja – Ejemplo: Interacción que ocurre entre objetos lógicos del negocio en una capa, los objetos de base de datos en otra capa y los múltiples tipos de objetos de la interfase (browser, PDA o Windows) • Los diagramas de secuencia pueden gráficamente representar esas interacciones haciendo que sea más fácil entenderlas Componentes de un diagrama de secuencia • Objetos – Representados como rectángulos en la parte superior del diagrama – Actores se pueden representar de forma opcional • Mensajes – Representados como flechas • Tiempo – Representado en la dirección vertical – La línea de vida de un objeto es la línea punteada que baja desde el objeto – La duración de la ejecución de una operación (activación) se puede representar como un rectángulo a lo largo de la línea de vida del objeto (opcional) Diagrama de Secuencia Diagrama de Secuencia con texto • You can place use case text along the side to clarify diagram Control de flujo • Indicativos de control de flujo: – Asíncrono • Requerimiento en el que el objeto que envía no espera por un resultado, él puede hacer cosas en paralelo. Aplica la semántica de “No-espere” – Llamada a un procedimiento • El que envía la llamada debe esperar una respuesta o la terminación de la activación. Aplica la semántica de “espere” – Retorno de una llamada • Generalmente asociada a un llamado previo a un procedimiento. Se puede omitir el retorno ya que está implícito al finalizar una activación – Indefinido • No se define control de flujo Mensajes en PowerDesigner • Los mensajes tienen un emisor, un receptor y pueden tener una acción – Emisor es el objeto o actor que envía el mensaje – Receptor es el objeto o actor que recibe el mensaje – Acción, ejecutada por el receptor para transmitir comportamiento • Crear, Destruir, Auto-destruir • Mensaje recursivo – Un objeto se envía a sí mismo un mensaje • Mensaje Crear – Mensaje que crea un objeto – El nuevo objeto en el diagrama se muestra al mismo nivel del mensaje • Mensaje Destruir – Mensaje que destruye un objeto – Se acaba la línea de vida del objeto Propiedades de “Message” • Si el receptor de un mensaje es un objeto y el objeto tiene una clase, el mensaje invoca una operación • Se puede ligar un mensaje a una operación de la clase y reemplazar el nombre del mensaje con el nombre de la operación • Se puede crear una operación para la clase desde la ventana ”Message Properties” • Esas ligaduras pueden ser muy útiles durante la implementación Construcción de diagramas de secuencia • Identificar objetos “entidad” en los casos de uso – Objetos entidad típicamente están representadas por las clases del diagrama estático de clases • Dejar un objeto por cada objeto entidad relevante en el diagrama • Darle un nombre y asociarlo con la clase apropiada • Identificar objetos “límite” en los casos de uso – Objetos límite son objetos usados como interfases con los usuarios – Objetos límite son parte del espacio de soluciones, el dominio del modelo direcciona el espacio del problema • Ahora integrando los dos espacios como parte del diseño detallado • Dejar un objeto por cada objeto límite en el diagrama • Nombrarlo apropiadamente Asignación de comportamiento • Ahora la parte dura: colocar métodos a las clases • Ejemplos: – – – – Los estudiantes necesitan registrarse en una clase ¿El objeto estudiante se registra a sí mismo? ¿El objeto clase registra al estudiante? Respuesta correcta: El actor Estudiante llama al método RegistrarClase en el objeto límite ClasesDisponibles Asignación de responsabilidades • Generalmente existe múltiples formas (buenas) de asignar comportamiento por medio de un grupo de objetos • Preguntar ¿qué objetos son responsables de cuáles funciones? – Un objeto debe tener una simple personalidad – La clases se debe enfocar a conjuntos de comportamientos fuertemente relacionados Atajos (shortcuts o métodos abreviados) • A veces se necesita usar la definición de un objeto en varios modelos – Pero los objetos copiados se pueden desincronizar cuando se hacen cambios • En PowerDesigner, se pueden usar atajos para compartir objetos entre diferentes modelos – Un atajo es un objeto que representa y referencia un cierto objeto en diferentes modelos o paquetes – PowerDesigner los mantiene sincronizados automáticamente • Cuando se modifica la definición de un objeto compartido, todas sus ocurrencias (atajos) se actualizan en todos los modelos Uso de atajos • Se pueden crear y almacenar objetos en un paquete o modelo especial – usualmente., este modelo o paquete no es un modelo de trabajo, más bien es una librería de objetos reutilizables • Se pueden copiar los objetos deseados desde un modelo y pasarlos como atajos en otro modelo o paquete • Se pueden ver los atajos en una ventana del diagrama y en la vista del explorador • El uso de atajos asegura que no hay necesidad de duplicar los objetos y que los objetos están sincronizados – Un atajo se actualiza automáticamente cuando se modifica la definición del objeto (continúa …) Uso de atajos • Ejemplo: mientras se trabaja en una aplicación (Los Logos), se puede encontrar que es útil tener una copia de trabajo del JDK – Los objetos JDK se pueden representar como atajos en los diagramas (continúa …) Uso de atajos • En el diagrama de paquetes se pueden mostrar las dependencias que tiene el modelo (Los Logos), de Java • O, si por ejemplo, la clase OrderWindow se heredó de la clase Frame de Java, se puede mostrar Propiedades de los atajos • Target type • Target object name and code • Target model • Target package • Shortcut type • Status • Generate • Generated as Tipos de atajos • Hay dos tipos de atajos: – Atajos internos – Atajos entre paquetes dentro de un modelo – Atajos externos – Atajos entre diferentes modelos Creación de atajos • Se pueden crear atajos desde el árbol del explorador o de la ventana del diagrama al árbol del explorador o la ventana del diagrama • Hay dos métodos para crear atajos: – Copiar y Soltar un objeto como un atajo – Usar la facilidad Arrastrar-y-Soltar • Presionar ctrl + shift mientras se arrastra el símbolo deseado al modelo o paquete deseado • Al crear un atajo: – Se puede crear un solo atajo para el objeto dado en el mismo modelo o paquete – No se pueden crear vínculos (links) entre dos atajos, pero se puede mantener un vínculo entre dos objetos en el modelo de referencia Sinónimos • Un sinónimo es una segunda ocurrencia de un objeto del modelo en el mismo diagrama – No tiene una definición específica. Toma la definición del objeto que él representa – Se puede mejorar la legibilidad de un diagrama, al tener el mismo símbolo de un objeto en diferentes lugares • Se puede editar el sinónimo como si el fuera el objeto original del modelo Para crear un sinónimo, dar clic derecho sobre el objeto y seleccionar Edit… Create Graphical Synonym Revisión de OOM’s • Para revisar un OOM, seleccionar ToolsCheck Model u oprimir F4 • Se puede revisar: – Todo el modelo – Los paquetes seleccionados • Para saltar una revisión, dejar en blanco la caja de selección asociada Revisión sobre el modelo de objetos • Cuando se revisan los modelos, PowerDesigner puede ejecutar diferentes revisiones, entre las cuales están : – Objects – Classes – Interfaces – Attributes – Operations – Associations – Realizations – Generalizations – Use Cases – BeanInfo clase Severidad del error • Hay dos niveles de severidad y dos tipos de corrección disponibles • Niveles de error: – Error – Problema severo que impide la generación – Warning – Problema menor o recomendación • Tipos de corrección: – Corrección automática – PowerDesigner corrige el modelo – Corrección manual – El diseñador debe corregir el modelo Resultados de la revisión • Los resultados de la revisión de un modelo se muestran en la ventana “Result List” – Errors y Warnings • Dar doble clic sobre el objeto deseado para editarlo • Dar clic derecho para corregir, ver información detallada acerca del error o para volver a revisarlo Comparación de modelos • Usar la facilidad de comparación de modelos para resaltar las diferencia entre dos modelos – Se puede analizar el contenidos de los modelos • Comparar modelos para: – Seguir la evolución de los modelos hecha por diferentes grupos de desarrollo – Evaluar las diferencias entre modelos antes de intercalarlos (continúa …) Comparación de modelos 1. Para escoger los modelos a comparar, seleccionar ToolsCompare Models – Aparece la ventana “Select Models to Compare” – El modelo seleccionado en el árbol del explorador, por default, aparece escogido 2. Seleccionar un modelo de la lista desplegable y dar OK – Se abre la ventana de comparación de modelos Ventana de comparación de modelos • La ventana está dividida en dos partes: – El objeto de comparación (parte superior) • Esta parte está dividida en dos paneles; cada uno muestra una vista de árbol del modelo – El panel izquierdo muestra el modelo fuente – El panel derecho muestra el modelo a comparar – Propiedades de la comparación (parte baja) • Esta parte muestra las propiedades de los nodos seleccionados en los árboles de los modelos que están en la parte superior de la ventana (continúa …) Ventana de comparación de modelos Filtrado para la comparación • Se puede definir un filtro para el despliegue de la comparación si se quiere mostrar: – – – – – – – Todos los objetos en ambos modelos Todos los cambios entre modelos Solamente los objetos creados Solamente los objetos borrados Solamente los objetos modificados Solamente los objetos retirados Solamente los objetos idénticos Objetos de la comparación • Se puede escoger que NO se comparen todos los objetos del modelo – En la ventana “Compare Models” dar clic en el botón opciones de comparación • Se pueden seleccionar o no los tipos de objetos del modelo que se quieren o no comparar Comparación - vista preliminar e impresión • • Se puede tener una vista preliminar e imprimir los resultados de la comparación Los resultados de la comparación dependen de las opciones de filtrado seleccionadas Intercalamiento de modelos • La facilidad de intercalamiento es por naturaleza la facilidad que sigue a la comparación – Usarlo para unir modelos • El intercalamiento se realiza de izquierda a derecha – El modelo fuente se utiliza como referencia para el modelo a elaborar el cual se va a modificar de acuerdo con las acciones definidas para intercalamiento • La comparación y el intercalamiento utilizan la misma interfase – Dos partes (objeto de la comparación y propiedades) Opciones de intercalado • Cuando se intercalan modelos se tienen las mismas opciones que para la comparación de modelos – Filtrado de objetos del modelo – Comparación de solamente los objetos seleccionados del modelo • En intercalación se tiene la opción de seleccionar sólo ciertos objetos del modelo para intercalación Imprimir el modelo y reportes del modelo • Imprimir diagramas – Se pueden imprimir los diagramas en los modelos y paquetes, un diagrama a la vez – Cuando se imprime un diagrama, no se puede imprimir en segundo plano información acerca de los objetos en el modelo o paquete • Imprimir reportes del modelo – Existen muchas formas para imprimir reportes del modelo – Los reportes de los modelos usan una plantilla pre-elaborada la cual se puede acomodar de acuerdo a los requerimientos del reporte Selección de páginas y símbolos a imprimir • Se puede imprimir: – Las páginas seleccionadas en el diagrama – Los objetos seleccionados en el diagrama Selección de las páginas a imprimir • Cuando un diagrama ocupa varias páginas, se pueden seleccionar las páginas que se deseen imprimir • Para seleccionar las páginas a imprimir: 1. Seleccionar FilePrint 2. Seleccionar el radio button deseado 3. Dar clic sobre las páginas que se desean ver en la vista previa Selección de los símbolos a imprimir • Se puede imprimir los símbolos seleccionados en la ventana del diagrama • Para seleccionar los símbolos a imprimir: 1. Seleccionar los símbolos en la ventana del diagrama 2. Seleccionar FilePrint Selection Imprimir un diagrama • Se puede imprimir el diagrama que se esté mostrando – No se puede imprimir más de un diagrama a la vez • Se puede reducir la escala para que el diagrama ocupe solo una hoja – Default: escala de impresión 100% • Para que un diagrama solo esté en una página: seleccionar SymbolFit to Page (continúa …) Imprimir un diagrama • Se puede exportar uno o más de los símbolos seleccionados usando uno de los siguientes formatos de archivo: – – – – – Windows Meta Layout Formats Enhanced Metafile Bitmap JPEG Tagged Image File Format • Seleccionar EditExport Image Reportes del modelo • Además del modelo gráfico. Se pueden producir reportes, tanto estandarizados como personalizados • Los reportes de los modelos usan un formato que determinan el contenido y la estructura del reporte – Hay tres tipos de formatos disponibles por cada tipo de modelo: completo, lista y estándar (híbrido) – Se puede personalizar los reportes con el Editor de Reportes • Se puede personalizar un reporte de cualquier modelo y dejarlo como prototipo para los demás del mismo tipo • Se puede ligar un reporte a un modelo o grabarlo en un archivo Formatos de reportes • Un reporte usa un formato asociado con uno o más modelos, y una selección de objetos • Usar el “Report Template Editor” para crear y modificar formatos de reportes – Se puede crear un formato para generar reportes de un solo modelo o reportes multimodelos (varios modelos en el mismo reporte) Ver y modificar formatos 1. Para ver o modificar un formato, seleccionar ToolsResourcesReport Templates 2. Dar doble clic en el reporte para revisar el contenido del formato 3. Añadir y retirar formatos de reportes según se necesite 4. Grabar el formato de reporte 5. Usar el formato de reporte Correr reportes 1. Para correr un reporte usando un formato de reporte, seleccionar Model…Reports 2. Seleccionar un reporte existente o crear uno nuevo especificando el formato de reporte a utilizar 3. Con el reporte activo en el espacio de trabajo, seleccionar File…Generate…RTF <or> HTML para general el reporte actual 4. Abrir y editar el archivo generado en un editor apropiado Lenguajes Orientados a objetos soportados en PowerDesigner PowerDesigner soporta varios lenguajes de programación: – – – – – – – – C# C++ IDL – CORBA Java PowerBuilder VB 6/.Net WSDL (Web Services Description Language) XML Data, DTD, y Schema “Analysis” de PowerDesigner – PowerDesigner tiene un lenguaje genérico para modelamiento llamado “Analysis” – Se puede escoger Analysis como lenguaje, para obtener los beneficios de análisis del modelo de objetos – Analysis suporta la generación de CDM y PDM a partir del OOD – Los tipos de datos con el modelos Analysis están apropiadamente soportados a través de los diferentes tipos de modelos de PowerDesigner Cambio del lenguaje • Al crear un modelo nuevo de objetos se pide escoger un lenguaje • En cualquier momento se puede cambiar el lenguaje; seleccionar LanguageChange Current Object Language – Shared – Aplican las opciones globales del lenguaje – Copied – Se pueden copiar localmente las opciones del lenguaje Propiedades del lenguaje OO – Las propiedades globales del lenguaje de PowerDesigner están provistas en archivos .XOL que están bajo el directorio \ObjLang – Para manipular esas propiedades seleccionar LanguageEdit Current Object Language Re-ingeniería • Re-ingeniería (ingeniería reversa, Reverse engineering) es el proceso mediante el cual se examinan y se recuperan datos o código fuente a partir de un archivo que se usa para construir o actualizar un OOM • Se puede hacer re-ingeniería a un OOM a partir de los siguientes tipos de objetos: – PowerBuilder – Java – XML Data, DTD, y Schema • Se puede hacer re-ingeniería a un diagrama nuevo o a uno existente Re-ingeniería desde un lenguaje • Cuando se hace reingeniería, una clase Java existente en un diagrama, se puede escoger, al hacer la comparación, entre reemplazarla o guardar el objeto existente en el modelo Re-ingeniería y PowerBuilder • Se puede hacer reingeniería desde objetos PowerBuilder a un OOM • Sólo se puede hacer reingeniería de los siguientes objetos de usuario de PowerBuilder: – – – – – Custom clase Standard clase Custom visual External visual Standard visual • En el modelo se crea una clase por cada objeto reversado de PowerBuilder (clase con el mismo nombre del objeto PB) – El código de function y event también se reversan en operaciones de la clase (continúa …) Re-ingeniería y PowerBuilder • Para hacer reingeniería desde objetos PowerBuilder, seleccionar Language Reverse Engineer PowerBuilder • Luego indicar las opciones deseadas Re-ingeniería y PowerBuilder • Al hacer reingeniería desde PowerBuilder se pueden seleccionar las siguientes propiedades: – Ignore operation body – Reversa objetos PowerBuilder sin incluir el código – Ignore comments – Reversa objetos PowerBuilder sin incluir comentarios – create symbols – en el diagrama crea un símbolo por cada objeto; los objetos reversados únicamente están visibles en el navegador del modelo – Mark claseifiers not to be generated – Quita las marcas de selección hechas en las cajas de selección de la ventana de propiedades – Libraries – Carga, en el área de trabajo, las clases default correspondiente al modelo de clases de PowerBuilder Re-ingeniería y Java • Archivos y directorios que contengan clases Java se pueden reversar a un OOM • Por cada clase en un archivo Java, se crea una clase con el mismo nombre en el modelo y contiene la misma información • Cuando se reversan clases Java que ya existen en el modelo, en la ventana de intercalación (merge) se puede optar por reemplazar/guardar la clase existente en el modelo Re-ingeniería y Java • Para hacer reingeniería desde Java, seleccionar LanguageReverse Engineer Java • Seleccionar las opciones deseadas • Seleccionar los tipos de archivos Java, el archivo o directorio a reversar y revisar las opciones antes de reversar Tipos de archivos Java Archivos .java Archivos .class Directorios Archivos con archivos Java Cada archivo contiene una o más definiciones de clases. Cada archivo contiene una definición de clase la cual tiene el mismo nombre del archivo. Carpeta desde la cual se van a reversar todos los archivos Java, incluyendo todos los archivos contenidos en sus subdirectorios. Archivos comprimidos tipo .jar o .zip. Solamente se importa al modelo la información contenida en esos archivos y la demás información se descarta. Re-ingeniería y Java • .java son archivos que contienen código fuente – Se reversa todo el código fuente, a menos que se indique lo contrario • .class son archivos compilados Java – Se reversa la clase (por introspección), pero no el cuerpo de la operación • .zip y .jar son archivos que de forma comprimida guardan múltiples tipos de archivos – Solamente se reversan las clases Java Re-ingeniería y Java • Se pueden seleccionar las siguientes opciones al hacer reingeniería desde Java: – – – – Ignore operation body Ignore Comments Create Symbols Mark classifiers not to be generated – Libraries Clases internas • Una clase interna (inner clase) es una clase definida en otra definición de clase (externa) • Las clases internas son comunes en Java – Mejoran la visibilidad del modelo permitiendo agrupar las clases que de manera lógica trabajan juntas • Si una clase Java tiene una o más clase internas: – Se crea una clase para la clase externa – Se crea una clase por cada clase interna • Se crea un vínculo entre cada clase interna y la clase externa a la que se refiere Re-ingeniería y Java • La posición de los comentarios en el código Java es importante • Algunos comentarios pueden cambiar de forma o posición – Comentarios antes de import se pierden – Comentarios que inicien con /* cambian a // – Comentarios al final del archivo, después del código, se pierden – Comentarios en una clase pero no en una operación, se vinculan al atributo u operación inmediatamente siguiente Generación de objetos • Generación de clases PowerBuilder • Generación de clases Java Generación de clases PowerBuilder • Se pueden generar objetos de usuario PowerBuilder desde un OOM • Se pueden seleccionar clases del modelo, incluyendo las contenidas en paquetes – PowerDesigner genera un objeto por cada clase que se desee generar en PowerBuilder – PowerDesigner importa cada clase o crea archivos fuente que tienen la extensión .sru • Se pueden crear objetos de usuario PowerBuilder desde una clase pero no desde interfases. PowerBuilder no soporta el concepto de interfase que tieneJava. Generación de código PowerBuilder • Para generar objetos de usuario PowerBuilder, seleccionar LanguageGenerate PowerBuilder, del menú del sistema • Seleccionar el modelo o paquete del que se quiere generar objetos • Seleccionar las clases que se quieren generar a partir de la lista Herramientas para selección • Por default, todas las clases del modelo, incluyendo las agrupadas en paquetes, se muestran y seleccionan • Se puede usar la herramienta de selección para modificar la selección inicial • La herramienta que incluye subpaquetes, permite incluir en la selección todas las clases incluidas en paquetes PowerBuilder – opciones de generación 1. Dar clic en la pestaña Options 2. Seleccionar la librería donde se quieren dejar los objetos generados Opciones de generación • Check model – Revisa el modelo antes de generarlo y termina la generación si encuentra errores • PowerBuilder library – Librería o directorio donde PowerDesigner genera las clases • PowerBuilder application – Aplicación PowerBuilder en la que se generan los objetos no visuales PowerBuilder – Las aplicaciones PowerBuilder se leen de los archivos PB.ini – Si se selecciona una aplicación, PowerDesigner crea los objetos de usuario en la librería destino, utilizando la lista de aplicaciones de la librería (continúa …) Opciones de generación • Si PowerBuilder no está instalado en la máquina, no aparece la lista de aplicaciones, o • Si no se selecciona una aplicación de la lista de aplicaciones, la generación creará los archivos en el directorio indicado en el camino (path) • Se debe hacer importación manual • SRU – Directorio donde se quieren tener los objetos generados • Manualmente, si PowerBuilder y PowerDesigner no están en el mismo computador Generación de Java • Se generan archivos fuente Java de las clases e interfases de un modelo • Por cada clase o interfase seleccionada en el modelo, se genera un archivo con extensión .java • Se pueden generar archivos Java de solo un diagrama a la vez • Los archivo .java generados de un OOM se pueden compilar utilizando cualquier herramienta de compilación Java – También se puede correr Java en el servidor de base de datos, si esa facilidad está soportada en la base de datos usada Generación de Java • Para generar clases Java: 1. Seleccionar LanguageGenerate Java, del menu del sistema 2. Seleccionar el modelo o paquete deseado para generar objetos 3. Seleccionar, de la lista, las clases/interfases que se quieran generar • Usar la herramienta para selección de opciones Generación de Java - opciones 1. Dar clic en la pestaña Options 2. Seleccionar un directorio donde se van a dejar los archivos .java generados o Buscarlo con la ayuda del explorador Generación de Java - opciones • Check model – Revisa el modelo antes de la generación – La generación termina si se encuentra un error • Visibility sort – Ordenamiento, en el cual los atributos y operaciones se organizan por el siguiente criterio: – Public – Private: Después de la generación, los atributos y operaciones públicos se colocan antes de los atributos y operaciones privados en la definición de clase – Private – Public: Después de la generación, los atributos y operaciones privados se colocan antes de los atributos y operaciones públicos en la definición de clase – None: Los atributos y operaciones no cambian de orden después de la generación (continúa …) Generación de Java - opciones • Type sort – Cambia el orden en que aparecen los atributos y operaciones en el código de clases del modelo • EJB Generation – Genera campos CMR/CMP • EJB Generation – Añade fuentes de clases Java en los archivos JAR Generación - Comandos • PowerDesigner puede ejecutar una variedad de comandos después de la generación de código: – Compilar, crear EJB y JAR – Compilar, crear EJB y JAR, correr J2EE – Compilar solo fuentes – Compilar y correr aplicaciones – Generar documentación Generación y navegabilidad • Se dice que una asociación es navegable si la información se puede transmitir entre dos objetos que están ligados por una relación de asociación • Cuando se activa la navegación para una asociación, y se genera el código, una variable instanciada se coloca en la clase que puede navegar la otra • Ejemplo, Cliente genera un arreglo de órdenes, pero una Orden no tiene referencia a Cliente Generación de Java - opciones • Muchas facilidades que presenta PowerDesigner solamente son soportadas cuando la generación se va a hacer a Java • Clases especiales, operaciones, atributos: – – – – – – Abstract Static Final Type Visibility Identifier (solamente para clases) • Asociación de nombre generados con variables, si la navegabilidad está activada • Interfases Creación de clases JavaBean • Un JavaBean es una componente reutilizable de software que puede ser manipulada visualmente con una herramienta de desarrollo • Se pueden crear clases Java BeanInfo de clases Bean en el OOM • Una clase BeanInfo se puede crear de una clase solamente si el tipo es Java Bean – Se puede definir el tipo de una clase en “Properties” Clases BeanInfo • Las clases BeanInfo se usan como una forma de implementar API’s JavaBeans • Los API’s JavaBeans son un conjunto de API’s más pequeños dedicados a funciones o servicios específicos • Los principales componentes en API’s JavaBeans son: – – – – – GUI Merging Persistence Event Handling Introspection Application Builder Support Creación de clases BeanInfo • Una clase BeanInfo es una clase que interroga al Bean y determina los atributos y operaciones disponibles • Para crear clases BeanInfo seleccionar LanguageCreate BeanInfo classes. • Se puede seleccionar cualquier clase del modelo – PowerDesigner genera una nueva clase BeanInfo por cada clase seleccionada Clases BeanInfo • Las clases BeanInfo tienen una referencia private, static, final, al mismo Bean • Ejemplo, una clase BeanInfo de la clase Order debe tener: – Una variable especial de referencia al Bean: private static final Order OrderClass = Order.class • Static indica que la clase referenciada no necesita instanciarse por sus operaciones que llame • .class extiende Object en Java, e implementa en tiempo de ejecución un descriptor para las clases e interfases en una VM Java • La instancia OrderClass se crea automáticamente por la VM Java, cuando la clase BeanInfo se carga, de tal manera que la VM Java automáticamente conoce acerca del Bean PowerDesigner – herramienta para modelamiento de datos • PowerDesigner es una herramienta que la pueden usar diversos tipos de usuarios con diferentes especialidades – Analistas de negocios – Administradores de bases de datos – Programadores de sistemas Tipos de modelos • Los modelos CDM, PDM y OOM están hechos para diferentes audiencias con necesidades diferentes • CDMs – Buenos para analistas de negocios y administradores de bases de datos • PDMs – Bueno para desarrolladores de sistemas y administradores de bases de datos • OOMs – Bueno para desarrolladores de sistemas y administradores de bases de datos Paso de tipos de datos entre modelos • Los tipos de datos estándar se pueden pasar fácilmente de modelo a modelo • Los OOMs tienen la lista más corta de tipos de datos: – – – – – – – – Char Boolean Byte Short Int Long Float Double Otros tipos de datos Tipos de datos en los modelos Java OOM char boolean byte short int long float double CDM/PDM char 1 boolean byte short int integer long int float number * String Lo que almacena Caracter Dos valores 256 valores Entero de 16-bits Entero de 32-bits Entero de 32-bits Flotante de 32-bits Números y posiciones Decimales fijas Cadena de caracteres CDM’s • Básicamente usado por analistas de negocios y administradores de bases de datos para hacer análisis de datos • Es el modelo menos complejo de los tres (OOM, CDM, PDM) • Alguna familiaridad con bases de datos relacionales, SQL y metodología de análisis, ayudan pero no son requisito • Usa la notación entidad relación (ER), la notación Merise para ligar entidades o una combinación de las dos metodologías • Los objetos principales del modelo son los ítem de datos, las entidades y sus relaciones (continúa …) CDM’s • En un CDM: – Se pueden capturar las reglas del negocio – Se puede hacer ingeniería a PDMs y OOMs – El paso de tipos de datos es directo, y sensible a mayúsculas De OOM a CDM • PowerDesigner pasa objetos y tipos de datos del OOM a objetos y tipos de datos del CDM • El lenguaje seleccionado en el OOM no afecta la generación del CDM • Consideraciones antes de generar el CDM – Uso de mayúsculas/minúsculas en el código y nombres de objetos – Resolución de tipos de datos entre modelos – Resolución de objetos OOM en objetos CDM – Cosas que no se tienen en cuenta en el CDM – Alcance del espacio de nombres De OOM a CDM Objeto OOM Dominio Clase Objeto CDM después de generado Dominio Entidad (solamente si se seleccionan persistencia y generación en la hoja de propiedades de clases) Interfase No se pasa Atributo Atributo identificador identificador Operación No se pasa Asociación Relación o asociación Dependencia No se pasa Realización No se pasa Generalización Herencia De OOM a CDM • Se puede generar un CDM de un OOM global o de un paquete en el OOM • El espacio de nombres por default en el CDM es el modelo, en el OOM es el paquete – Conceptualmente es más sencillo pasar de un OOM a un CDM cuando el espacio de nombres del OOM se resuelve a nivel del modelo – Generando desde un paquete, resultan CDM’s independientes (continúa …) De OOM a CDM • Seleccionar Tools Generate Conceptual Model • Se puede generar un CDM nuevo o actualizar uno que ya exista • Se puede escoger entre actualizar, borrar o añadir objetos en el CDM existente con base en las modificaciones hechas en el CDM Actualizar CDM’s • Cuando se actualiza un CDM PowerDesigner usa el proceso de intercalación • Si se quiere escoger qué objetos añadir o borrar del modelo resultante, se debe seleccionar la opción Preserve Modifications para comparar e intercalar en el CDM – Si no se hace esta selección, PowerDesigner automáticamente hace reemplazo en el modelo existente – Si se hace esta selección, aparece la ventana que presenta las facilidades intercalación, donde se pueden escoger los objetos a borrar, actualizar o añadir CDM - Opciones de generación • Check model: revisa el modelo • Save generation dependencies: se pueden comparar y reconocer objetos como si fueran el mismo, aún si el objeto ha sido modificado en el CDM – Dejar siempre esta opción! • Convert names into codes: útil para generar modelos con convenciones de nombres muy diferentes CDM - Opciones de generación • En la pestaña “Selection”, se pueden seleccionar las clases que se quieren generar en el CDM • Por default se generan relaciones, dominios y reglas del negocio • Se puede seleccionar un paquete para generar un CDM Cambios al modelo en el CDM • En el espacio de trabajo del CDM, se puede querer mejorar el modelo • En la generación de OOM a partir de un CDM se tiene: Objeto CDM Entidad Atributo Asociación Herencia Objeto generado OOM Clase Atributo Relación o asociación Generalización Notas: Dependencias de asociación, un concepto importante en el CDM, se pierden al generar el OOM! Restricciones obligatorias o no nulas de atributos, también se pierden PDM’s • Los PDM’s están asociados con una base de datos específica (tiene en cuenta las restricciones, debilidades y capacidades de la base de datos seleccionada) • A partir del PDM se puede llegar a la base de datos física, incluyendo DDL’s, triggers, vistas y procedimientos almacenados • También se puede hacer reingeniería desde un PDM De OOM a PDM • PowerDesigner pasa objetos y tipos de datos OOM a objetos y tipos de datos PDM • El lenguaje seleccionado en el OOM, no influye en la generación del PDM • Consideraciones antes de generar un PDM – Uso de mayúsculas/minúsculas en el código y nombres de objetos – Resolución de tipos de datos entre los modelos – Resolución de objetos OOM en objetos PDM – Alcance del espacio de nombres De OOM a PDM Objeto OOM Dominio Clase Interfase Atributo Identificador Operación Asociación Dependencia Realización Generalización Objeto PDM generado Dominio Tabla No pasa Columna Identificador Procedimiento almacenado Referencia o tabla No pasa No pasa Referencia Generación de clases • Para pasar una clase a una tabla se deben seleccionar Persistecia y Generar, en la ventana de propiedades • La cardinalidad de una clase indica el número de registros de la tabla – Permite el cálculo del tamaño de la base de datos Generación de asociaciones • Si la asociación es muchos a muchos – es decir, ambos roles de la asociación tienen seleccionado el símbolo * la asociación se pasa a una tabla en el PDM • Si tiene cualquier otra cardinalidad – es decir, no tienen el símbolo * - la asociación va como una referencia • Un nombre de rol se migra como lleave foránea en el PDM generado De OOM a PDM • Se puede generar un PDM de un OOM global o de un paquete dentro del modelo • Si se genera desde un paquete se obtiene un PDM independiente – Se puede generar un PDM desde un diagrama en el paquete • Por default el espacio de nombres en el PDM es el modelo, en el OOM es el paquete! – Limitar la generación de un PDM a un solo paquete cuando el espacio de nombres del OOM está resuelto a nivel del paquete – Conceptualmente es más fácil pasar de un OOM a un PDM cuando el espacio de nombres del OOM está resuelto a nivel de modelo (continúa …) De OOM a PDM • Seleccionar Tools Generate Physical Model • Se puede generar un PDM nuevo o actualizar uno ya existente • Se puede escoger actualizar, borrar o añadir objetos en el existente PDM basado en cualquier modificación hecha en el PDM Cambios al PDM • PowerDesigner usa el proceso de intercalación al actualizar un PDM • Si se quiere escoger cuáles objetos añadir o borrar del modelo resultante, se debe seleccionar la opción “Preserve Modifications” para comparar e intercalar en el PDM – Si no se escoge esta opción, PowerDesigner automáticamente hace reemplazo en el modelo seleccionado – Si se escoge esta opción, se abre la ventana que permite actualizar, borrar o añadir objetos al modelo PDM - opciones de generación • Incluye el chequeo del modelo y la grabación de dependencias • Consejo: dejar siempre seleccionada la opción “Save generation dependencies” • El mapeo O/R permite definir en el PDM fuentes de datos, de objetos OOM y crear objetos correspondientes entre OOM y PDM Más opciones • Otras opciones: – Table prefix – Update rule – Delete rule – PK names – AK names alternas – FK names – FK threshold Colocar prefijos a los nombres de las tablas con el nombre del propietario Actualizar integridad referencial para referencias Borrar integridad referencial para referencias Generar nombre de índice PK Generar nombre de índice para llaves Generar nombre de índice para FK mínimo número de registros estimados en una tabla antes de que sea necesario crear un índice para FK PDM - opciones de generación • Se pueden seleccionar las clases a generar en la pestaña “Selection” • Por defaul se generan relacioness, dominios, y reglas del negocio • Se puede seleccionar un paquete para generar un PDM Cambios al diseño en el PDM • En el espacio de trabajo del PDM, se puede querer mejorar el modelo • En la generación de OOM a partir de un PDM se tiene: Objeto PDM Dominio Tabla Columna Llave Llave primaria Procedimiento almacenado Referencia Objeto OOM generado Dominio Clase (cardinalidad estimada de filas de tabla) Atributo Identificador Identificador primario Operación Asociación Notas: Llaves foráneas, un concepto importante en el PDM, se pierden al generar el OOM! Restricciones obligatorias o no nulas, también se pierden Retos de la persistencia de objetos en bases de datos relacionales • Mapeo de objetos a bases de datos relacionales, es un reto • Por lo menos hay tres formas diferentes de mapear objetos a bases de datos – Mapear atributos de clases a columnas de tablas – Mapear clases Java a columnas de tablas – Usar tecnología Sybase de DataWindow/DataStore Mapeo de atributos a columnas • Es el default en PowerDesigner • Las clases, asociaciones y generalizaciones se mapean a tablas • Atributos de clases se mapean a columnas de tablas • Es el método más complicado, pero el que brinda mayor control sobre acceso y preguntas que se hagan a la base de datos Mapeo Objeto/Relación en PD • El mapeo O/R permite mapear objetos OOM y tablas PDM para fijar persistencia de objetos. – Datos de una fuente de datos se manejan por medio de un OOM. El mapeo aparece como aparece como una consulta definida en el objeto OOM: esta consulta permite al objeto manejar datos de fuentes de datos. • En el mapeo O/R, la fuente de datos contiene uno o más modelos físicos de datos representando la estructura de la base de datos en el cual se van a almacenar los objetos OOM Definición de fuentes de datos en un OOM • Se deben crear fuentes de datos para definir de dónde deben ser manejados por objetos OOM. • Cuando se define una fuente de datos se declaran modelos de datos físicos en la lista de modelos de fuentes de datos. • Un OOM puede tener varias fuentes de datos. Uso de fuentes de datos en clases • Una vez definidas las fuentes de datos en el OOM, las clases se pueden mapear a tablas en el PDM. – Los atributos, operaciones y sentencias DML SQL se pueden definir por persistencia de la clase – Se pueden usar criterios como “Where Clause” cuando se ejecutan inserciones, modificaciones o borrados. Entidades y atributos en el mundo real • La distinción entre entidad y atributo parece clara, pero en la práctica puede no serlo: – Una dirección puede darse como un atributo de un cliente, pero una dirección también puede ser una entidad, con atributos como calle, ciudad, país, etc. – Un precio puede ser visto como un atributo, pero también puede tomarse como una entidad, con atributos como cantidad, tipo de moneda (pesos, euros, dólares), etc. • La utilidad de una base de datos objeto-relacional está exactamente en el hecho que hay dos formas de expresar entidades – Algunas entidades se pueden expresar como tablas y algunas entidades como clases en una tabla Creación automática de mapeo O/R • Cuando se genera un PDM de un OOM o un OOM de un PDM, y se tiene seleccionado el mapeo O/R en las opciones de generación, los objetos OOM se mapean automáticamente a objetos PDM y se crea una fuente de datos en el OOM. • Este mapeo por default resulta útil en situaciones como: – Se ha diseñado un OOM y se necesita para definir el PDM que almacenará los objetos OOM en una base de datos relacional. Se puede generar un PDM nuevo, a partir del OOM, que tengan objetos OOM ligados a objetos PDM – Se ha creado un PDM y se quiere diseñar la correspondiente aplicación en un OOM. Se debe generar un nuevo OOM del PDM Mapeo de clases Java a columnas • Se pueden usar clases Java como tipos de datos definidos por el usuario en el SQL. Usando clases Java como tipo de dato para una columna en una tabla, se pueden almacenar datos en la base de datos en forma de un objeto Java: – Hacer clases Java disponibles en JVM de la BD – Almacenar objetos Java en tablas de la BD como columnas • Se pueden acceder operaciones y atributos Java de objetos Java en sentencias SQL a través de JDBC Niveles de abstracción para datos relacionales • Las clases Java son útiles abstraer entre una simple columna relacional y una tabla relacional • Los datos en una base de datos relacional pueden ser categorizados por su propósito • Columnas calculadas – con columnas calculadas, se puede selectivamente indexar atributos u operaciones Java • Pregunta: qué datos están mejor en una clase Java, y cuáles mejor en como un sencillo tipo de dato en una columna? – Datos referenciales – Columnas que típicamente se indexan – Otros datos descriptivos Tecnología Sybase DataWindow/DataStore • Se puede usar la tecnología de DataWindow para sortear el abismo objeto/relacional – Particularmente útil cuando se usan bases de datos que brindan menos facilidades o con bases de datos viejas o cuando la empresa tiene PowerBuilder o PowerJ • Acercamiento: – Usar mapeo O/R – Reemplace atributos persistentes de clase con variables de clase de un DataStore o DataWindow – Crear operaciones para manipular clases – Crear objetos DataWindow para las tablas de la BD – Use las facilidades nativas de DataWindow/DataStore para acceder a los datos relacionales Comenzar en • Si es un nuevo diseño, iniciar con el OOM, o con un CDM si es un trabajo menos técnico • Si se parte de una base de datos, comenzar con el PDM y luego obtener el OOM • Si parte de aplicaciones PowerBuilder o Java comenzar con el OOM • Para tener un buen control, hay que tener muy en cuenta qué cosas se pueden perder al pasar de un modelo a otro ¿Preguntas?