You are on page 1of 38

Ejercicios UML

Juan de Lara
Grupo 46
Curso 2008/09
1
G 46
Indice
zDiagramas de clases y
OCL.
z Diagraasde !ransici"n de Es#ados
z Diagraasde In#eracci"n$
2
OCL
Diagraas de !ransici"n de Es#ados
Ejercicio
z %epresen#a edian#e un diagraa de c&ases &a siguien#e
especi'icaci"n(
{ Una ap&icaci"n necesi#a a&acenar in'oraci"n so)re
epresas* sus ep&eados + sus c&ien#es$
{ ,)os se carac#eri-an por su no)re + edad$
{ Los ep&eados #ienen un sue&do )ru#o* &os ep&eados .ue
son direc#i/os #ienen una ca#egor0a* as0 coo un conjun#o de
ep&eados su)ordinados$
{ De &os c&ien#es ade1s se necesi#a conocer su #e&2'ono de
con#ac#o$
{ La ap&icaci"n necesi#a os#rar &os da#os de ep&eados +
c&ien#es$
3
L i# & d
L #i ) # & d
Ejercicio
Person
a
- nombre
- edad
+ mostrar()
su)ordinados
0$$4
Empleado
Cliente
- sueldo_bruto
- telefono_de_contacto
+ mostrar ()
+ calcular_salario_neto()
0$$4
Directiv
o
- categoria
1$$4
ep&eados
+mostrar
()
0$$4
1
c&ien#es
1$$4
Empresa
+ mostrar ()
Persona
- nombre
- edad
+ mostrar()
Empleado
- sueldo_bruto
--
ntelefombrono_de_c
+ mostrar ()
+
calcular_salario_neto()
Client
e
Directivo
- categoria
+mostrar()
Empresa
- nombre
bb
tt (())
+ mostrar ()
- nombre
4
Ejercic : Biblioteca
z Una )i)&io#eca #iene copias de &i)ros$ Es#os 5&#ios se
carac#eri-an por su no)re* #ipo 6no/e&a* #ea#ro* poes0a*
ensa+o7* edi#oria&* a8o + au#or$
z Los au#ores se carac#eri-an por su no)re* naciona&idad
+ 'ec9a de naciien#o$
z Cada
copia #iene un iden#i'icador* + puede es#ar en &a
)i)&io#eca* pres#ada* con re#raso o en reparaci"n$
z Los &ec#ores pueden #ener un 1:io de 3 &i)ros en
pr2s#ao$
z Cada &i)ro se pres#a un 1:io de 30 d0as* por cada d0a
de re#raso* se ipone una ;u&#a< de dos d0as sin
posi)i&idad de coger un nue/o &i)ro$
z %ea&i-a un diagraa de c&ases + a8ade &os 2#odos
necesarios
&i)ros$
para rea&i-ar e& pres#ao + de/o&uci"n de
pr2s#ao
Una )i)&io#eca #iene copias de &i)ros Es#os 5&#ios se
Li)ro
Copia
= #i#u&o ( s#ring
= id ( Iden#i'ier ejep&ar
&i)ro = #ipo( #ipoLi)ro
= es#ado( es#adoCopia
1$$4
1
= edi#oria&( s#ring
0$$3 pres#aos
= an+o( in#
1$$4
o)ras
>res#ao
0$$1
= inicio( Da#e
= 'in( Da#e
1 au#or
c#or
,u#or
&e
= no)re( s#ring
Lec#or
= naciona&idad( s#ring
= n?ocio ( Iden#i'ier
= 'ec9a@aciien#o( Da#e
= no)re( s#ring
= #e&e'ono( s#ring
AAenuera#ionBB
= direccion( s#ring
#ipoLi)ro
C de/o&/er6id( Iden#i'ier* 'ec9a,c#( Da#e7
1
no/e&a
Dprecondi#ion( pres#aos$no#Ep#+67E
#ea#ro
poesia
C pres#ar6id( Iden#i'ier* 'ec9a,c#( Da#e7 ensa+o
Dprecondi#ion( u&#aFF0E
u&#a
0$$1
= u&#ar6dias ( in#7
AAenuera#ionBB
Mu&#a
es#adoCopia
pres#ado
= 'Inicio( Da#e
re#raso
= 'Gin( Da#e
)i)&io#eca
reparacion
i
) # i
i #
Ejercicio
z Especi'icar un diagraa de c&ases .ue descri)a redes
de ordenadores$
z Los e&een#os .ue se pueden inc&uir en &a red son(
{ ?er/idor* >C* Ipresora$
{ Hu)* Ca)&e de red$
z Los
>Cs pueden conec#arse con un 5nico Hu)* &os
ser/idores con uno o /arios$
z Los ?er/idores + >Cs pueden generar ensajes* con
una cier#a &ongi#ud$
z Los Hu)s #ienen un n5ero de puer#os* a&gunos
cua&es puede usarse para conec#ar con o#ros
de &os
Hu)s$
!ienen cier#a pro)a)i&idad de ;perder< ensajes$
z Las
ipresoras pueden a/eriarse* con cier#a
pro)a)i&idad* duran#e cier#o #iepo$
? id I
cua&es usarse conec#ar o#ros
I
Ejercicio. Posible Solucin.
;Los >Cs pueden conec#arse con un 5nico Hu)* &os ser/idores con uno o /arios<
>odeos ode&ar&o coo una res#ricci"n JCL* o )ien a8adir asociaciones
desd
8
e ?er/idor + >C
OCL
;Los >Cs pueden conec#arse con un 5nico Hu)* &os ser/idores con uno o /arios<
Context PC
Inv: cable_equipo->size() = 1
Context Servidor
Inv: cable_equipo->size() >= 1
;Un Hu) no puede conec#arse consigo iso a #ra/2s de un puer#o<
Context Cable_Hubs
Inv: Puerto_Hub.hub->asSet()->size() = 2
9
C bl H b
Inv: >size() 1
Ejercicio
Examen Junio 2008.
%ea&i-a e& dise8o de una ap&icaci"n para &a ges#i"n de pedidos$ La ap&icaci"n de)er1
anejar c&ien#es 6se guarda su no)re* direcci"n* #e&2'ono + e=ai&7* .ue pueden
rea&i-ar pedidos de produc#os* de &os cua&es se ano#a &a can#idad en s#ocK$ Un
c&ien#e puede #ener una o /arias cuen#as para e& pago de &os pedidos$ Cada
cuen#a es#1 asociada a una #arje#a de cr2di#o* + #iene una cier#a can#idad
disponi)&e de dinero* .ue e& c&ien#e de)e auen#ar peri"dicaen#e para poder
rea&i-ar nue/os pedidos$
Un c&ien#e puede epe-ar a rea&i-ar un pedido s"&o si #iene a&guna cuen#a con dinero
disponi)&e$ ,& rea&i-ar un pedido* un c&ien#e puede agrupar&os en pedidos sip&es
o copues#os$ Los pedidos sip&es es#1n asociados a una so&a cuen#a de pago +
6por res#ricciones en &a dis#ri)uci"n7 con#ienen un 1:io de 20 unidades de&
iso o dis#in#o #ipo de produc#o$ , su /e-* un pedido copues#o con#iene dos o
1s pedidos* .ue pueden ser sip&es o copues#os$ Coo es de esperar* e&
sis#ea de)e garan#i-ar .ue #odos &os pedidos sip&es .ue coponen un pedido
copues#o se paguen con cuen#as de& iso c&ien#e$ ,de1s* s"&o es posi)&e
rea&i-ar pe#iciones de produc#os en s#ocK$
E:is#e una c&ase 6de &a cua& de)e 9a)er una 5nica ins#ancia en &a ap&icaci"n7
responsa)&e de& co)ro* orden de dis#ri)uci"n + con'iraci"n de &os pedidos$ E&
co)ro de &os pedidos se 9ace una /e- a& d0a* + e& proceso consis#e en copro)ar
#odos &os pedidos pendien#es de co)ro* + co)rar&os de &a cuen#a de pago
correspondien#e$ ?i una cuen#a no #iene su'icien#e dinero* e& pedido se rec9a-a 6si
es par#e de un pedido copues#o* se rec9a-a e& pedido en#ero7$ Una /e- .ue e&
pedido es#1 &is#o para ser/irse* se ordena su dis#ri)uci"n* + una /e- en#regado*
pasa a es#ar con'irado$ 10
?e pide un diagraa de c&ases de dise8o$ ,8ade &as res#ricciones JCL necesarias$
copues#o paguen cuen#as iso ,de1s es
6por en dis#ri)uci"n7 un de unidades
Solucin
11
Restricciones OCL:
Cote!t Cliete""realizar_pedido"
pre" sel#.cuetas->e!ists(c $ c.dispoible > %)
Cote!t Pedido Co&puesto"
iv" sel#.pedidos_si&ples->cueta->cliete->asSet()->size() = 1
Cote!t Pedido"
iv" sel#.t_productos.u&->su&() '= 2%
Cote!t Pedido""a8adirProducto(p" Producto( u&" it)"
pre" p.stoc)>=u&
Cote!t Cliete""rechazar_pedido (p"Pedido)"
pre" sel#.cuetas.dispoible->su&()'p.total
12
Cote!t "" "
i pedidos si&ples >cliete asSet > ()
Indice
z Diagraas de c&ases
zDiagramas de Transicin de
Estados
z Diagraas de In#eracci"n$
13
Diagramas de Transicin de
Ejercic : Biblioteca
z Una )i)&io#eca #iene copias de &i)ros$ Es#os 5&#ios se
carac#eri-an por su no)re* #ipo 6no/e&a* #ea#ro* poes0a*
ensa+o7* edi#oria&* a8o + au#or$
z Los au#ores se carac#eri-an por su no)re* naciona&idad
+ 'ec9a de naciien#o$
z Cada
copia #iene un iden#i'icador* + puede es#ar en &a
)i)&io#eca* pres#ada* reser/ada* con re#raso o en
reparaci"n$
z Los &ec#ores pueden #ener un 1:io de 3 &i)ros en
pr2s#ao$
z Cada &i)ro se
pres#a un 1:io de 30 d0as* por cada d0a
de re#raso* se ipone una ;u&#a< de dos d0as sin
posi)i&idad de coger un &i)ro$
z %ea&i-a
e& diagraa de es#ados de &a c&ase ;copia<$
Los &ec#ores pueden #ener un 1:io de 3 &i)ros en
Una )i)&io#eca #iene copias de &i)ros Es#os 5&#ios se
en
reparacion
Con
%e#raso
reser/ar6id7 /
usr%es F id
Con
%e#raso +
reser/ado
de/o&/er67
reparado67
reparar67
de/o&/er67
Lge#Da#e67B'pC30M
Lge#Da#e67B'pC30M
en
)i)&io#eca
pres#ar6id*'ec9a7/
'pF'ec9a
de/o&/er67
pres#ado reser/ar6id7 /
usr%es F id
reser/ado
#62 da+s7
pres#ar6id* 'ec9a7
Lusr%esFFidM/
'pF'ec9a
de/o&/er67
en
reser/a
Solucion
reser ado
# 62 d 7
en
reparacion
Con
%e#raso
reser/ar6id7 /
usr%es F id
Con
%e#raso +
reser/ado
reparado67
reparar67
Lge#Da#e67B'pC30M
Lge#Da#e67B'pC30M
en
)i)&io#eca
pres#ar6id*'ec9a7/
'pF'ec9a
de/o&/er67
pres#ado reser/ar6id7 /
usr%es F id
pres#ar6id* 'ec9a7
Lusr%esFFidM/
reser/ado
de/o&/er67
#62 da+s7
'pF'ec9a en
reser/a
16
Solucion: Estados er!r"uicos
reser ado
# 62 d 7
z Mode&ar e& copor#aien#o de una
cadena de 5sica$ Es#a
puede es#ar
encendida 6J@7 o apagada 6?#and)+7$ La
cadena
#iene reproduc#or de CD* %adio +
Cin#a$ ?e ca)ia de uno a o#ro con e&
)o#"n ode $ Cuando se enciende &a
cadena se recuerda e& 5&#io es#ado en e&
.ue es#u/o$
1I
#!"uinas de Estados
Estado Histrico. Ejercicio.
;ode<
Standb
y
power
power

