SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Ejercicios UML
Juan de Lara
G 46Grupo 46
Curso 2008/09
1
IndiceIndice
Diagramas de clases y
OCLOCL.
Diagramas de Transición de EstadosDiagramas de Transición de Estados
Diagramas de Interacción.
2
EjercicioEjercicio
Representa mediante un diagrama de clases la siguienteRepresenta mediante un diagrama de clases la siguiente
especificación:
Una aplicación necesita almacenar información sobre
empresas, sus empleados y sus clientes.
Ambos se caracterizan por su nombre y edad.
L l d ti ld b t l l dLos empleados tienen un sueldo bruto, los empleados que
son directivos tienen una categoría, así como un conjunto de
empleados subordinados.p
De los clientes además se necesita conocer su teléfono de
contacto.
L li ió it t l d t d l dLa aplicación necesita mostrar los datos de empleados y
clientes.
3
EjercicioEjercicio
PersonaPersona
+ mostrar()
- nombre
- edad
+ mostrar()
- nombre
- edad
t ()
- sueldo_bruto - nombre_empresa- telefono_de_contacto
Empleado Cliente
subordinados
t ()
- sueldo_bruto - telefono_de_contacto
Empleado Cliente
subordinados
0..*
+mostrar()
+ mostrar ()
+ calcular_salario_neto()
empleados
clientes
+mostrar()
+ mostrar ()
+ calcular_salario_neto()
1..*
0..*
- categoria
Directivo
Empresa
b
empleados
- categoria
Directivo
Empresa
b
1
1..*
0..*
4
+ mostrar ()
- nombre
+ mostrar ()
- nombre
Ejercicio: BibliotecaEjercicio: Biblioteca
Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se
caracterizan por su nombre, tipo (novela, teatro, poesía,
ensayo), editorial, año y autor.
Los autores se caracterizan por su nombre, nacionalidad
y fecha de nacimiento.
Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la
biblioteca, prestada, con retraso o en reparación.
Los lectores pueden tener un máximo de 3 libros en
préstamopréstamo.
Cada libro se presta un máximo de 30 días, por cada día
de retraso, se impone una “multa” de dos días sinp
posibilidad de coger un nuevo libro.
Realiza un diagrama de clases y añade los métodos
necesarios para realizar el prestamo y devolución denecesarios para realizar el prestamo y devolución de
libros.
Libro
Copia
- id : Identifier
- estado: estadoCopia
Libro
- titulo : string
- tipo: tipoLibro
- editorial: string
i t
libro
11..*
ejemplar
Prestamo
0..3 prestamos - anyo: int
obras1..*
- inicio: Date
- fin: Date
0..1 lector Autor
b t i
autor1
Lector
- nSocio : Identifier
- nombre: string
- nombre: string
- nacionalidad: string
- fechaNacimiento: Date
- telefono: string
- direccion: string
<<enumeration>>
tipoLibro
novela
teatro
i
+ devolver(id: Identifier, fechaAct: Date)
{precondition: prestamos.notEmpty()}
1
<<enumeration>>
estadoCopia
poesia
ensayo
Multa
{precondition: prestamos.notEmpty()}
+ prestar(id: Identifier, fechaAct: Date)
{precondition: multa==0}
- multar(dias : int)
0..1multa
prestado
retraso
biblioteca
reparacion
- fInicio: Date
- fFin: Date
EjercicioEjercicio
Especificar un diagrama de clases que describa redes
de ordenadores.
Los elementos que se pueden incluir en la red son:
S id PC IServidor, PC, Impresora.
Hub, Cable de red.
Los PCs pueden conectarse con un único Hub losLos PCs pueden conectarse con un único Hub, los
servidores con uno o varios.
Los Servidores y PCs pueden generar mensajes, con
una cierta longitud.
Los Hubs tienen un número de puertos, algunos de los
cuales puede usarse para conectar con otros Hubscuales puede usarse para conectar con otros Hubs.
Tienen cierta probabilidad de “perder” mensajes.
Las impresoras pueden averiarse, con cierta
7
Las impresoras pueden averiarse, con cierta
probabilidad, durante cierto tiempo.
Ejercicio Posible SoluciónEjercicio. Posible Solución.
8
“Los PCs pueden conectarse con un único Hub, los servidores con uno o varios”
Podemos modelarlo como una restricción OCL, o bien añadir asociaciones desde
Servidor y PC
OCLOCL
“Los PCs pueden conectarse con un único Hub, los servidores con uno o varios”
Context PC
Inv: cable equipo >size() 1Inv: cable_equipo->size() = 1
Context Servidor
Inv: cable equipo->size() >= 1_ q p
“Un Hub no puede conectarse consigo mismo a través de un puerto”
Conte t C bl H bContext Cable_Hubs
Inv: Puerto_Hub.hub->asSet()->size() = 2
9
Ejercicio
Examen 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 pueden
realizar 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. Cada
cuenta está asociada a una tarjeta de crédito, y tiene una cierta cantidad
disponible de dinero, que el cliente debe aumentar periódicamente para poder
realizar nuevos pedidos.realizar nuevos pedidos.
Un cliente puede empezar a realizar un pedido sólo si tiene alguna cuenta con dinero
disponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simples
o 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 del
mismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos o
más pedidos, que pueden ser simples o compuestos. Como es de esperar, el
sistema debe garantizar que todos los pedidos simples que componen un pedido
compuesto 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 posible
realizar 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 p
cobro de los pedidos se hace una vez al día, y el proceso consiste en comprobar
todos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pago
correspondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (si
es parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el
10
p p p , p ) q
pedido está listo para servirse, se ordena su distribución, y una vez entregado,
pasa a estar confirmado.
Se pide un diagrama de clases de diseño. Añade las restricciones OCL necesarias.
Solución
11
Restricciones OCL:Restricciones OCL:
Context Cliente::realizar pedido:Context Cliente::realizar_pedido:
pre: self.cuentas->exists(c | c.disponible > 0)
Context Pedido Compuesto:
in self pedidos simples >c enta >cliente >asSet() >si e() 1inv: self.pedidos_simples->cuenta->cliente->asSet()->size() = 1
Context Pedido:
inv: self.t_productos.num->sum() <= 20
Context Pedido::añadirProducto(p: Producto, num: int):
pre: p.stock>=num
Context Cliente::rechazar_pedido (p:Pedido):
pre: self.cuentas.disponible->sum()<p.total
12
IndiceIndice
Diagramas de clases
Diagramas de Transición deDiagramas de Transición de
EstadosEstados
Diagramas de Interacción.
13
Ejercicio: BibliotecaEjercicio: Biblioteca
Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se
caracterizan por su nombre, tipo (novela, teatro, poesía,
ensayo), editorial, año y autor.
Los autores se caracterizan por su nombre, nacionalidad
y fecha de nacimiento.
Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la
biblioteca, prestada, reservada, con retraso o en
reparación.
Los lectores pueden tener un máximo de 3 libros enLos lectores pueden tener un máximo de 3 libros en
préstamo.
Cada libro se presta un máximo de 30 días, por cada díap p
de retraso, se impone una “multa” de dos días sin
posibilidad de coger un libro.
Realiza el diagrama de estados de la clase “copia”Realiza el diagrama de estados de la clase copia .
SolucionSolucion
en
Con
Retraso
Con
Retraso y
reser ado
devolver()reservar(id) /
usrRes = iden
reparacion
reparar()reparado()
Retraso
[getDate()>fp+30]
reservado
devolver() [getDate()>fp+30]
en
biblioteca
prestado
prestar(id,fecha)/
fp=fecha
reservado
reservar(id) /
usrRes = id
devolver()
devolver()prestar(id, fecha)
[usrRes==id]/
fp=fecha
t (2 d ) en
reserva
tm(2 days)
Solucion: Estados JerárquicosSolucion: Estados Jerárquicos
en
Con
Retraso
Con
Retraso y
reser ado
reservar(id) /
usrRes = iden
reparacion
reparar()reparado()
Retraso
[getDate()>fp+30]
reservado
[getDate()>fp+30]
usrRes = id
en
biblioteca
prestado
prestar(id,fecha)/
fp=fecha
reservado
reservar(id) /
usrRes = id
devolver() devolver()prestar(id, fecha)
[usrRes==id]/
fp=fechat (2 d ) en
reserva
fp=fechatm(2 days)
16
Máquinas de Estadosq
Estado Histórico. Ejercicio.
Modelar el comportamiento de una
cadena de música. Esta puede estarp
encendida (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
Máquinas de Estadosq
Estado Histórico. Ejercicio. Solución
On
Standby
On
CD modemodepower
H
Radio Tape
mode
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
Máquinas de Estadosq
Estado Histórico. Ejercicio. Solución (ii)
Standby On
power
CD mode
mode
power
power
lastCD
power
Radio Tape
mode
lastRadio
power
power
powerlastTape power
power
19
Ejercicio
Examen 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 pueden
realizar 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. Cada
cuenta está asociada a una tarjeta de crédito, y tiene una cierta cantidad
disponible de dinero, que el cliente debe aumentar periódicamente para poder
realizar nuevos pedidos.realizar nuevos pedidos.
Un cliente puede empezar a realizar un pedido sólo si tiene alguna cuenta con dinero
disponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simples
o 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 del
mismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos o
más pedidos, que pueden ser simples o compuestos. Como es de esperar, el
sistema debe garantizar que todos los pedidos simples que componen un pedido
compuesto 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 posible
realizar 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 p
cobro de los pedidos se hace una vez al día, y el proceso consiste en comprobar
todos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pago
correspondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (si
es parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el
20
p p p , p ) q
pedido 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
SoluciónSolución
21
EjercicioEjercicio
M d l l t i t ti d l j d lModelar el comportamiento reactivo de un reloj de pulsera.
El valor del tiempo se debe actualizar cada segundo, incluso cuando no se
muestra (p.ej. crono encendido).
El botón de la parte superior derecha enciende la luz que se mantieneEl botón de la parte superior derecha enciende la luz, que se mantiene
encendida tanto como el botón está apretado, una vez que se suelta, la luz
está encendida durante 2 segundos más y se apaga.
El botón superior izquierdo alterna entre el modo de crono y de reloj. El
sistema empieza en el modo reloj en el que se muestra la hora en formatosistema empieza en el modo reloj, en el que se muestra la hora en formato
HH:MM:SS.
En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC
(CC son centésimas de segundo). Inicialmente el crono empieza en
É
( g ) p
00:00:00. El botón inferior derecho se usa para activar el crono. Éste se
actualiza en incrementos de 1/100 segundos. Presionando el botón inferior
derecho pausa o continua el crono (si el reloj está en modo crono).
Pulsando el botón inferior izquierdo resetea el crono a 00:00:00 si el relojq j
está en modo crono y el crono ha sido pausado antes. El crono continua
corriendo (si está corriendo) o mantiene su valor (si está en pausa) incluso
cuando el reloj está en un modo de display distinto (por ejemplo, cuando se
muestra la hora).
22
muestra la hora).
Ejercicio
Interface provisto por el controlador:
Ejercicio
getTime() : Devuelve la hora actual.
refreshTimeDisplay() : Repinta la hora en el visor con la hora interna actual. El
visor no necesita limpiarse antes de llamar a esta función. Por ejemplo, si se está
visualizando el crono, se borrará antes de pintar la hora.
refreshChronoDisplay() : ver refreshTimeDisplay().
resetChrono() : Resetea el crono interno a 00:00:00.
increaseTime() : Incrementa la hora en un segundo. Los minutos y horas se
modificarán adecuademente, (por ejemplo, si se llama a increaseTime () a lasmodificarán adecuademente, (por ejemplo, si se llama a increaseTime () a las
11:59:59, la nueva hora será 12:00:00).
increaseChrono () : Incrementa el crono en 1/100 segundos.
setLight() : Enciende la luz del visor.
unsetLight() : Apaga la luz del visorunsetLight() : Apaga la luz del visor.
Eventos de botones recibidos:
topRightPressed.
topRightReleased.p g
topLeftPressed.
topLeftReleased.
bottomRightPressed.
bottomRightReleased
23
bottomRightReleased.
bottomLeftPressed.
bottomRightReleased.
Posible SoluciónPosible Solución.
24
IndiceIndice
Diagramas de clases
Diagramas de Transición de EstadosDiagramas de Transición de Estados
Diagramas de Interacción.g
25
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;
}
}
SoluciónSolución
:JuegoLaberinto
l b L b i t
crearLaberinto()
lab:Laberinto
h1:Habitacion
h2:Habitacion
puerta:Puerta
create(h1,h2)
añadeHabitacion(h1)
añadeHabitacion(h2)
añadePuerta(puerta)
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);
}
}
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)
EjercicioEjercicio
Especificar el diagrama de secuencia de la operación
“realizarJugada” definida en la clase Jugador, para el juego del
parchísparchís
Jugador
ill A t l i t
Dado
2*
- casillaActual: int
+ realizarJugada(): void
+ casillaActual(): int
+ tirar(): int
1
*
Tablero
+ mover(int actual,
int unidades):
1
int unidades):
boolean
SoluciónSolución
:Jugador d1:Dado
realizarJugada()
d2:Dado :Tablero
tirar()
n1
par
tirar()
n2
ca:=casillaActual()
mover(ca,n1+n2)
movRealizado
EjercicioEjercicio
Identificar las clases relevantes y realizar el diagrama deIdentificar las clases relevantes y realizar el diagrama de
secuencia para el siguiente caso de uso, que corresponde a
la realización de una llamada desde un teléfono móvil.
El usuario pulsa los dígitos del número de teléfono
Para cada dígitog
la pantalla se actualiza para añadir el dígito marcado
se emite un tono por el receptor
El usuario pulsa el botón “Enviar”El usuario pulsa el botón Enviar
El indicador “en uso” se ilumina en pantalla
El móvil establece conexión con la red
L dí it l d d l dLos dígitos acumulados se mandan a la red
Se establece la conexión con el número marcado
SoluciónSolución
:Button :Dialer send:Button:Display :CellularRadio:Speaker
digit(code)
loop [for i = 1 to 9]
displayDigit
send()
displayDigit
(code) emitTone
(code)
send()
connect(pno)
inUse()inUse()
¿Diagrama de colaboración
equivalente?
SoluciónSolución
Ejercicio: BibliotecaEjercicio: Biblioteca
Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se
caracterizan por su nombre, tipo (novela, teatro, poesía,
ensayo), editorial, año y autor.
Los autores se caracterizan por su nombre, nacionalidad
y fecha de nacimiento.
Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la
biblioteca, prestada, reservada, con retraso o en
reparación.
Los lectores pueden tener un máximo de 3 libros enLos lectores pueden tener un máximo de 3 libros en
préstamo.
Cada libro se presta un máximo de 30 días, por cada díap p
de retraso, se impone una “multa” de dos días sin
posibilidad de coger un libro.
Realiza el diagrama de colaboración para el métodoRealiza el diagrama de colaboración para el método
devolver()
SolucionSolucion
1: devolver(id, fecha)
1.3 [retraso>0]: multar(retraso)
:Lector
( , )
:Copia
prestamos
1.1: dev:=remove(id)
1.3.1a [multa=0]: multa:=
lt M lt
create(fecha,retraso)
dev:Copia1.2: retraso:=getRetraso(fecha)
multa:Multa
{new}
multa:Multa
1.3.1b [multa<>0]: anyade(fecha,retraso)

