UML. Diagramas de clases (para diseño)

Documentos relacionados
UML: INTRODUCCIÓN, ORIENTACIÓN a Objetos

Lenguaje de Modelamiento Unificado.

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema

Capítulo 16. Diagrama de Clases UML

Guía del Curso Analista Programador Java: Business Apps Expert

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

Prof. Mariano Mancuso. Sistemas de información y control diagrama de clases

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

Derechos de Acceso: COMPOSICION

4. DIAGRAMAS DE INTERACCIÓN INTRODUCCIÓN DIAGRAMAS DE SECUENCIA Objetos Mensajes

Programación Avanzada. Diseño Diagramas de Comunicación

Capacitación adquirida por el alumno al finalizar este modulo

Tema: Herramientas UML, Análisis y diseño UML

Tema: Herramientas UML, Análisis y diseño UML

Contenido. 1. El proceso 2. Los modelos 3. Los diagramas 4. Ejemplo

Diagramas De Casos De Uso

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

CLA. Diagramas de clases en Métrica V3

Diagramas de interacción

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

El patrón Composite (Compuesto) Propósito Componer los objetos a una estructura de jerarquía de relación partetodo.

CIDE, SA. RIF: J NIT: MODELO FUNCIONAL

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Introducción a la Orientación a Objetos

DIAGRAMAS DE UML DIAGRAMAS DE CASO DE USO

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Tema 2 Introducción a la Programación en C.

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET...

Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Elementos Diagramas de Clases Clase:

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Gestion y Modelación de Datos Introducción

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Programación Avanzada SOLUCIÓN EXAMEN FEBRERO 2011

Herramienta CASE (Bouml)

1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque:

Unidad Nº V Listas Enlazadas

Operadores lógicos y de comparación en programación. Not, and, or Ejemplos. (CU00132A)

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Notación UML para modelado Orientado a Objetos

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

De los casos de uso a los casos de prueba. Caso práctico. Aplicación web Javier Gutiérrez / javierj@us.es

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

FUNDAMENTOS DE PROGRAMACIÓN Curso: 2013/14 EXAMEN PARA ALUMNOS PRESENTADOS AL PRIMER PARCIAL PRIMERA PARTE. EJERCICIO 1 Cuestiones (1 punto)

Formación a distancia de EXPERTO EN PROGRAMACIÓN EN JAVA

Curso de Java POO: Programación orientada a objetos

Ejercicios Prácticos y Teóricos Diagramas de interacción y de UML a código Java

Patrones. Patrones GRASP GRASP GRASP. Curso de Arquitecturas de Software. Programación Orientada a Objetos Patrones GRASP

1. Preparar al estudiante para desarrollar aplicaciones de software utilizando un enfoque orientado a objetos.

Ejercicio Guiado de Análisis y Diseño Orientado a Objetos. Ejemplo: CAJERO AUTOMÁTICO

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

Construir una Interfaz Gráfica

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Ingeniería del Software I

Guía del Curso Analista Programador PHP Javascript

Diagramas de secuencia

INGENIERÍA DEL SOFTWARE

Excepciones Colecciones e iteradores

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

DIAGRAMAS UML ANDRÉS ESTEBAN MARTÍNEZ HUTA CICLO DE VIDA DEL SOFTWARE GLORIA CECILIA RÍOS MUÑOZ

Árboles binarios de búsqueda

Conversión entre Tipos

3.9 Patrón Distributed callback

Se utiliza para representar los tipos de objetos dentro del sistema (proceso) y las diversas relaciones estáticas que existen entre ellos

Planificaciones Análisis de la Información. Docente responsable: GONZALEZ NORBERTO DANIEL. 1 de 6

INGENIERÍA DEL SOFTWARE I Práctica 4 Interacciones

"Módulo OOWS para StarUML" INTRODUCCIÓN

Actividad ASI 1: Definición del Sistema

Universidad Salesiana de Bolivia

6.8 La Arquitectura del Sistema. [Proceso]

CAPÍTULO 2: DISEÑO GLOBAL DEL PROYECTO

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

PROCESO DE DISEÑO DEL SISTEMA

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Modulo 11. Clases y Objetos en Java

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

La Necesidad de Modelar. Diseño de Software Avanzado Departamento de Informática

Java en 2 horas. Rodrigo Santamaría

Arrays. Programación. Licenciatura de Lingüística y Nuevas Tecnologías

Estructuras en LabVIEW.

Aplicaciones de Escritorio

Índice.

Diagramas de secuencia

Análisis y Diseño Orientado a Objetos

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Universidad Tecnológica de los Andes. Ing. Hesmeralda Rojas Enriquez [GUÍA RATIONAL ROSE] Usando UML

TFC J2EE. Desarrollo de una aplicación J2EE para la gestión del control de presencia. Memoria

Transcripción:

UML Diagramas de clases (para diseño)

Índice 1. Por qué diagramas de clases de análisis y de diseño?. 2. Diagramas de clases de diseño.

Análisis y diseño Por qué diagramas de clases de análisis y diseño? En el análisis queremos contar unas cosas y en el diseño otras. Algunos símbolos de UML se adaptan mejor al análisis y otros al diseño. Al tener una paleta de herramientas más pequeña, dudamos menos.

Análisis y diseño Usaremos: generalización, agregación, composición, clases, paquetes, etc. No usaremos: asociaciones. Nuevos elementos: dependencias, realizaciones, nesting. Los paquetes ya no son subsistemas sino agrupaciones de clases. Usaremos estereotipos para reflejar características del diseño / plataforma de implementación.

Diagramas de clases de diseño

