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 ToolsCheck
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
ToolsCompare 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 FilePrint
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 FilePrint 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 SymbolFit 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 EditExport 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
ToolsResourcesReport
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 LanguageChange 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 LanguageEdit
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
LanguageReverse
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
LanguageGenerate
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
LanguageGenerate 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
LanguageCreate 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?