Más contenido relacionado

La actualidad más candente

Base de datos de una pizzeria
Base de datos de una pizzeriaBase de datos de una pizzeria
Base de datos de una pizzeriaLupithaa Guerrero
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesjmachado614
 
Diagramas de estados
Diagramas de estadosDiagramas de estados
Diagramas de estadosstill01
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?Software Guru
 
1. modelo entidad relacion ejemplo
1. modelo entidad relacion   ejemplo1. modelo entidad relacion   ejemplo
1. modelo entidad relacion ejemplouniv of pamplona
 
Diagramas de clases y actividades
Diagramas de clases y actividadesDiagramas de clases y actividades
Diagramas de clases y actividadesTerryJoss
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesNedoww Haw
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionLuiS YmAY
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
Tipos de Modelos de Datos : Ventajas y Desventajas
Tipos de Modelos de Datos : Ventajas y DesventajasTipos de Modelos de Datos : Ventajas y Desventajas
Tipos de Modelos de Datos : Ventajas y DesventajasJuanMiguelCustodioMo
 
Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Maria Garcia
 
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...José Antonio Sandoval Acosta
 

La actualidad más candente (20)

Base de datos de una pizzeria
Base de datos de una pizzeriaBase de datos de una pizzeria
Base de datos de una pizzeria
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Diagramas de estados
Diagramas de estadosDiagramas de estados
Diagramas de estados
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Conceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de DatosConceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de Datos
 
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
 
1. modelo entidad relacion ejemplo
1. modelo entidad relacion   ejemplo1. modelo entidad relacion   ejemplo
1. modelo entidad relacion ejemplo
 
UML
UMLUML
UML
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Diagramas de clases y actividades
Diagramas de clases y actividadesDiagramas de clases y actividades
Diagramas de clases y actividades
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Modelo entidad
Modelo entidadModelo entidad
Modelo entidad
 
22 ejercicios base de datos
22 ejercicios base de datos 22 ejercicios base de datos
22 ejercicios base de datos
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Tipos de Modelos de Datos : Ventajas y Desventajas
Tipos de Modelos de Datos : Ventajas y DesventajasTipos de Modelos de Datos : Ventajas y Desventajas
Tipos de Modelos de Datos : Ventajas y Desventajas
 
Requisitos funcionales y no funcionales
Requisitos funcionales y no funcionales Requisitos funcionales y no funcionales
Requisitos funcionales y no funcionales
 
Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos Cuadro comparativo de manejadores de la base de datos
Cuadro comparativo de manejadores de la base de datos
 
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
 

Similar a Ejercicios uml (20)

Ejercicios uml
Ejercicios umlEjercicios uml
Ejercicios uml
 
Uml Xp 02
Uml Xp 02Uml Xp 02
Uml Xp 02
 