Relación de dependencia. Significa que un elemento es estructuralmente dependiente de otro elemento. Esto es, cambios en un elemento afectarán a cambios en el elemento dependiente. Clase A class A { B b;. } Clase B

Relación de implementación. Significa que un elemento implementa a otro. UML no define con precisión el significado de implementar. Habitualmente utilizado en interfaces Clase A Interfaz I +métodox() class A implements I { métodox() { ; } }.

Relación de nesting Aún no una traducción oficial ( anidamiento?). Define un elemento contenido dentro de otro. No existe en StarUML (estereotipar). <<nesting>> Clase A class Class1 {. class Class2 { ; } } Clase B

Estereotipos: Un nuevo tipo de elemento. Añade algo nuevo: una semántica o comportamiento, restricciones, métodos atributos. Útil para capturar detalles de la plataforma de implementación. cd Estereotipos Página Principal Vista Estereotipos: Web page. Servlet JSP. Link «link» link Controlador

Ejercicio: Una clase Venta contiene una lista de objetos LineaDeVenta. Deseamos implementar nuestro propio iterador (en Java) para recorrer todas las líneas de venta. Suponemos que las líneas de venta se almacenan en un array.

Venta LineaDeVenta +iterator(): java.util.iterator <<interface>> java.util.iterator +hasnext(): boolean +next(): LineaDeVenta +remove(): LineaDeVenta VentaInterador

Venta +iterator(): java.util.iterator 0..* +vendido LineaDeVenta <<nesting>> <<interface>> java.util.iterator +hasnext(): boolean +next(): LineaDeVenta +remove(): LineaDeVenta VentaInterador class Venta { LineaDeVenta[] vendido; Itertor<LineaDeVenta> iterator() { return new VentaIterator<LineaDeVenta> (); } } class VentaIterator implements Iterator<E> { } E next() {.. }

Una calculadora en JSF Modelar la operación suma (con éxito) <<CommandButton>> OpSuma <<JSFPanerGroup>> Result +rendered: boolean = false <<JSFPage>> CalculadoraForm <<JSFController>> CalculadoraControl +OpSuma() Calculadora +primernumero: int +segundonumero: int +resultado: int +suma() +resta() +multiplica() +divide() +getresultado()

/ : Usuario 1 : introduce número A() /CalculadoraForm / : OpSuma / : CalculadoraControl /c : Calculadora / : Result Interfaz de usuario. Controlador. Modelo. 2 : introduce número B() 3 : operación suma() 4 : c := getcalculadora() 5 : setprimernumero() 6 : setsegundonumero() 7 : OpSuma() 8 : suma() 9 : getresultado() 10 : setrendred() 11

<<CommandButton>> OpSuma / : OpSuma / : CalculadoraControl / : Calculadora / : Result / : Usuario <<JSFPage>> CalculadoraForm <<JSFController>> CalculadoraControl +OpSuma() <<JSFInjected>> Calculadora +primernumero: int +segundonumero: int +resultado: int +suma() +resta() +multiplica() +divide() 1 2 : OpSuma() 3 : suma() 4 : getresultado() 5 : setrendred() <<JSFPanerGroup>> Result +rendered: boolean = false 6

Ejercicio: ciclo de vida de un informe. Una primera versión es creada por un auxiliar administrativo. Después pasa al director para completar los detalles. Después pasa a un revisor. Cuando está revisada, se aprueba por el jefe de servicio.

Ejercicio [ fallos en versión preliminar ] / borrardatospreliminares() VersiónInicial introducirdatospreliminares [ datosvalidos() ] [ fallos en detalles ] VersiónPreliminar VersiónCompleta Revisión VersiónAprobada VersiónRevisada [ aprobada ] Inicial: vacío. Preliminar: datos preliminares. Completo: toda la información. Al retroceder a un estado anterior, se pierde toda la información almacenada.

StarUML incluye ayuda sobre los patrones y elementos ya predefinidos.

+estado Informe 1 DatosDelInforme Candidatas a ser una única clase. +introducirdatosbásicos() +validardatosbásicos() +borrardatosadicionales() Candidatas a ser clases internas. EstadoInicial 4 <<interface>> EstadoInforme EstadoPreliminar +versiónpreliminar() +versioncompleta() +versionvalidada() +versionaprobada() EstadoCompletado EstadoValidado <<runtimeexception>> ExceptionOperacionNoPermitidaEnEsteEstado EstadoAprobado

Usuario Dado que los propios estados son stateless, mejor reutilizar que crear (incluso compartidos por distintas instancias). <<create>> 1 i : Informe <<create>> 2 i.estado : EstadoInicial 3 : introducirdatosbásicos() 4 : versiónpreliminar() <<create>> 5 : validardatosbásicos() 6 i.estado : EstadoPreliminar

Cómo podemos asegurarnos de que los usuarios humanos del sistema no hagan lo que no deban? Mediante sus interfaces. Nunca debería llegarle a un usuario un error provocado por la excepción ExcepcionOperacionNoPermitidaEnEsteEstado (por eso es Runtime). Pero los programadores sí deben conocer las secuencias correctas y las secuencias incorrectas. Para ello tiene la especificación (máquina de estados). Además, probarán que, en ningún momento, ninguna secuencia de acciones del sistema arroja la excepción. Y, además, probarán que todas las secuencias erróneas lanzan la excepción (en el momento correcto). Lo cuál es imposible ( mutación de secuencias?).

Otros patrones complementarios. En cada estado puedo realizar cualquier operación. Aunque salte un error al intentar cambiar de estado, la operación ya se ha realizado. Cómo podemos invalidar operaciones según el estado?. Patrón decorador: Decorando los métodos del informe según el estado. Cada estado tiene su propio decorador los cuáles me redefinen los métodos a evitar.