![Page 1: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/1.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Facultad de Ingeniería
Departamento de Ingeniería de Sistemas y
Computación
Diagramas de secuencia
Fragmentos Combinados:
caminos alternativos
1
![Page 2: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/2.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
• Vamos a continuar con el ejemplo del Cinema y el modelamiento del
comportamiento del caso de uso “Crear Película”
2
![Page 3: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/3.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo• De acuerdo con el análisis que hicimos en la lección previa, la clase
Cinema es la responsable de crear una nueva película.
• Estamos suponiendo en nuestro ejemplo que la película se crea con
su nombre que es lo que la identifica de manera única.
3
![Page 4: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/4.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
EjemploDespués de nuestro análisis llegamos al diagrama de interacción que se muestra en la figura.
El objeto multiplex recibe el mensaje de creación, crea el objeto película y lo agrega la película a la cartelera.
4
![Page 5: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/5.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
¿Qué pasaría si la película que se va a crear ya existe?
5
![Page 6: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/6.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
Según el diagrama de secuencias propuesto, habría duplicaciones de
películas y ese es un comportamiento que no queremos tener.
6
![Page 7: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/7.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
Para evitar las duplicaciones, el objeto multiplex es responsable de verificar
primero si el nombre de la película que ingresa como argumento del método
crearPelicula ya existe en su cartelera.
7
![Page 8: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/8.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
Para esto invoca a su método buscarPelicula(nombre) con el fin de buscar
si existe una película con el mismo nombre.
8
![Page 9: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/9.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
EjemploAquí hay dos alternativas:
1. La película no existe en la cartelera y en este caso hay que crearla
2. La película ya existe y en este caso decidimos que no vamos a hacer nada
9
![Page 10: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/10.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
• Para poder representar alternativas o
ejecuciones condicionales en los
diagramas de secuencia debemos recurrir
a los fragmentos combinados.
10
![Page 11: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/11.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje11
Un fragmento combinado es un agrupamiento lógico, representado por un rectángulo que contiene la estructura condicional que afecta el flujo de los mensajes.
En la figura podemos observar la sintaxis básica que es el rectángulo que delimita el alcance del fragmento.El tipo del fragmento se escribe en la parte superior izquierda.
Operador de interacción
Guardas o Condiciones
Fragmento Combinado
Fragmento Combinado
Operandos de
interacción
![Page 12: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/12.jpg)
12
Los fragmentos combinados sirven para representar secuencias de interacción que dependen de que una condición o guarda se cumpla.
Sirven para denotar caminos alternativos, secuencias que se pueden ejecutar en paralelo, secuencias en orden estricto, ciclos de ejecución y varios más.
En esta lección vamos a estudiar solamente los fragmentos combinados para representar caminos alternativos o condicionales y ciclos.
Por favor remitirse a las referencias si quiere conocer más sobre este tema.
![Page 13: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/13.jpg)
13
Vamos a precisar la definición de un fragmento combinado alternativo con el ejemplo de la creación de la película.
De acuerdo con lo planteado, queremos expresar que sólo crearemos la película en la cartelera si esta no existe.
![Page 14: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/14.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
Necesitamos poder expresar que lo que está señalado en la figura se
ejecutará únicamente si la película no existe
14
![Page 15: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/15.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
Para representar lo anterior en la sintaxis de los diagramas de secuencia, usamos un
fragmento combinado con operador de interacción alt (por alternativo)
15
![Page 16: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/16.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
Adicionamos una guarda o
condición que pregunta si el
resultado del método
buscarPelicula es igual a null
( lo que implicará que la
película no existe en la
cartelera)
16
![Page 17: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/17.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
17
Sólo si la condición es
verdadera es posible crear un
nuevo objeto de tipo Película.
Note que la interacción para
la creación está ahora dentro
del rectángulo que define el
fragmento combinado.
![Page 18: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/18.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo
Si la película existe la interacción de secuencia omite este paso, evitando duplicaciones de películas.
18
![Page 19: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/19.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Facultad de Ingeniería
Departamento de Ingeniería de Sistemas y
Computación
Diagramas de secuencia
Fragmentos Combinados: ciclos
19
![Page 20: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/20.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
• Para continuar la explicación de los
fragmentos combinados vamos a retomar
el ejemplo de Universidad para modelar
un caso de uso más complejo.
20
![Page 21: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/21.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo - Universidad
• Suponga que tenemos un diagrama de clases simple sobre una Universidad
21
![Page 22: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/22.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo - Universidad
• Este diagrama modela los elementos básicos de la realidad, en donde una
Universidad se compone de programas, estudiantes, profesores y cursos.
22
![Page 23: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/23.jpg)
Departamento de Ingeniería de Sistemas y Computación - Universidad de los Andes | Nivelatorio de Modelaje
Ejemplo - Universidad
• Suponga que ahora nos interesa modelar la interacción de los
objetos en este sistema para describir el desarrollo del siguiente
caso de uso:– Calcular el número total de mujeres inscritas en un curso, dado su código de un
programa dado.
23
![Page 24: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/24.jpg)
24
Vamos a empezar a modelar el caso de uso “calcular el número de mujeres
inscritas en un curso, dado su código, de un programa dado”
Lo primero es que de acuerdo con el diagrama de clases, podemos replantear
el caso de uso de la siguiente forma:
“Calcular el número de estudiantes cuyo género es Femenino y que estén
inscritas en un curso, dado su código, de un programa dado su nombre.”
![Page 25: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/25.jpg)
25
Hay varias preguntas que debemos hacernos.
1. Quién es responsable de saber el género de un estudiante?
2. Quién es responsable de saber cuántos estudiantes con
genero femenino hay en un curso?
3. Quién es responsable de encontrar el curso que
corresponde a un código dado?
4. Quién es responsable de encontrar el programa que
corresponde a un nombre dado?
5. Quién es el responsable de recibir del actor externo la
información del nombre del programa y del código curso
sobre el que se quiere saber cuántas mujeres hay?
![Page 26: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/26.jpg)
26
Vamos a utilizar el patrón experto para responder estas preguntas.Para responder la primera pregunta: Quién es responsable de saber el género de un estudiante? Utilizando el patrón experto la respuesta es fácil:Es el estudiante quien tiene esa información.
Como consecuencia agregamos el método: darGenero() a la clase Estudiante.
![Page 27: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/27.jpg)
27
Para responder la segunda pregunta: “Quién es responsable de saber cuántos estudiantes con genero femenino hay en un curso?”Lo primero que hay que notar es que los estudiantes inscritos en un curso están modelados en el diagrama por una asociación compartida entre las clases Curso y Estudiante
![Page 28: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/28.jpg)
28
Siguiendo de nuevo el patrón experto, es el curso quién sabe cuáles son sus estudiantes inscritos y por lo tanto puede dar el número de mujeres que hay en esa colección.Agregamos entonces el método darNumeroMujeres() a la clase curso
![Page 29: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/29.jpg)
29
Para responder la tercera pregunta: “Quién es responsable de encontrar el curso que corresponde a un código dado? “Hay que notar que, de acuerdo con el diagrama propuesto, cada curso le pertenece a un programa.
![Page 30: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/30.jpg)
30
De acuerdo con el patrón experto, es el programa quién puede encontrar el objeto curso correspondiente a un código dado.
![Page 31: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/31.jpg)
31
Así, agregamos el método buscarCurso(código) a la clase Programa.
![Page 32: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/32.jpg)
32
Aquí podríamos cuestionarnos y en ese caso verificar con el experto del dominio de la Universidad, si los cursos en realidad le pertenecen a los programas o si le pertenecen a la universidad.
![Page 33: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/33.jpg)
33
Si, después de validar, encontráramos que los cursos le pertenecen a la universidad y que tienen un código único, tendríamos que cambiar nuestro diagrama de clases por el que se muestra en la figura.
![Page 34: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/34.jpg)
34
Hay una nueva asociación de composición que indica que la universidad es la dueña de los cursos.
![Page 35: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/35.jpg)
35
La asociación de composición entre Programa y Curso cambió por una asociación compartida.
![Page 36: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/36.jpg)
36
Note que en este caso el diagrama es más acoplado porque ahora hay una nueva relación entre dos clases. Sin embargo, para resolver este caso de uso no tendríamos que interactuar con los objetos programa lo que puede significar ser más eficiente. La decisión dependerá entonces del caso concreto de la universidad que estemos modelando.
![Page 37: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/37.jpg)
37
Para seguir con nuestro ejemplo, no vamos a cambiar el diagrama de clases y vamos a contestar la siguiente pregunta:“Quién es responsable de encontrar el programa que corresponde a un nombre dado?”
37
![Page 38: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/38.jpg)
38
38
Como la universidad es la dueña de los programas, siguiendo con el patrón experto
![Page 39: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/39.jpg)
39
agregamos el método buscarPrograma(nombre) a la clase Universidad.
![Page 40: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/40.jpg)
40
Nos falta contestar la pregunta:” Quién es el responsable de recibir del actor externo la información del nombre del programa y del código del curso sobre el que se quiere saber cuántas mujeres hay inscritas?”
![Page 41: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/41.jpg)
41
El responsable es la universidad quien está jugando el rol del controlador del sistema y recibe las peticiones de los actores externos. Para esto agregamos el método:darNumeroMujeres(nombrePrograma, código)
![Page 42: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/42.jpg)
42
Ahora vamos a construir un diagrama de secuencia para modelar el comportamiento del caso de uso.
Para simplificar, vamos a suponer que tenemos como condiciones iniciales, que el nombre del programa y el código del curso dados son válidos, es decir que ya existen en el sistema los objetos correspondientes a ese nombre y a ese código.
![Page 43: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/43.jpg)
43
Informalmente la secuencia de interacciones será:
1. Recibir la petición2. Encontrar el programa3. Delegar al programa la búsqueda de la respuesta4. El programa, debe encontrar el curso5. Y delegar en el curso la búsqueda de la respuesta
![Page 44: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/44.jpg)
44
1. Recibir la petición
Supondremos que ya hay en ejecución un objeto de la clase Universidad, que estamos llamando “u” , quien es el responsable de recibir la petición del actor externo
![Page 45: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/45.jpg)
45
2. Buscar el programa
El objeto “u” recibe en los argumentos el nombre del programa y el código del curso.
Este objeto es responsable de buscar el objeto Programa que corresponde al nombre dado. Recuerde que estamos suponiendo que el nombre es válido y que, por lo tanto, existe un objeto programa con ese nombre.
![Page 46: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/46.jpg)
46
Ahora que el objeto “u” ya tiene el objeto programa correspondiente con la petición, puede delegarle el resto de la interacción enviándole el mensaje darNumero Mujeres y enviándole como argumento el código del curso.
![Page 47: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/47.jpg)
47
3. Buscar el curso
El objeto programa es responsable de buscar el curso que corresponde al código dado. De nuevo, estamos suponiendo que existe un curso con ese código.
![Page 48: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/48.jpg)
48
Ahora que ya tiene le curso puede interactuar con él y delegarle la responsabilidad de calcular el número de mujeres que hay inscritas en ese curso.
![Page 49: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/49.jpg)
49
Vamos a modelar el comportamiento del método darMujeres() de la clase Curso en un nuevo diagrama de secuencia.
![Page 50: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/50.jpg)
50
Para calcular el número de mujeres debemos:1. iterar sobre toda la colección de los estudiantes inscritos en este curso 2. por cada uno preguntar el genero3. Si es femenino entonces sumar a la cuenta
![Page 51: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/51.jpg)
51
Vamos a introducir los fragmentos combinados para modelar una iteración o ciclo.
Igual que en el caso de los fragmentos combinados para los caminos alternativos, Debemos delimitar el alcance del ciclo con un rectángulo que tiene en la parte superior izquierda el tipo de fragmento, en este caso es un loop
![Page 52: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/52.jpg)
52
Para modelar un ciclo necesitamos los siguientes elementos:
1. La inicialización del ciclo
2. La guarda o condición del ciclo
3. El cuerpo del ciclo4. El avance en la
iteración
Veamos cómo se hace esto en el diagrama de secuencia
![Page 53: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/53.jpg)
53
En esta notación la forma de indicar que se está recorriendo la colección es utilizando la expresión:
*next() que retorna el próximo elemento de la colección
Entonces para inicializar el ciclo debemos utilizar esta expresión para señalar que tenemos el primer elemento. Esto se hace antes del rectángulo.estudiante = *next()
![Page 54: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/54.jpg)
54
Para la guarda del ciclo, la representamos con una condición que significa que si el valor es verdadero se ejecutarán la secuencia que sigue y que está dentro del rectángulo. Si la condición es falsa, se termina la ejecución del ciclo.En este ejemplo la guarda es (estudiante != null) aquí estamos utilizando la variable estudiante para recorrer la colección.
![Page 55: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/55.jpg)
55
En este ejemplo, el cuerpo del ciclo corresponde a la verificación de si el estudiante que se está procesando es mujer o no. Si lo es, debemos aumentar el numero de mujeres inscritas en ese curso. Sino, no hacemos nada
![Page 56: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/56.jpg)
56
Para modelar ese comportamiento, utilizamos un nuevo fragmento combinado de tipo alternativo o condicional
![Page 57: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/57.jpg)
57
Si existe un elemento en la colección estudiantes, se solicita el genero al objeto estudiante
genero = darGenero()
![Page 58: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/58.jpg)
58
Tenemos entonces la condición genero =‘F’ Que si es verdadera entonces incrementamos el número de mujeres. Si es falsa no haremos nada
![Page 59: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/59.jpg)
59
Una vez terminado el framento alt debemos avanzar en la iteración. Para esto de nuevo utilizamos:estudiante = *next()
Así queda completa la definición del ciclo.
![Page 60: Fragmentos Combinados: caminos alternativos - Profesoresisis2603/dokuwiki/lib/... · Diagramas de secuencia ... • Suponga que tenemos un diagrama de clases simple sobre una Universidad](https://reader031.vdocuments.co/reader031/viewer/2022022704/5bcca72509d3f206798bfc4f/html5/thumbnails/60.jpg)
60
Con esto concluimos el ejemplo de ciclos con los fragmentos combinados