Descargar

Modelado Estructural y Paquetes de Software (página 2)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red

Operaciones: Ejemplos dibujar + dibujar set (nombre : String) getID(): Integer arrancar() {guarded}

Formato parámetro: [direccion] nombre : tipo [= valor-por-defecto] direccion puede ser : in, out o inout

edu.red

Clases Parametrizadas «bind» G Tabla count capacity put(G) item() : G Empleados (Gp:) Tabla

Clase Parametrizada Instanciación

edu.red

Clases Estereotipadas Clases del modelo o entidad, controlador e interface

edu.red

Relaciones Dependencia Un cambio en la especificación de un elemento afecta a otro elemento

edu.red

Estereotipos para dependencias <>: relación de uso, el más común entre clases y se da por defecto <>: cliente y proveedor representan el mismo concepto en diferentes modelos <>: entre una clase genérica y una instanciación <>: dependencia de clase amiga <>: un paquete importa los elementos de otro. <>: similar a <> <>: para casos de uso <>: para casos de uso

edu.red

Relaciones Generalización “Es-un-tipo-de” En el caso de un modelo de diseño o implementación denota una relación de herencia

edu.red

Relaciones Asociación Relación estructural que especifica que los objetos de un tipo están conectados con los de otro. Multiplicidad (mínimo..máximo) Ejemplos: 0..1, 1, 0..*, *, 1..*, 1..10, 2..25

edu.red

Agregación Caso especial de asociación Relación estructural parte-de (Gp:) Empresa (Gp:) 1..1 (Gp:) * (Gp:) Departamento (Gp:) 1..1 (Gp:) *

Asociaciones

edu.red

Navegabilidad Asociaciones son bidireccionales Posibilidad de limitar la navegación de una asociación a una sola dirección Determina si una clase de la asociación tiene “conocimiento” de la otra. Nivel de diseño o implementación

edu.red

Navegabilidad class Pedido { private Hashtable _itemsPedido; private Date fecha; private boolean esCompleto; …} class ItemPedido { private Producto producto; private int cantidad; …} Class Producto { private Money precio; private String descripción; }

edu.red

Navegabilidad (UML 2.0) A B A B A B A B A B Navegabilidad indefinida Navegable de A a B, de B a A indefinida Navegable en ambos sentidos Navegable sólo de A a B No navegable en ningún sentido

edu.red

Navegabilidad (Práctica habitual) A B A B A B A B A B Navegabilidad en ambos sentidos Navegable sólo de A a B No se usa No se usa No se usa

edu.red

Visibilidad Pública: + propietario Protegida: # propietario Privada: – propietario Paquete: ~ propietario

edu.red

Asociaciones calificadas Nivel Conceptual: “Dentro del mismo pedido no pueden existir dos líneas con el mismo producto” Nivel Análisis: “El acceso a ItemPedido es indexado por productos” Nivel Implementación: “Se usa una tabla para almacenar las líneas de pedido”

edu.red

Asociaciones calificadas Class Pedido { private Hashtable _lineasPedido;

public ItemPedido getItemPedido(Producto unProducto); public void addItemPedido (Integer cantidad, Producto elProducto); … }

edu.red

Agregación Dos criterios: Dependencia: ¿La existencia de una parte va ligada a la del agregado? Exclusividad: ¿Una parte puede pertenecer a más de un agregado? Habría cuatro posibles tipos de agregación; en UML hay dos: agregación y composición

edu.red

Composición Forma “fuerte” de agregación Una parte pertenece a un único agregado (exclusividad) Si se elimina un agregado se eliminan todas sus partes (dependiente) Una parte se puede añadir o eliminar en cualquier instante al agregado.

edu.red

Composición agregado partes 2

edu.red

Clases Asociación Una asociación que también es una clase Una asociación que posee sus propias características. Una clase asociación añade una restricción: “Sólo puede existir una instancia de la asociación entre cualquiera par de objetos participantes” No podríamos modelar que una persona tiene diferentes contratos para una misma compañía a lo largo del tiempo.

edu.red

Ejemplo de clase asociación Distinta semántica

edu.red

Asociaciones derivadas Asociación Derivada

edu.red

Restricciones para Asociaciones {or} {subset}

edu.red

Restricciones para Asociaciones Persona Empresa * 0..1 empleado * 0..1 { Persona.patrón= Persona.jefe.patrón } patrón jefe operario “Un empleado trabaja para la misma empresa que su jefe”

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente