Está en la página 1de 36

Ejercicios UML

J uan de Lara
G 46 Grupo 46
Curso 2008/09
1
Indice Indice
Diagramas de clases y
OCL OCL.
Diagramas de Transicin de Estados Diagramas de Transicin de Estados
Diagramas de Interaccin.
2
Ejercicio Ejercicio
Representa mediante un diagrama de clases la siguiente Representa mediante un diagrama de clases la siguiente
especificacin:
Una aplicacin necesita almacenar informacin sobre
empresas, sus empleados y sus clientes.
Ambos se caracterizan por su nombre y edad.
L l d ti ld b t l l d Los empleados tienen un sueldo bruto, los empleados que
son directivos tienen una categora, as como un conjunto de
empleados subordinados. p
De los clientes adems se necesita conocer su telfono de
contacto.
L li i it t l d t d l d La aplicacin necesita mostrar los datos de empleados y
clientes.
3
Ejercicio Ejercicio
Persona Persona
+ 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: Biblioteca Ejercicio: Biblioteca
Una biblioteca tiene copias de libros Estos ltimos se Una biblioteca tiene copias de libros. Estos ltimos se
caracterizan por su nombre, tipo (novela, teatro, poesa,
ensayo), editorial, ao y autor.
Los autores se caracterizan por su nombre, nacionalidad
y fecha de nacimiento.
Cada copia tiene un identificador y puede estar en la Cada copia tiene un identificador, y puede estar en la
biblioteca, prestada, con retraso o en reparacin.
Los lectores pueden tener un mximo de 3 libros en
prstamo prstamo.
Cada libro se presta un mximo de 30 das, por cada da
de retraso, se impone una multa de dos das sin p
posibilidad de coger un nuevo libro.
Realiza un diagrama de clases y aade los mtodos
necesarios para realizar el prestamo y devolucin de necesarios para realizar el prestamo y devolucin de
libros.
Libro
Copia
- id : Identifier
- estado: estadoCopia
Libro
- titulo : string
- tipo: tipoLibro
- editorial: string
i t
libro
1
1..*
ejemplar
Prestamo
0..3 prestamos
- anyo: int
obras
1..*
- inicio: Date
- fin: Date
0..1 lector
Autor
b t i
autor 1
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..1
multa
prestado
retraso
biblioteca
reparacion
- fInicio: Date
- fFin: Date
Ejercicio Ejercicio
Especificar un diagrama de clases que describa redes
de ordenadores.
Los elementos que se pueden incluir en la red son:
S id PC I Servidor, PC, Impresora.
Hub, Cable de red.
Los PCs pueden conectarse con un nico Hub los Los 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 nmero de puertos, algunos de los
cuales puede usarse para conectar con otros Hubs cuales puede usarse para conectar con otros Hubs.
Tienen cierta probabilidad de perdermensajes.
Las impresoras pueden averiarse, con cierta
7
Las impresoras pueden averiarse, con cierta
probabilidad, durante cierto tiempo.
Ejercicio Posible Solucin Ejercicio. Posible Solucin.
8
Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios
Podemos modelarlo como una restriccin OCL, o bien aadir asociaciones desde
Servidor y PC
OCL OCL
Los PCs pueden conectarse con un nico Hub, los servidores con uno o varios
Context PC
Inv: cabl e equi po >si ze( ) 1 Inv: cabl e_equi po- >si ze( ) = 1
Context Ser vi dor
Inv: cabl e equi po- >si ze( ) >= 1 _ q p
Un Hub no puede conectarse consigo mismo a travs de un puerto
Conte t C bl H b Context Cabl e_Hubs
Inv: Puer t o_Hub. hub- >asSet ( ) - >si ze( ) = 2
9
Ejercicio
Examen Junio 2008.
Realiza el diseo de una aplicacin para la gestin de pedidos. La aplicacin deber
manejar clientes (se guarda su nombre, direccin, telfono y e-mail), que pueden
realizar pedidos de productos, de los cuales se anota la cantidad en stock. Un p p ,
cliente puede tener una o varias cuentas para el pago de los pedidos. Cada
cuenta est asociada a una tarjeta de crdito, y tiene una cierta cantidad
disponible de dinero, que el cliente debe aumentar peridicamente para poder
realizar nuevos pedidos. realizar nuevos pedidos.
Un cliente puede empezar a realizar un pedido slo si tiene alguna cuenta con dinero
disponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simples
o compuestos. Los pedidos simples estn asociados a una sola cuenta de pago y
(por restricciones en la distribucin) contienen un mximo de 20 unidades del (por restricciones en la distribucin) contienen un mximo de 20 unidades del
mismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos o
ms 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 Adems slo es posible compuesto se paguen con cuentas del mismo cliente. Adems, slo es posible
realizar peticiones de productos en stock.
Existe una clase (de la cual debe haber una nica instancia en la aplicacin)
responsable del cobro, orden de distribucin y confirmacin de los pedidos. El p y p
cobro de los pedidos se hace una vez al da, 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 distribucin, y una vez entregado,
pasa a estar confirmado.
Se pide un diagrama de clases de diseo. Aade las restricciones OCL necesarias.
Solucin
11
Restricciones OCL: Restricciones OCL:
Cont ext Cl i ent e: : r eal i zar pedi do: Cont ext Cl i ent e: : r eal i zar _pedi do:
pr e: sel f . cuent as- >exi st s( c | c. di sponi bl e > 0)
Cont ext Pedi do Compuest o:
i n sel f pedi dos si mpl es >c ent a >cl i ent e >asSet ( ) >si e( ) 1 i nv: sel f . pedi dos_si mpl es- >cuent a- >cl i ent e- >asSet ( ) - >si ze( ) = 1
Cont ext Pedi do:
i nv: sel f . t _pr oduct os. num- >sum( ) <= 20
Cont ext Pedi do: : aadi r Pr oduct o( p: Pr oduct o, num: i nt ) :
pr e: p. st ock>=num
Cont ext Cl i ent e: : r echazar _pedi do ( p: Pedi do) :
pr e: sel f . cuent as. di sponi bl e- >sum( ) <p. t ot al
12
Indice Indice
Diagramas de clases
Diagramas de Transicin de Diagramas de Transicin de
Estados Estados
Diagramas de Interaccin.
13
Ejercicio: Biblioteca Ejercicio: Biblioteca
Una biblioteca tiene copias de libros Estos ltimos se Una biblioteca tiene copias de libros. Estos ltimos se
caracterizan por su nombre, tipo (novela, teatro, poesa,
ensayo), editorial, ao y autor.
Los autores se caracterizan por su nombre, nacionalidad
y fecha de nacimiento.
Cada copia tiene un identificador y puede estar en la Cada copia tiene un identificador, y puede estar en la
biblioteca, prestada, reservada, con retraso o en
reparacin.
Los lectores pueden tener un mximo de 3 libros en Los lectores pueden tener un mximo de 3 libros en
prstamo.
Cada libro se presta un mximo de 30 das, por cada da p p
de retraso, se impone una multa de dos das sin
posibilidad de coger un libro.
Realiza el diagrama de estados de la clase copia Realiza el diagrama de estados de la clase copia .
Solucion Solucion
en
Con
Retraso
Con
Retraso y
reser ado
devolver()
reservar(id) /
usrRes = id
en
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 Jerrquicos Solucion: Estados Jerrquicos
en
Con
Retraso
Con
Retraso y
reser ado
reservar(id) /
usrRes =id
en
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=fecha
t (2 d ) en
reserva
fp=fecha
tm(2 days)
16
Mquinas de Estados q
Estado Histrico. Ejercicio.
Modelar el comportamiento de una
cadena de msica. Esta puede estar p
encendida (ON) o apagada (Standby). La
cadena tiene reproductor de CD Radio y cadena tiene reproductor de CD, Radio y
Cinta. Se cambia de uno a otro con el
botn mode Cuando se enciende la botn mode . Cuando se enciende la
cadena se recuerda el ltimo estado en el
que estuvo.
17
Mquinas de Estados q
Estado Histrico. Ejercicio. Solucin
On
Standby
On
CD
mode mode
power
H
Radio Tape
mode
power
H
mode
M d l l i i t i t d hi t i Modelar el mismo sistema sin usar estado histrico.
18
Mquinas de Estados q
Estado Histrico. Ejercicio. Solucin (ii)
Standby
On
power
CD
mode
mode
power
power
lastCD
power
Radio Tape
mode
lastRadio
power
power
power
lastTape
power
power
19
Ejercicio
Examen Junio 2008.
Realiza el diseo de una aplicacin para la gestin de pedidos. La aplicacin deber
manejar clientes (se guarda su nombre, direccin, telfono y e-mail), que pueden
realizar pedidos de productos, de los cuales se anota la cantidad en stock. Un p p ,
cliente puede tener una o varias cuentas para el pago de los pedidos. Cada
cuenta est asociada a una tarjeta de crdito, y tiene una cierta cantidad
disponible de dinero, que el cliente debe aumentar peridicamente para poder
realizar nuevos pedidos. realizar nuevos pedidos.
Un cliente puede empezar a realizar un pedido slo si tiene alguna cuenta con dinero
disponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simples
o compuestos. Los pedidos simples estn asociados a una sola cuenta de pago y
(por restricciones en la distribucin) contienen un mximo de 20 unidades del (por restricciones en la distribucin) contienen un mximo de 20 unidades del
mismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos o
ms 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 Adems slo es posible compuesto se paguen con cuentas del mismo cliente. Adems, slo es posible
realizar peticiones de productos en stock.
Existe una clase (de la cual debe haber una nica instancia en la aplicacin)
responsable del cobro, orden de distribucin y confirmacin de los pedidos. El p y p
cobro de los pedidos se hace una vez al da, 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 distribucin, y una vez entregado,
pasa a estar confirmado.
Se pide un diagrama de transicin de estados para la clase Pedido
Solucin Solucin
21
Ejercicio Ejercicio
M d l l t i t ti d l j d l Modelar 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 botn de la parte superior derecha enciende la luz que se mantiene El botn de la parte superior derecha enciende la luz, que se mantiene
encendida tanto como el botn est apretado, una vez que se suelta, la luz
est encendida durante 2 segundos ms y se apaga.
El botn 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 formato sistema 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 centsimas de segundo). Inicialmente el crono empieza en

