Usar las palabras claves “es un” y “tiene un” para encontrar la relación correcta 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
(Gp:) VehiculoMotor (Gp:) Tractomula (Gp:) Carro (Gp:) Bus (Gp:) UtilidadVehiculo
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
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
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 Final
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 <> 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
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
Domains Classes Interfaces Attributes Identifiers Operations Associations Generalizations Realizations Dependencies Use Cases Actors Objects Messages Reglas del negocio y modelado con objetos Las reglas del negocio se pueden ligar a los siguientes objetos en un modelo orientado a objetos:
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
Name Code Comment Stereotype Data type Multiplicity Standard checks Additional checks Rules Dependencies Dominio – Propiedades
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 Si se forza “non-divergence”, un data ítem no puede tener un tipo de dato diferente del dominio Se dice que se tiene un modelo “honest” Ventana Model Options – Se puede forzar “non-divergence” entre un dominio y los data ítem que usan el dominio
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 Secuenciay 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)
Página anterior | Volver al principio del trabajo | Página siguiente |