Ejercicios Diagramas de interacción

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

Construcción de Software. Capítulo 2. Un Proceso basado en UML

Capítulo 17 Modelo de Diseño: realización de los casos de uso con los patrones GRASP

Ingeniería del Software. Ejemplo TPV: Diagrama de Casos de Uso TPV. Comprar productos. Registrar Productos CLIENTE CAJERO.

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2007.

Tema 1. UML: Lenguaje Unificado de Modelado. Técnicas de Programación - Curso 2007/08

ArrayList en Java. Los principales métodos para trabajar con los ArrayList son los siguientes:

EL MODELO DE DISEÑO. 1. Introducción. 2. Diagramas de Interacción

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

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

Taller de Programación I. Tema 08: Estructuras Dinámicas de Datos en Java

a. Cuántas veces se ejecuta la instrucción System.out.println? b. Cuál es el diagrama de flujo correspondiente a este fragmento?

Examen escrito de Programación 1

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

1. (1 punto) Dado el siguiente fragmento en Java:

Examen escrito de Programación 1

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Un proceso software basado en UML

Ejercicio 1 (proyecto prlistas, paquete listas)

INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)

Estructuras de control selectivas

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

Examen Teórico Convocatoria de Junio de 2012

Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Tema 1. UML: Lenguaje Unificado de Modelado. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

PRN315 Programación III Ciclo II Guía de Ejercicios de Diseño Orientado a Objetos (DOO)

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Conceptos Básicos. Programación Orientada a Objetos 2

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

Examen. Programación II

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Examen de Métodos de Programación Ingeniería Informática Primera Parte

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Bloque II. Elementos del lenguaje de programación Java

Programación de sistemas Listas enlazadas

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

15. Parámetros o argumentos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación 4 EXAMEN DICIEMBRE SOLUCIÓN

Clase adicional 2. Estructuras básicas de control. Temas

EDA. Tema 8 Colas de Prioridad: Heaps

LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C)

Excepciones Colecciones e iteradores

Tips de Componentes UI Java Swing con Netbeans

o Una clase es un tipo al cual pertenecen objetos o instancias de la clase.

FACULTAD DE INGENIERÍA

// Método Comunicarse, sera implementado por las clases concretas que hereden de la clase //animal

Ejercicio 1 (3 puntos).-

Análisis y Diseño del Software. El Lenguaje Unificado de Modelado UML 2.0

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

UNADM. Estructura de datos. Guillermo Duran Garcia AL Actividad 2. Identificación de errores en métodos de ordenación

ALGORITMICA Y PROGRAMACION POR OBJETOS I

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

12. Tipos de atributos

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

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

Ejercicios del tema 7: Clases y objetos

Practicas de Arquitectura del Software. Video Club La Esquina

Introducción a C# y la plataforma.net

CC Taller de UML Apuntes de Clase. Prof. Andrés Muñoz Ordenes 2 de mayo de 2012

Instructivo de Persistencia Utilizando Hibernate

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C.

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

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

Soluciones Ejercicios Tema 3

Tema 15: Aserciones 0

1. Qué tipos de relación hay entre las siguientes clases?

Programación II. Dr. Mario Rossainz López. Fac. de Cs. de la Computación Benemérita Universidad Autónoma de Puebla Primavera 2017

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Examen de Programación II (Ingeniería Informática)

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

Gestión de Reservas de Vuelos

Estructura de datos y Programación

Prueba N o 1. Programación II

HERENCIA. Problema: Reparar el el coche. Jesús (Valencia) Luis, Mecánico (Valencia) Antonio, Servicio Técnico Ferrari (Madrid)

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo

Examen de Prácticas de Programación Ingeniería Informática

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014

Transcripción:

Ejercicios Diagramas de interacción Ejercicio 1. Dados los siguientes diagramas de interacción, correspondientes a la gestión de un TPV, obtener el modelo del dominio mediante un diagrama de clases con toda la información posible (atributos y métodos en las clases, así como las relaciones entre dichas clases). 1. CrearVenta 1. crearventa : TPV 1.1. crear 1.1.1. crear : Venta : LineaVenta Dpto. LSI, Escuela Universitaria de Ingeniería de Vitoria-Gasteiz. 1