( g ) p
00:00:00. El botn inferior derecho se usa para activar el crono. ste se
actualiza en incrementos de 1/100 segundos. Presionando el botn inferior
derecho pausa o continua el crono (si el reloj est en modo crono).
Pulsando el botn inferior izquierdo resetea el crono a 00:00:00 si el reloj q 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 funcin. 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
modificarn adecuademente, (por ejemplo, si se llama a increaseTime () a las modificarn 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 visor unsetLight() : Apaga la luz del visor.
Eventos de botones recibidos:
topRightPressed.
topRightReleased. p g
topLeftPressed.
topLeftReleased.
bottomRightPressed.
bottomRightReleased
23
bottomRightReleased.
bottomLeftPressed.
bottomRightReleased.
Posible Solucin Posible Solucin.
24
Indice Indice
Diagramas de clases
Diagramas de Transicin de Estados Diagramas de Transicin de Estados
Diagramas de Interaccin. g
25
Ejercicio Ejercicio
f Especificar el diagrama de secuencia de la operacin
crearLaberinto
publ i c cl ass J uegoLaber i nt o {
publ i c Laber i nt o cr ear Laber i nt o ( ) {
Laber i nt o l ab = new Laber i nt o( ) ;
Habi t aci on h1 = new Habi t aci on( ) ;
Habi t aci on h2 = new Habi t aci on( ) ;
Puer t a puer t a = new Puer t a( h1, h2) ;
l ab. aadeHabi t aci on( h1) ;
l ab. aadeHabi t aci on( h2) ;
h1. aadePuer t a( puer t a) ;
r et ur n l ab;
}
}
Solucin Solucin
:J uegoLaberinto
l b L b i t
crearLaberinto()
lab:Laberinto
h1:Habitacion
h2:Habitacion
puerta:Puerta
create(h1,h2)
aadeHabitacion(h1)
aadeHabitacion(h2)
aadePuerta(puerta)
Ejercicio Ejercicio
Especificar el diagrama de secuencia de la operacin Especificar el diagrama de secuencia de la operacin
crearLaberinto
publ i c cl ass J uegoLaber i nt o {
pr i vat e Laber i nt o l ab;
pr i vat e bool ean conVent ana;
publ i c J uegoLaber i nt o( ) { publ i c J uegoLaber i nt o( ) {
l ab = new Laber i nt o( ) ;
conVent ana = t r ue;
}
publ i c voi d cr ear Laber i nt o ( ) {
Habi t aci on h;
f or ( i nt i =0; i <10; i ++) {
h = new Habi t aci on( ) ;
i f ( conVent ana == t r ue)
h. aadeVent ana( new Vent ana( ) ) ;
l ab. aadeHabi t aci on( h) ;
}
}
Solucin Solucin
:J uegoLaberinto lab:Laberinto
crearLaberinto()
h:Habitacion
loop
[for i =1 to 10]
v:Ventana
opt
[conVentana==true]
aadeVentana(v)
aadeHabitacion(h)
Ejercicio Ejercicio
Especificar el diagrama de secuencia de la operacin
realizarJ ugada definida en la clase J ugador, para el juego del
parchs parchs
J ugador
ill A t l i t
Dado
2 *
- casillaActual: int
+realizarJ ugada(): void
+casillaActual(): int
+tirar(): int
1
*
Tablero
+mover(int actual,
int unidades):
1
int unidades):
boolean
Solucin Solucin
:J ugador
d1:Dado
realizarJ ugada()
d2:Dado
:Tablero
tirar()
n1
par
tirar()
n2
ca:=casillaActual()
mover(ca,n1+n2)
movRealizado
Ejercicio Ejercicio
Identificar las clases relevantes y realizar el diagrama de Identificar las clases relevantes y realizar el diagrama de
secuencia para el siguiente caso de uso, que corresponde a
la realizacin de una llamada desde un telfono mvil.
El usuario pulsa los dgitos del nmero de telfono
Para cada dgito g
la pantalla se actualiza para aadir el dgito marcado
se emite un tono por el receptor
El usuario pulsa el botn Enviar El usuario pulsa el botn Enviar
El indicador en uso se ilumina en pantalla
El mvil establece conexin con la red
L d it l d d l d Los dgitos acumulados se mandan a la red
Se establece la conexin con el nmero marcado
Solucin Solucin
: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 colaboracin
equivalente?
Solucin Solucin
Ejercicio: Biblioteca Ejercicio: Biblioteca
Una biblioteca tiene copias de libros Estos ltimos se Una biblioteca tiene copias de libros. Estos ltimos se
caracterizan por su nombre, tipo (novela, teatro, poesa,
ensayo), editorial, ao y autor.
Los autores se caracterizan por su nombre, nacionalidad
y fecha de nacimiento.
Cada copia tiene un identificador y puede estar en la Cada copia tiene un identificador, y puede estar en la
biblioteca, prestada, reservada, con retraso o en
reparacin.
Los lectores pueden tener un mximo de 3 libros en Los lectores pueden tener un mximo de 3 libros en
prstamo.
Cada libro se presta un mximo de 30 das, por cada da p p
de retraso, se impone una multa de dos das sin
posibilidad de coger un libro.
Realiza el diagrama de colaboracin para el mtodo Realiza el diagrama de colaboracin para el mtodo
devolver()
Solucion Solucion
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:Copia
1.2: retraso:=getRetraso(fecha)
multa:Multa
{new}
multa:Multa
1.3.1b [multa<>0]: anyade(fecha,retraso)

También podría gustarte