Diagrama de Secuencia

Varias veces dijimos que la programación orientada a objetos se basa en la representación en software de los objetos que intervienen en el dominio de la aplicación junto con las relaciones e interacciones entre ellos. Mediante el diagrama de clases, UML permite especificar de manera estática las clases del modelo y sus relaciones. Para expresar la forma en que los objetos (no las clases) interactúan para llevar a cabo su objetivo dentro de la aplicación y solucionar un problema, UML provee el diagrama de secuencia, que permite especificar los mensajes que intercambian los objetos, el orden en que lo hacen y cómo reacciona cada objeto ante la llegada de un mensaje proveniente de otro.

ELEMENTOS DEL DIAGRAMA DE SECUENCIA

A diferencia del diagrama de clases, en el diagrama de secuencia intervienen instancias, es decir, objetos concretos que pertenecen a una determinada clase. Los ob- jetos se representan simplemente como rectángulos con su nombre y la clase a la que pertenecen dentro de él, separadas por dos puntos (:). En caso en que no inte- rese la identidad de una instancia en particular, se puede omitir el nombre, colo- cando sólo el nombre de la clase a la que pertenece, precedida por los dos puntos. Otro elemento de este diagrama son los mensajes. Desde el punto de vista de la implementación, podemos considerar los mensajes como invocación a métodos: cuando un objeto A envía un mensaje B a un objeto C, podemos traducir como que el objeto A invoca el método B del objeto C. Los mensajes se representan me- diante flechas simples, con el nombre del mensaje escrito sobre ellas.

Por último, dado que para representar una secuencia debemos especificar el or- den en que los mensajes son enviados, UML permite indicar una línea de tiem- po, que se coloca en el diagrama de manera vertical, y que consiste en una línea punteada por cada una de las instancias que intervienen en el diagrama.

Para entender cómo funciona el diagrama de secuencia, imaginemos que tene- mos que representar un escenario de matriculación de un alumno en un curso. Tenemos una clase Alumno, una clase Curso y una clase Facultad. La clase Facul- tad tiene la capacidad de determinar si un alumno puede inscribirse en un curso (porque conoce las correlatividades y las asignaturas aprobadas por el alumno). Cuando un alumno quiere inscribirse, hace la solicitud al curso (mediante un mensaje), y el curso consulta con la universidad si se cumplen las condiciones. Si todo está bien, el curso acepta la inscripción del alumno.

La siguiente figura representa este escenario mediante un diagrama de secuencia.

 El diagrama de secuencia muestra la interacción entre los objetos en un determinado escenario.

Como observamos en el diagrama, el objeto Alumno envía un mensaje SolicitarInscripcion al objeto Curso. Luego, éste envía un mensaje VerificarCorrelatividades al objeto de clase Universidad, quien contesta afirmativamente. Ante la llegada de la respuesta de la universidad, el objeto Curso le confirma la inscripción al objeto Alumno. Observemos que el tiempo corre hacia abajo, por lo que el orden en que aparece cada mensaje en el diagrama es cronológico.

En la Figura, hay algunos detalles que aún no mencionamos. Los mensajes de línea punteada corresponden a las respuestas de un objeto a un mensaje determinado. Los rectángulos delgados sobre las líneas de tiempo corresponden a instancias particulares, esto es, cada rectángulo en la línea de tiempo de un objeto corresponde a una instancia particular.