Sei sulla pagina 1di 5

UML DIAGRAMAS DE INTERACCIN

Juan Carlos Cruellas

Contenidos
1. Introduccin 2. Diagramas de secuencia 3. Diagramas de comunicacin (anteriormente colaboracin)

Juan Carlos Cruellas

Introduccin
En un programa OO, los objetos interactan entre s de varias formas:
Un objeto puede crear otro durante la ejecucin de uno de sus mtodos. Un objeto puede invocar a un mtodo de otro objeto Un objeto puede destruir a otro objeto durante la ejecucin de uno de sus mtodos.

Los diagramas de interaccin se centran en visualizar grficamente como interactan los objetos de un programa.

Juan Carlos Cruellas

Introduccin
Varios tipos diferentes de diagrama. En este curso:
Diagrama de Secuencia: muestra a objetos interactuando con otros (invocando sus mtodos, crendolos o destruyndolos). Incluye el tiempo como un eje propio de los diagramas . Diagramas Di d de C Comunicacin i i ( (colaboracin l b i en UML 1 1.0). 0) Notacin ms compacta. Informacin similar a la de los diagramas de secuencia. No incluye eje de tiempo. Secuenciamiento indicado por sistema de numeracin.

NO mostrados en este curso: diagramas de tiempo y otras notaciones.


Juan Carlos Cruellas

Diagramas de secuencia
o1:Clase 1
m1() Mensaje llega a objeto m3() Valor de retorno

o2:Clase 2

m2(a) res Mensaje a this Funcin miembro

<<create>>

Foco del control Crear un objeto [condicion] m4() Iteracion para un mensaje Iteracion para varios mensajes Tiempo:hacia abajo [ no condicion] m5()

o3:Clase 3
M. Condicionales (exclusivos)

*[ i=1..N]: m6()
m7() m8()

*[i=1..N]
<<destroy>> Destruir un objeto

Juan Carlos Cruellas

Diagramas de secuencia
Cdigo java equivalente a diagrama anterior
//Mtodo de clase Clase1 public [tipo/clase valor retornado] m1(){ [tipo/clase] res = o2.m2(a) ; this.m3() ; Clase3 o3 = new Clase3(); if(condicion) o2.m4() ; else o2.m5() ; for(int i=1;i<N+1;i++) o2.m6() ; for(int i=1;i<N+1;i++){ o3.m7() ; o2.m8() ; } }
Juan Carlos Cruellas

Diagrama de secuencia
o1:Clase 1
m1()

:Clase 2

alt

[condicin]
m2() m3()

Agrupacin de varios mensajes en cada rama de una sentencia Condicional UML 2.0

[else]
m4()

m5()

Funcin m1() definida en Clase1.

m1(){ if(condicion){ o2.m2() ; o2.m3() ; }else{ o2.m4() ; o2.m5() ; } }


Juan Carlos Cruellas

Diagramas de secuencia
Construcciones en transparencia anterior: UML 1.0 UML 2.0 ha introducido los FRAGMENTOS, elementos grficos para agrupar el intercambio de mensajes y ampliar la expresividad de los diagramas.

Juan Carlos Cruellas

Diagrama de secuencia
o1:Clase 1
m1()

o2:Clase 2

alt

[condicin]
m2() m3()

Agrupacin de varios mensajes en cada rama de una sentencia Condicional UML 2.0

[else]
m4()

m5()

Funcin m1() definida en Clase1.

m1(){ if(condicion){ o2.m2() ; o2.m3() ; }else{ o2.m4() ; o2.m5() ; } }


Juan Carlos Cruellas

Diagrama de secuencia
o1:Clase 1
m1()

o2:Clase 2

opt

[condicin]
m2() m3()

Notacin para agrupar varios mensajes en un if sin else. UML 2.0 20


m1(){ if(condicion){ o2.m2() ; o2.m3() ; } o2.m4() ; o2.m5() ; }
Juan Carlos Cruellas

m4()

m5()

Funcin m1() definida en Clase1.

Diagrama de secuencia
o1:Clase 1
m1()

o2:Clase 2

loop

[condicin]
m2() m3()

Notacin para agrupar varios mensajes en un bucle UML 2.0


m1(){ while(condicion){ o2.m2() ; o2.m3() ; } o2.m4() ; o2.m5() ; }
Juan Carlos Cruellas

m4()

m5()

Funcin m1() definida en Clase1.

Diagrama de secuencia
o1:Clase 1
m1()

o2:Clase 2

loop (1,20)
m2() m3()

Notacin para agrupar varios mensajes en un bucle UML 2.0


m1(){ int i; for(i=1;i<21;i++) { o2.m2() ; o2.m3() ; } o2.m4() ; o2.m5() ; } Juan Carlos Cruellas

m4()

m5()

Funcin m1() definida en Clase1.

Diagrama de secuencia
o1:Clase 1
m1()

o2:Clase 2

break

[condicion1]
m2() m3()

Notacin para estructurar retornos


public void m1(){ if(condicion1){ o2.m2() ; o2.m3(); return ; } if(condicion2){ o2.m4() ; o2.m5(); return ; } }
Juan Carlos Cruellas

break

[condicion2]
m4()

m5()

Funcin m1() definida en Clase1.

Diagramas de comunicacin
1.2 cuartoMensaje() 1.2.2 *[i=1..N]: hacerNVeces()

o1:Cla1 Orden de ejecucin: 1. 11 1.1 1.1.1 1.2 1.2.1 1.2.1.1 1.2.1.1.1a o 1.2.1.1.1b 1.2.2 1.2.2.1.

1. primerMensaje ()

o2:Cla2

o5:Cla5
1.2.1 create()

o5:Cla4

1.1 segundoMensaje()

1.2.2.1 1 *: hacerSobreTodos()

o3:Cla3 o6:Cla6
1.1.1 tercerMensaje() Mensaje condicional

:Clase10

1.2.1.1 [color=rojo]: hacerO()

o4:Cla4
1.2.1.1.1b [tam=big]: hacerA()

o7:Cla7
1.2.1.1.1a [tam!=big]: hacerB()

o8:Cla8
Exclusivos

o9:Cla9

Juan Carlos Cruellas

Potrebbero piacerti anche