Me surgió una duda de cómo representar la creación de una compra en un diagrama de secuencias. Es un ejemplo quizás trivial pero que seguro me va a aclarar algun concepto que estoy pasando por alto.
Por ejemplo, en los tests del enunciado la clase algobay tiene un método que es crearNuevaCompra(). Dentro de este método va a haber una línea que diga:
Compra compra = new Compra();
y luego se devolvera la compra creada.
Mi duda es: como represento esto en un diagrama de secuencias, si bien la compra se crea en el metodo de algobay, algobay no le esta mandando un mensaje explicitamente a la clase compra (o si?), no es la clase compra la que se "autoenvia" el mensaje new?
Adjunto una imagen de como representaría lo planteado en el primer caso, no sé si está correcto.
Me podrían aclarar esta duda?
Muchas gracias.
Ariel
Hola Ariel,
Cuando tengas una duda así por favor no utilices el enunciado del trabajo práctico como ejemplo en el foro (ya es la tercera vez que lo hacés).
Los objetos tienen la capacidad de recibir mensajes de otros objetos o de sí mismos. Si tienen ese mensaje implementado entonces sabrán responderlo.
Si un objeto A crea un objeto B a través de su constructor entonces efectivamente el objeto A le está mandando un mensaje de creación (sea new o el constructor adecuado) a la clase B.
Tu diagrama está bien, salvo que para estos casos la segunda caja se debería poner a la misma altura que la flecha del mensaje de creación y además se suele poner una leyenda de creación (<<create>>) arriba del nombre del mensaje. De todas formas la secuencia que planteás es tan trivial que no tiene sentido que incluyas un diagrama solamente para eso.
En el capítulo 8 del libro de Carlos Fontela que está subido en la página principal del campus virtual y en el libro "UML distilled" ("UML gota a gota") de Martin Fowler encontrarás muchos ejemplos más.
Saludos,
Tomás