Uml Xp 02 Ucc
Uml Xp 02 UccUml Xp 02 Ucc
Uml Xp 02 Ucc
 
Bases de datos s14
Bases de datos s14Bases de datos s14
Bases de datos s14
 
Bases de datos s14
Bases de datos s14Bases de datos s14
Bases de datos s14
 
Ejercicios sql (1)
Ejercicios sql (1)Ejercicios sql (1)
Ejercicios sql (1)
 
Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
 
Lenguajes formales
Lenguajes formalesLenguajes formales
Lenguajes formales
 
P:\Lenguajes Formales
P:\Lenguajes FormalesP:\Lenguajes Formales
P:\Lenguajes Formales
 
Taller Consultas Básicas SQL Server No 1
Taller Consultas Básicas SQL Server No 1Taller Consultas Básicas SQL Server No 1
Taller Consultas Básicas SQL Server No 1
 
Ac diseño de reactivos
Ac diseño de reactivosAc diseño de reactivos
Ac diseño de reactivos
 
Dfd
DfdDfd
Dfd
 
Tarea 3
Tarea 3Tarea 3
Tarea 3
 
Bases de datos cel2015
Bases de datos cel2015Bases de datos cel2015
Bases de datos cel2015
 
Bases de datos cel2015
Bases de datos cel2015Bases de datos cel2015
Bases de datos cel2015
 