mod
e
!n
CD
mode
"adio
#ape mode
$odelar el mismo sistema sin usar estado %ist&rico'
18
#!"uinas de Estados
Estado Histrico. Ejercicio.
Solucin

mod
e
l i t t d
Standby
!n
power
lastCD
last"adi
o
power
powe
r
mod
e
CD
mode
power
last#ape
powe
r
powe
r
"adio
#ape mode
#!"uinas de Estados
Estado Histrico. Ejercicio.
Solucin (ii)
power
power
19
#!"uinas de Estados
Estado Histrico. Ejercicio.
Solucin (ii)
Ejercicio
Examen Junio 2008.
%ea&i-a e& dise8o de una ap&icaci"n para &a ges#i"n de pedidos$ La ap&icaci"n de)er1
anejar c&ien#es 6se guarda su no)re* direcci"n* #e&2'ono + e=ai&7* .ue pueden
rea&i-ar pedidos de produc#os* de &os cua&es se ano#a &a can#idad en s#ocK$ Un
c&ien#e puede #ener una o /arias cuen#as para e& pago de &os pedidos$ Cada
cuen#a es#1 asociada a una #arje#a de cr2di#o* + #iene una cier#a can#idad
disponi)&e de dinero* .ue e& c&ien#e de)e auen#ar peri"dicaen#e para poder
rea&i-ar nue/os pedidos$
Un c&ien#e puede epe-ar a rea&i-ar un pedido s"&o si #iene a&guna cuen#a con dinero
disponi)&e$ ,& rea&i-ar un pedido* un c&ien#e puede agrupar&os en pedidos sip&es
o copues#os$ Los pedidos sip&es es#1n asociados a una so&a cuen#a de pago +
6por res#ricciones en &a dis#ri)uci"n7 con#ienen un 1:io de 20 unidades de&
iso o dis#in#o #ipo de produc#o$ , su /e-* un pedido copues#o con#iene dos o
1s pedidos* .ue pueden ser sip&es o copues#os$ Coo es de esperar* e&
sis#ea de)e garan#i-ar .ue #odos &os pedidos sip&es .ue coponen un pedido
copues#o se paguen con cuen#as de& iso c&ien#e$ ,de1s* s"&o es posi)&e
rea&i-ar pe#iciones de produc#os en s#ocK$
E:is#e una c&ase 6de &a cua& de)e 9a)er una 5nica ins#ancia en &a ap&icaci"n7
responsa)&e de& co)ro* orden de dis#ri)uci"n + con'iraci"n de &os pedidos$ E&
co)ro de &os pedidos se 9ace una /e- a& d0a* + e& proceso consis#e en copro)ar
#odos &os pedidos pendien#es de co)ro* + co)rar&os de &a cuen#a de pago
correspondien#e$ ?i una cuen#a no #iene su'icien#e dinero* e& pedido se rec9a-a 6si
es par#e de un pedido copues#o* se rec9a-a e& pedido en#ero7$ Una /e- .ue e&
pedido es#1 &is#o para ser/irse* se ordena su dis#ri)uci"n* + una /e- en#regado*
pasa a es#ar con'irado$ 20
?e pide un diagraa de #ransici"n de es#ados para &a c&ase >edido
copues#o paguen cuen#as iso ,de1s es
6por en dis#ri)uci"n7 un de unidades
Solucin
21
Ejercicio
z Mode&ar e& copor#aien#o reac#i/o de un re&oj de pu&sera$
z E& /a&or de& #iepo se de)e ac#ua&i-ar cada segundo* inc&uso cuando no se
ues#ra 6p$ej$ crono encendido7$
z E& )o#"n de &a par#e superior derec9a enciende &a &u-* .ue se an#iene
encendida #an#o coo e& )o#"n es#1 apre#ado* una /e- .ue se sue&#a* &a &u-
es#1 encendida duran#e 2 segundos 1s + se apaga$
z E& )o#"n superior i-.uierdo a&#erna en#re e& odo de crono + de re&oj$ E&
sis#ea epie-a en e& odo re&oj* en e& .ue se ues#ra &a 9ora en 'ora#o
HH(MM(??$
z En e& odo crono* e& #iepo discurrido se ues#ra en 'ora#o MM(??(CC
6CC son cen#2sias de segundo7$ Inicia&en#e e& crono epie-a en
00(00(00$ E& )o#"n in'erior derec9o se usa para ac#i/ar e& crono$ Ns#e se
ac#ua&i-a en increen#os de 1/100 segundos$ >resionando e& )o#"n in'erior
derec9o pausa o con#inua e& crono 6si e& re&oj es#1 en odo crono7$
>u&sando e& )o#"n in'erior i-.uierdo rese#ea e& crono a 00(00(00 si e& re&oj
es#1 en odo crono + e& crono 9a sido pausado an#es$ E& crono con#inua
corriendo 6si es#1 corriendo7 o an#iene su /a&or 6si es#1 en pausa7 inc&uso
cuando e& re&oj es#1 en un odo de disp&a+ dis#in#o 6por ejep&o* cuando se
ues#ra &a 9ora7$
22
epie-a e& re&oj e& se &a en
Ejercicio
z In#er'ace pro/is#o por e& con#ro&ador(
{ getTime() ( De/ue&/e &a 9ora ac#ua&$
{ refreshTimeDisplay() ( %epin#a &a 9ora en e& /isor con &a 9ora in#erna ac#ua&$ E&
/isor no necesi#a &ipiarse an#es de &&aar a es#a 'unci"n$ >or ejep&o* si se es#1
/isua&i-ando e& crono* se )orrar1 an#es de pin#ar &a 9ora$
{ refreshChronoDisplay() ( /er refreshTimeDisplay().
{ resetChrono() ( %ese#ea e& crono in#erno a 00(00(00$
{ increaseTime() ( Increen#a &a 9ora en un segundo$ Los inu#os + 9oras se
odi'icar1n adecuadeen#e* 6por ejep&o* si se &&aa a increaseTime () a &as
11(O9(O9* &a nue/a 9ora ser1 12(00(007$
{ increaseChrono () ( Increen#a e& crono en 1/100 segundos$
{ setLight() ( Enciende &a &u- de& /isor$
{ unsetLight() ( ,paga &a &u- de& /isor$
z E/en#os de )o#ones reci)idos(
{ to$Rig%tPressed.
{ to$Rig%tReleased.
{ to$Le&tPressed.
{ to$Le&tReleased.
{ bottomRig%tPressed.
{ bottomRig%tReleased.
{ bottomLe&tPressed.
23
{ bottomRig%tReleased.
bottomRig%tReleased
unsetLight() ,paga &u- /isor
Posibl Solucin.
24
z Diagraas de c&ases
z Diagraasde !ransici"n de Es#ados
zDiagramas de 'nteraccin.
2O
Indice
Especi'icar e& diagraa de secuencia de &a operaci"n
;crearLa)erin#o<
public class *ue+o,aberito -
public ,aberito crear,aberito ()
- ,aberito lab = e. ,aberito()/
Habitacio h1 = e. Habitacio()/
Habitacio h2 = e. Habitacio()/
Puerta puerta = e. Puerta(h1( h2)/
lab.a8adeHabitacio(h1)/
lab.a8adeHabitacio(h2)/
h1.a8adePuerta(puerta)/
retur lab/
0
0
Ejercicio
(JuegoLa)erin#o
crearLa)erin#o67
&a)(La)erin#o
91(Ha)i#acion
crea#e691*927
a8adeHa)i#acion6917
92(Ha)i#acion
puer#a(>uer#a
a8adeHa)i#acion6927
a8ade>uer#a6puer#a7
Solucin
& ) L ) i #
Especi'icar e& diagraa de secuencia de & operaci"n
;crearLa)erin#o<
public class *ue+o,aberito
- private ,aberito lab/
private boolea co1etaa/
public *ue+o,aberito() -
lab = e. ,aberito()/
co1etaa = true/
0
public void crear,aberito () -
Habitacio h/
#or (it i=%/ i'1%/ i22) -
h = e. Habitacio()/
i# (co1etaa == true)
h.a8ade1etaa(e. 1etaa())/
lab.a8adeHabitacio(h)/
0
0
public *ue+o,aberito() -
Ejercicio
(JuegoLa)erin#o &a)(La)erin#o
crearLa)erin#o67
&oop
L'or i F 1 #o 10M
9(Ha)i#acion
op#
LconPen#anaFF#rueM
/(Pen#ana
a8adePen#ana6/7
a8adeHa)i#acion697
Solucin
Especi'icar e& diagraa de secuencia de &a operaci"n
;rea&i-arJugada< de'inida en &a c&ase Jugador* para e& juego de&
parc90s
Jugador
4
= casi&&a,c#ua&( in#
C rea&i-arJugada67( /oid
C casi&&a,c#ua&67( in#
4
2
Dado
C #irar67( in#
1
!a)&ero
C o/er6in# ac#ua&*
in# unidades7(
)oo&ean
parc90s
Ejercicio
i&& , # & i #
1
in# unidades7(
(Jugador
d1(Dado d2(Dado
(!a)&ero
rea&i-arJugada67
par
#irar67
n1
#irar67
n2
ca(Fcasi&&a,c#ua&67
o/er6ca*n1Cn27
o/%ea&i-ado
Solucin
Iden#i'icar &as c&ases re&e/an#es + rea&i-ar e& diagraa de
secuencia para e& siguien#e caso de uso* .ue corresponde a
&a rea&i-aci"n de una &&aada desde un #e&2'ono "/i&$
z E& usuario pu&sa &os d0gi#os de& n5ero de #e&2'ono
z >ara cada d0gi#o
{ &a pan#a&&a se ac#ua&i-a para a8adir e& d0gi#o arcado
{ se ei#e un #ono por e& recep#or
z E&
usuario pu&sa e& )o#"n ;En/iar<
z E& indicador ;en uso< se i&uina en pan#a&&a
z E& "/i& es#a)&ece cone:i"n con &a red
z Los d0gi#os acuu&ados se andan a &a red
z ?e es#a)&ece &a cone:i"n con e& n5ero arcado
Ejercicio
L d0 i# & d d & d
(Qu##on (Dia&er (Disp&a+ (?peaKer send(Qu##on (Ce&&u&ar%adio
&oop
L'or i F 1 #o 9M
digi#6code7
disp&a+Digi#
6code7
ei#!one
6code7
send67
connec#6pno7
inUse67
RDiagraa de co&a)oraci"n
e.ui/a&en#eS
Solucin
disp&a+Digi#
send67
inUse67
Ejercic : Biblioteca
z Una )i)&io#eca #iene copias de &i)ros$ Es#os 5&#ios se
carac#eri-an por su no)re* #ipo 6no/e&a* #ea#ro* poes0a*
ensa+o7* edi#oria&* a8o + au#or$
z Los au#ores se carac#eri-an por su no)re* naciona&idad
+ 'ec9a de naciien#o$
z Cada
copia #iene un iden#i'icador* + puede es#ar en &a
)i)&io#eca* pres#ada* reser/ada* con re#raso o en
reparaci"n$
z Los &ec#ores pueden #ener un 1:io de 3 &i)ros en
pr2s#ao$
z Cada &i)ro se
pres#a un 1:io de 30 d0as* por cada d0a
de re#raso* se ipone una ;u&#a< de dos d0as sin
posi)i&idad de coger un &i)ro$
z %ea&i-a
e& diagraa de co&a)oraci"n para e& 2#odo
de/o&/er67
Los &ec#ores pueden #ener un 1:io de 3 &i)ros en
Una )i)&io#eca #iene copias de &i)ros Es#os 5&#ios se
Solucion
1$3 Lre#rasoB0M( u&#ar6re#raso7
1( de/o&/er6id* 'ec9a7
1$3$1a Lu&#aF0M( u&#a(F
crea#e6'ec9a*re#raso7
(Lec#or
pres#aos
1$1( de/(Freo/e6id7
(Copia
u&#a(Mu&#a
DneTE
1$2( re#raso(Fge#%e#raso6'ec9a7
de/(Copia
u&#a(Mu&#a
1$3$1) Lu&#aAB0M( an+ade6'ec9a*re#raso7
&# M &#

You might also like