ejercicios_uml2

13
Ejercicio Ejercicio Persona + mostrar() - nombre - edad t () subordinados t () - sueldo_bruto - telefono_de_contacto Empleado Cliente subordinados 0..* + mostrar () empleados clientes +mostrar() + mostrar () + calcular_salario_neto() 1..* 0..* b empleados - categoria Directivo Empresa b 1 1..* 0..* 4 - nombre + mostrar () - nombre

Upload: alexknemesis

Post on 23-Dec-2015

7 views

Category:

Documents


2 download

DESCRIPTION

UML UML UML UML UML UML UML UML UML UML UML UML UML

TRANSCRIPT

Page 1: ejercicios_UML2

EjercicioEjercicioPersonaPersona

+ mostrar()

- nombre- edad

+ mostrar()

- nombre- edad

t ()

- sueldo_bruto - nombre_empresa- telefono_de_contacto

Empleado Clientesubordinados

t ()

- sueldo_bruto - telefono_de_contacto

Empleado Clientesubordinados

0..*

+mostrar()

+ mostrar ()+ calcular_salario_neto()

empleados clientes+mostrar()

+ mostrar ()+ calcular_salario_neto()

1..*0..*

- categoria

DirectivoEmpresa

b

empleados

- categoria

DirectivoEmpresa

b1

1..*

0..*

4+ mostrar ()- nombre

+ mostrar ()- nombre

Page 2: ejercicios_UML2

SolucionSolucion

enCon

Retraso

ConRetraso yreser ado

devolver()reservar(id) /usrRes = iden

reparacion

reparar()reparado()

Retraso

[getDate()>fp+30]

reservado

devolver() [getDate()>fp+30]

enbiblioteca prestado

prestar(id,fecha)/fp=fecha reservadoreservar(id) /

usrRes = iddevolver()

devolver()prestar(id, fecha)[usrRes==id]/fp=fecha

t (2 d ) enreserva

tm(2 days)

Page 3: ejercicios_UML2

Solucion: Estados JerárquicosSolucion: Estados Jerárquicos

enCon

Retraso

ConRetraso yreser ado

reservar(id) /usrRes = iden

reparacion

reparar()reparado()

Retraso

[getDate()>fp+30]

reservado

[getDate()>fp+30]

usrRes = id

enbiblioteca prestado

prestar(id,fecha)/fp=fecha reservadoreservar(id) /

usrRes = id

devolver() devolver()prestar(id, fecha)[usrRes==id]/fp=fechat (2 d ) en

reservafp=fechatm(2 days)

16

Page 4: ejercicios_UML2

Máquinas de EstadosqEstado Histórico. Ejercicio.

Modelar el comportamiento de una cadena de música. Esta puede estar pencendida (ON) o apagada (Standby). La cadena tiene reproductor de CD Radio ycadena tiene reproductor de CD, Radio y Cinta. Se cambia de uno a otro con el botón “mode” Cuando se enciende labotón mode . Cuando se enciende la cadena se recuerda el último estado en el que estuvo.

17

Page 5: ejercicios_UML2

Máquinas de EstadosqEstado Histórico. Ejercicio. Solución

On

Standby

On

CD modemodepower

H

Radio Tapemode

power H

mode

M d l l i i t i t d hi tó iModelar el mismo sistema sin usar estado histórico.

18

Page 6: ejercicios_UML2

Máquinas de EstadosqEstado Histórico. Ejercicio. Solución (ii)

Standby Onpower

CD modemode

power

powerlastCD

power

Radio Tapemode

lastRadiopower

power

powerlastTape power

power

19

Page 7: ejercicios_UML2

EjercicioExamen Junio 2008.

Realiza el diseño de una aplicación para la gestión de pedidos. La aplicación deberámanejar clientes (se guarda su nombre, dirección, teléfono y e-mail), que puedenrealizar pedidos de productos, de los cuales se anota la cantidad en stock. Unp p ,cliente puede tener una o varias cuentas para el pago de los pedidos. Cadacuenta está asociada a una tarjeta de crédito, y tiene una cierta cantidaddisponible de dinero, que el cliente debe aumentar periódicamente para poderrealizar nuevos pedidos.realizar nuevos pedidos.

Un cliente puede empezar a realizar un pedido sólo si tiene alguna cuenta con dinerodisponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simpleso compuestos. Los pedidos simples están asociados a una sola cuenta de pago y(por restricciones en la distribución) contienen un máximo de 20 unidades del(por restricciones en la distribución) contienen un máximo de 20 unidades delmismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos omás pedidos, que pueden ser simples o compuestos. Como es de esperar, elsistema debe garantizar que todos los pedidos simples que componen un pedidocompuesto se paguen con cuentas del mismo cliente Además sólo es posiblecompuesto se paguen con cuentas del mismo cliente. Además, sólo es posiblerealizar peticiones de productos en stock.

Existe una clase (de la cual debe haber una única instancia en la aplicación)responsable del cobro, orden de distribución y confirmación de los pedidos. Elp y pcobro de los pedidos se hace una vez al día, y el proceso consiste en comprobartodos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pagocorrespondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (sies parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el

20

p p p , p ) qpedido está listo para servirse, se ordena su distribución, y una vez entregado,pasa a estar confirmado.

Se pide un diagrama de transición de estados para la clase Pedido

Page 8: ejercicios_UML2

EjercicioEjercicio

fEspecificar el diagrama de secuencia de la operación “crearLaberinto”

public class JuegoLaberinto {public Laberinto crearLaberinto () {

Laberinto lab = new Laberinto();Habitacion h1 = new Habitacion();Habitacion h2 = new Habitacion();Puerta puerta = new Puerta(h1, h2);

lab.añadeHabitacion(h1);lab.añadeHabitacion(h2);h1.añadePuerta(puerta);return lab;

}}

Page 9: ejercicios_UML2

SoluciónSolución

:JuegoLaberinto

l b L b i tcrearLaberinto()

lab:Laberinto

h1:Habitacion

h2:Habitacion

puerta:Puertacreate(h1,h2)

añadeHabitacion(h1)

añadeHabitacion(h2)

añadePuerta(puerta)

Page 10: ejercicios_UML2

EjercicioEjercicio

Especificar el diagrama de secuencia de la operaciónEspecificar el diagrama de secuencia de la operación “crearLaberinto”

public class JuegoLaberinto {private Laberinto lab;private boolean conVentana;

public JuegoLaberinto() {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);

}}

Page 11: ejercicios_UML2

SoluciónSolución

:JuegoLaberinto lab:Laberinto

crearLaberinto()

h:Habitacion

loop [for i = 1 to 10]

v:Ventana

opt [conVentana==true]

añadeVentana(v)

añadeHabitacion(h)

Page 12: ejercicios_UML2

EjercicioEjercicio

Especificar el diagrama de secuencia de la operación “realizarJugada” definida en la clase Jugador, para el juego del parchísparchís

Jugadorill A t l i t

Dado2*

- casillaActual: int+ realizarJugada(): void+ casillaActual(): int

+ tirar(): int

1*

Tablero

+ mover(int actual, int unidades):

1

int unidades): boolean

Page 13: ejercicios_UML2

SoluciónSolución

:Jugador d1:Dado

realizarJugada()

d2:Dado :Tablero

tirar()

n1

par

tirar()

n2

ca:=casillaActual()

mover(ca,n1+n2)

movRealizado