Ejercicios De Sql BD
Ejercicios De Sql BDEjercicios De Sql BD
Ejercicios De Sql BD
 
Clase3.ppt
Clase3.pptClase3.ppt
Clase3.ppt
 
Ejercicios
Ejercicios Ejercicios
Ejercicios
 
G modelo E/R
G modelo E/RG modelo E/R
G modelo E/R
 
Mate negocios unidad 5
Mate negocios unidad 5Mate negocios unidad 5
Mate negocios unidad 5
 

Último

Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTGestorManpower
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 

Último (20)

Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SST
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 

Ejercicios uml

  • 1. Ejercicios UML Juan de Lara G 46Grupo 46 Curso 2008/09 1
  • 2. IndiceIndice Diagramas de clases y OCLOCL. Diagramas de Transición de EstadosDiagramas de Transición de Estados Diagramas de Interacción. 2
  • 3. EjercicioEjercicio Representa mediante un diagrama de clases la siguienteRepresenta mediante un diagrama de clases la siguiente especificación: Una aplicación necesita almacenar información sobre empresas, sus empleados y sus clientes. Ambos se caracterizan por su nombre y edad. L l d ti ld b t l l dLos empleados tienen un sueldo bruto, los empleados que son directivos tienen una categoría, así como un conjunto de empleados subordinados.p De los clientes además se necesita conocer su teléfono de contacto. L li ió it t l d t d l dLa aplicación necesita mostrar los datos de empleados y clientes. 3
  • 4. EjercicioEjercicio PersonaPersona + mostrar() - nombre - edad + mostrar() - nombre - edad t () - sueldo_bruto - nombre_empresa- telefono_de_contacto Empleado Cliente subordinados t () - sueldo_bruto - telefono_de_contacto Empleado Cliente subordinados 0..* +mostrar() + mostrar () + calcular_salario_neto() empleados clientes +mostrar() + mostrar () + calcular_salario_neto() 1..* 0..* - categoria Directivo Empresa b empleados - categoria Directivo Empresa b 1 1..* 0..* 4 + mostrar () - nombre + mostrar () - nombre
  • 5. Ejercicio: BibliotecaEjercicio: Biblioteca Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento. Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en reparación. Los lectores pueden tener un máximo de 3 libros en préstamopréstamo. Cada libro se presta un máximo de 30 días, por cada día de retraso, se impone una “multa” de dos días sinp posibilidad de coger un nuevo libro. Realiza un diagrama de clases y añade los métodos necesarios para realizar el prestamo y devolución denecesarios para realizar el prestamo y devolución de libros.
  • 6. Libro Copia - id : Identifier - estado: estadoCopia Libro - titulo : string - tipo: tipoLibro - editorial: string i t libro 11..* ejemplar Prestamo 0..3 prestamos - anyo: int obras1..* - inicio: Date - fin: Date 0..1 lector Autor b t i autor1 Lector - nSocio : Identifier - nombre: string - nombre: string - nacionalidad: string - fechaNacimiento: Date - telefono: string - direccion: string <<enumeration>> tipoLibro novela teatro i + devolver(id: Identifier, fechaAct: Date) {precondition: prestamos.notEmpty()} 1 <<enumeration>> estadoCopia poesia ensayo Multa {precondition: prestamos.notEmpty()} + prestar(id: Identifier, fechaAct: Date) {precondition: multa==0} - multar(dias : int) 0..1multa prestado retraso biblioteca reparacion - fInicio: Date - fFin: Date
  • 7. EjercicioEjercicio Especificar un diagrama de clases que describa redes de ordenadores. Los elementos que se pueden incluir en la red son: S id PC IServidor, PC, Impresora. Hub, Cable de red. Los PCs pueden conectarse con un único Hub losLos PCs pueden conectarse con un único Hub, los servidores con uno o varios. Los Servidores y PCs pueden generar mensajes, con una cierta longitud. Los Hubs tienen un número de puertos, algunos de los cuales puede usarse para conectar con otros Hubscuales puede usarse para conectar con otros Hubs. Tienen cierta probabilidad de “perder” mensajes. Las impresoras pueden averiarse, con cierta 7 Las impresoras pueden averiarse, con cierta probabilidad, durante cierto tiempo.
  • 8. Ejercicio Posible SoluciónEjercicio. Posible Solución. 8 “Los PCs pueden conectarse con un único Hub, los servidores con uno o varios” Podemos modelarlo como una restricción OCL, o bien añadir asociaciones desde Servidor y PC
  • 9. OCLOCL “Los PCs pueden conectarse con un único Hub, los servidores con uno o varios” Context PC Inv: cable equipo >size() 1Inv: cable_equipo->size() = 1 Context Servidor Inv: cable equipo->size() >= 1_ q p “Un Hub no puede conectarse consigo mismo a través de un puerto” Conte t C bl H bContext Cable_Hubs Inv: Puerto_Hub.hub->asSet()->size() = 2 9
  • 10. Ejercicio Examen 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 pueden realizar 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. Cada cuenta está asociada a una tarjeta de crédito, y tiene una cierta cantidad disponible de dinero, que el cliente debe aumentar periódicamente para poder realizar nuevos pedidos.realizar nuevos pedidos. Un cliente puede empezar a realizar un pedido sólo si tiene alguna cuenta con dinero disponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simples o 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 del mismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos o más pedidos, que pueden ser simples o compuestos. Como es de esperar, el sistema debe garantizar que todos los pedidos simples que componen un pedido compuesto 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 posible realizar 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 p cobro de los pedidos se hace una vez al día, y el proceso consiste en comprobar todos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pago correspondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (si es parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el 10 p p p , p ) q pedido está listo para servirse, se ordena su distribución, y una vez entregado, pasa a estar confirmado. Se pide un diagrama de clases de diseño. Añade las restricciones OCL necesarias.
  • 12. Restricciones OCL:Restricciones OCL: Context Cliente::realizar pedido:Context Cliente::realizar_pedido: pre: self.cuentas->exists(c | c.disponible > 0) Context Pedido Compuesto: in self pedidos simples >c enta >cliente >asSet() >si e() 1inv: self.pedidos_simples->cuenta->cliente->asSet()->size() = 1 Context Pedido: inv: self.t_productos.num->sum() <= 20 Context Pedido::añadirProducto(p: Producto, num: int): pre: p.stock>=num Context Cliente::rechazar_pedido (p:Pedido): pre: self.cuentas.disponible->sum()<p.total 12
  • 13. IndiceIndice Diagramas de clases Diagramas de Transición deDiagramas de Transición de EstadosEstados Diagramas de Interacción. 13
  • 14. Ejercicio: BibliotecaEjercicio: Biblioteca Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento. Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparación. Los lectores pueden tener un máximo de 3 libros enLos lectores pueden tener un máximo de 3 libros en préstamo. Cada libro se presta un máximo de 30 días, por cada díap p de retraso, se impone una “multa” de dos días sin posibilidad de coger un libro. Realiza el diagrama de estados de la clase “copia”Realiza el diagrama de estados de la clase copia .
  • 15. SolucionSolucion en Con Retraso Con Retraso y reser ado devolver()reservar(id) / usrRes = iden reparacion reparar()reparado() Retraso [getDate()>fp+30] reservado devolver() [getDate()>fp+30] en biblioteca prestado prestar(id,fecha)/ fp=fecha reservado reservar(id) / usrRes = id devolver() devolver()prestar(id, fecha) [usrRes==id]/ fp=fecha t (2 d ) en reserva tm(2 days)
  • 16. Solucion: Estados JerárquicosSolucion: Estados Jerárquicos en Con Retraso Con Retraso y reser ado reservar(id) / usrRes = iden reparacion reparar()reparado() Retraso [getDate()>fp+30] reservado [getDate()>fp+30] usrRes = id en biblioteca prestado prestar(id,fecha)/ fp=fecha reservado reservar(id) / usrRes = id devolver() devolver()prestar(id, fecha) [usrRes==id]/ fp=fechat (2 d ) en reserva fp=fechatm(2 days) 16
  • 17. Máquinas de Estadosq Estado Histórico. Ejercicio. Modelar el comportamiento de una cadena de música. Esta puede estarp encendida (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
  • 18. Máquinas de Estadosq Estado Histórico. Ejercicio. Solución On Standby On CD modemodepower H Radio Tape mode 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
  • 19. Máquinas de Estadosq Estado Histórico. Ejercicio. Solución (ii) Standby On power CD mode mode power power lastCD power Radio Tape mode lastRadio power power powerlastTape power power 19
  • 20. Ejercicio Examen 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 pueden realizar 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. Cada cuenta está asociada a una tarjeta de crédito, y tiene una cierta cantidad disponible de dinero, que el cliente debe aumentar periódicamente para poder realizar nuevos pedidos.realizar nuevos pedidos. Un cliente puede empezar a realizar un pedido sólo si tiene alguna cuenta con dinero disponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simples o 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 del mismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos o más pedidos, que pueden ser simples o compuestos. Como es de esperar, el sistema debe garantizar que todos los pedidos simples que componen un pedido compuesto 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 posible realizar 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 p cobro de los pedidos se hace una vez al día, y el proceso consiste en comprobar todos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pago correspondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (si es parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el 20 p p p , p ) q pedido 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
  • 22. EjercicioEjercicio M d l l t i t ti d l j d lModelar el comportamiento reactivo de un reloj de pulsera. El valor del tiempo se debe actualizar cada segundo, incluso cuando no se muestra (p.ej. crono encendido). El botón de la parte superior derecha enciende la luz que se mantieneEl botón de la parte superior derecha enciende la luz, que se mantiene encendida tanto como el botón está apretado, una vez que se suelta, la luz está encendida durante 2 segundos más y se apaga. El botón superior izquierdo alterna entre el modo de crono y de reloj. El sistema empieza en el modo reloj en el que se muestra la hora en formatosistema empieza en el modo reloj, en el que se muestra la hora en formato HH:MM:SS. En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC (CC son centésimas de segundo). Inicialmente el crono empieza en É ( g ) p 00:00:00. El botón inferior derecho se usa para activar el crono. Éste se actualiza en incrementos de 1/100 segundos. Presionando el botón inferior derecho pausa o continua el crono (si el reloj está en modo crono). Pulsando el botón inferior izquierdo resetea el crono a 00:00:00 si el relojq j está en modo crono y el crono ha sido pausado antes. El crono continua corriendo (si está corriendo) o mantiene su valor (si está en pausa) incluso cuando el reloj está en un modo de display distinto (por ejemplo, cuando se muestra la hora). 22 muestra la hora).
  • 23. Ejercicio Interface provisto por el controlador: Ejercicio getTime() : Devuelve la hora actual. refreshTimeDisplay() : Repinta la hora en el visor con la hora interna actual. El visor no necesita limpiarse antes de llamar a esta función. Por ejemplo, si se está visualizando el crono, se borrará antes de pintar la hora. refreshChronoDisplay() : ver refreshTimeDisplay(). resetChrono() : Resetea el crono interno a 00:00:00. increaseTime() : Incrementa la hora en un segundo. Los minutos y horas se modificarán adecuademente, (por ejemplo, si se llama a increaseTime () a lasmodificarán adecuademente, (por ejemplo, si se llama a increaseTime () a las 11:59:59, la nueva hora será 12:00:00). increaseChrono () : Incrementa el crono en 1/100 segundos. setLight() : Enciende la luz del visor. unsetLight() : Apaga la luz del visorunsetLight() : Apaga la luz del visor. Eventos de botones recibidos: topRightPressed. topRightReleased.p g topLeftPressed. topLeftReleased. bottomRightPressed. bottomRightReleased 23 bottomRightReleased. bottomLeftPressed. bottomRightReleased.
  • 25. IndiceIndice Diagramas de clases Diagramas de Transición de EstadosDiagramas de Transición de Estados Diagramas de Interacción.g 25
  • 26. 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; } }
  • 27. SoluciónSolución :JuegoLaberinto l b L b i t crearLaberinto() lab:Laberinto h1:Habitacion h2:Habitacion puerta:Puerta create(h1,h2) añadeHabitacion(h1) añadeHabitacion(h2) añadePuerta(puerta)
  • 28. 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); } }
  • 29. 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)
  • 30. EjercicioEjercicio Especificar el diagrama de secuencia de la operación “realizarJugada” definida en la clase Jugador, para el juego del parchísparchís Jugador ill A t l i t Dado 2* - casillaActual: int + realizarJugada(): void + casillaActual(): int + tirar(): int 1 * Tablero + mover(int actual, int unidades): 1 int unidades): boolean
  • 32. EjercicioEjercicio Identificar las clases relevantes y realizar el diagrama deIdentificar las clases relevantes y realizar el diagrama de secuencia para el siguiente caso de uso, que corresponde a la realización de una llamada desde un teléfono móvil. El usuario pulsa los dígitos del número de teléfono Para cada dígitog la pantalla se actualiza para añadir el dígito marcado se emite un tono por el receptor El usuario pulsa el botón “Enviar”El usuario pulsa el botón Enviar El indicador “en uso” se ilumina en pantalla El móvil establece conexión con la red L dí it l d d l dLos dígitos acumulados se mandan a la red Se establece la conexión con el número marcado
  • 33. SoluciónSolución :Button :Dialer send:Button:Display :CellularRadio:Speaker digit(code) loop [for i = 1 to 9] displayDigit send() displayDigit (code) emitTone (code) send() connect(pno) inUse()inUse() ¿Diagrama de colaboración equivalente?
  • 35. Ejercicio: BibliotecaEjercicio: Biblioteca Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento. Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparación. Los lectores pueden tener un máximo de 3 libros enLos lectores pueden tener un máximo de 3 libros en préstamo. Cada libro se presta un máximo de 30 días, por cada díap p de retraso, se impone una “multa” de dos días sin posibilidad de coger un libro. Realiza el diagrama de colaboración para el métodoRealiza el diagrama de colaboración para el método devolver()
  • 36. SolucionSolucion 1: devolver(id, fecha) 1.3 [retraso>0]: multar(retraso) :Lector ( , ) :Copia prestamos 1.1: dev:=remove(id) 1.3.1a [multa=0]: multa:= lt M lt create(fecha,retraso) dev:Copia1.2: retraso:=getRetraso(fecha) multa:Multa {new} multa:Multa 1.3.1b [multa<>0]: anyade(fecha,retraso)