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
Clases Parametrizadas «bind» G Tabla count capacity put(G) item() : G Empleados (Gp:) Tabla
Clase Parametrizada Instanciación
Clases Estereotipadas Clases del modelo o entidad, controlador e interface
Relaciones Dependencia Un cambio en la especificación de un elemento afecta a otro elemento
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
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
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
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
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
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; }
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
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
Visibilidad Pública: + propietario Protegida: # propietario Privada: – propietario Paquete: ~ propietario
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”
Asociaciones calificadas Class Pedido { private Hashtable _lineasPedido;
public ItemPedido getItemPedido(Producto unProducto); public void addItemPedido (Integer cantidad, Producto elProducto); … }
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
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.
Composición agregado partes 2
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.
Ejemplo de clase asociación Distinta semántica
Asociaciones derivadas Asociación Derivada
Restricciones para Asociaciones {or} {subset}
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”
Página anterior | Volver al principio del trabajo | Página siguiente |