2. IntroducirItem 1. introduciritem(cant, id) : TPV 1.2. crearlv( ) 1.2.1. lv:=crear( ) : Venta lv : LineaVenta 1.1. p:= getproducto(id ) 1.2.2. add(lv) : CatalogoProducto : LineaVenta 1.1.1. p:=get(id) : Producto 3. FinalizarVenta : TPV : Venta 1. finalizarventa( ) 1.1. completar( ) 4. CalcularTotal :Cliente public gettotal() { int total = 0; for each lv:lineaventa total = total + lv.getsubtotal; return total; 1. gettotal( ) 1.1. * st:= getsubtotal( ) 1.1.1. pr:= getprecio( ) : Venta : LineaVenta : Producto {st = lv.cantidad + lv.producto.precio 2 Dpto. LSI, Escuela Universitaria de Ingeniería de Vitoria-Gasteiz.

5. RealizarPago 1. realizarpago(cant ) 1.1. crearpago(cant ) : TPV v : Venta 1.2. añadirventa(v ) 1.1.1. crear( cant) : Pago : Tienda 1.2.1. add(v) : Venta 6. CalcularDevolución 1.2. gettotal( ) 1. getdevolucion( ) 1.1. getcantidad( ) :Cliente v : Venta p : Pago dev = p.cantidad - v.gettotal Ejercicio 2. Dado el código Java de las clases, correspondientes a la gestión de un TPV, obtener el diagrama de clases con toda la información posible (atributos y métodos en las clases, así como las relaciones entre dichas clases). Además, se debe comprobar que coincide con el diagrama de clases anterior. Si no es así, entonces se tiene que corregir el código Java de estas clases de acuerdo con el diagrama de clases anterior. public class Pago { private Dinero cantentregada; public Pago (Dinero cantidad) { cantentregada = cantidad; Dpto. LSI, Escuela Universitaria de Ingeniería de Vitoria-Gasteiz. 3

public Dinero getcantentregada () { return cantentregada; public class CatalogoProducto { private Map productos = new HashMap (); public CatalogoProductos () { ItemId id1 = new ItemID (100); ItemId id2 = new ItemID (200); Dinero precio1 = new Dinero (3); Dinero precio2 = new Dinero (5); Producto p; p:= new Producto (id1, precio1, producto 1 ); productos.put (id1, p); p = new Producto (id2, precio2, producto 2 ); productos.put (id2, p); public Producto getproducto (ItemId id) { return (Producto) productos.get(id); public class TPV { private CatalogoProducto catalogo; private Venta venta; public TPV(CatalogoProducto cp) { catalogo = cp; public void crearnuevaventa () {venta = new Venta(); public void finalizarventa () { venta.completar(); public void introduciritem (ItemId id, int cant) { Producto p = catalogo.getproducto (id); Venta.crearLineaVenta (p, cant); public void realizarpago() { venta.crearpago(cant); public class Producto { private itemid id; private Dinero precio; private String descripcion; public Producto (ItemID id, Dinero precio, String desc) { this.id = id; this.precio = precio; this.descripcion = desc; public ItemId getid() { return id; public Dinero getprecio() { return precio; public String getdescripcion() { return descripcion; public class Venta { private List lineaventas = new ArrayList(); private Date fecha = new Date(); private boolean escompleta; private Pago pago; 4 Dpto. LSI, Escuela Universitaria de Ingeniería de Vitoria-Gasteiz.

public Dinero getdevolucion() { return pago.getcantentregada().minus(gettotal() ); public void completar() { escompleta = true; public void crearlineaventa(producto p, int cant) { lineaventas.add(new LineaVenta(p,cant)); public Dinero gettotal() { Dinero total = new Dinero(); Iterator i = lineaventas.iterator(); while (i.hasnext()) { LineaVenta lv = (LineaVenta) i.next(); total.add(lv.getsubtotal()); return total; public void crearpago (Dinero cantentregada) { pago = new Pago(cantEntregada); public class LineaVenta { private int cantidad; private Producto producto; public LineaVenta(Producto p, int cant) { this.producto = p; this.cantidad = cant; public Dinero getsubtotal () { return producto.getprecio().times(cantidad); public class Tienda { private CatalogoProducto catalogo; private TPV tpv; public TPV gettpv {return TPV; Ejercicio 3. Construir los diagramas de interacción para modelar los siguientes comportamientos dinámicos de la operación crearlaberinto : a. Versión 1 public class JuegoLaberinto { public Laberinto crearlaberinto () { Laberinto lab = new Laberinto(); Habitacion h1 = new Habitacion(); Habitacion h2 = new Habitacion(); Puerta puerta = new Puerta(h1, h2); Dpto. LSI, Escuela Universitaria de Ingeniería de Vitoria-Gasteiz. 5

lab.añadehabitacion(h1); lab.añadehabitacion(h2); h1.añadepuerta(puerta); return lab; b. Versión 2 public class JuegoLaberinto { private Laberinto lab; private boolean conventana; public JuegoLaberinto() { lab = new Laberinto(); conventana = true; public void crearlaberinto () { Habitacion h; for (int i=0; i<10; i++) { h = new Habitacion(); if (conventana == true) h.añadeventana(new Ventana()); lab.añadehabitacion(h); Ejercicio 4. Dado el siguiente diagrama de secuencia, correspondiente al escenario del caso de uso para eliminar una persona de una agenda, representar el diagrama de clases parcial en UML con toda la información posible (atributos y métodos en las clases, y relaciones entre dichas clases). 6 Dpto. LSI, Escuela Universitaria de Ingeniería de Vitoria-Gasteiz.

Ejercicio 5. Un sistema bancario está formado por cuentas. Una cuenta puede pertenecer a una persona o a una empresa. Una empresa tiene contratados a un conjunto de personas. Una persona puede estar contratada por varias empresas. El contrato de una empresa a una persona tiene un número de contrato y una fecha. Por otra parte, se cobran comisiones bancarias de mantenimiento a las cuentas. Para una cuenta de empresa, la comisión es de 9 euros, mientras que para la comisión de una cuenta personal, se considera el saldo de la cuenta y si está por debajo de un cierto valor (100 euros), la comisión es de 20 y en caso contrario de 15. Se pide: a. Representar la parte estática mediante un diagrama de clases detallado. b. Utilizando los métodos y clases del diagrama de clases del apartado a), construir los diagramas de secuencia necesarios para el siguiente escenario: Existen 1 empresa (e) y 2 personas (p1, p2). Se abre una cuenta para la empresa (c3) y una cuenta para cada persona (c1, c2). La empresa e contrata a las personas p1 y p2. La empresa e recibe una subvención de 10.000, de los cuales paga 2.000 a p1 y 3.000 a p2. A continuación, el banco cobra la comisión de mantenimiento a la empresa e y a las personas p1 y p2. Dpto. LSI, Escuela Universitaria de Ingeniería de Vitoria-Gasteiz. 7