Curso UML
🧠 ¿Qué es un diagrama de comunicación?
Un diagrama de comunicación (antes llamado diagrama de colaboración en UML 1.x) muestra cómo los objetos interactúan entre sí mediante mensajes, enfocándose en las relaciones estructurales (líneas de asociación) y el orden en que ocurren los mensajes (numeración).
🔍 A diferencia de los diagramas de secuencia, los diagramas de comunicación no se enfocan en el tiempo lineal, sino en la topología de las relaciones.
🧩 Elementos clave de un diagrama de comunicación
| Elemento | Descripción |
|---|---|
| 📦 Objetos | Instancias de clases. Representan actores que participan en la interacción. |
| 🔄 Asociaciones | Líneas que conectan objetos. Indican una posible comunicación. |
| 📨 Mensajes numerados | Indican qué mensajes se envían, en qué orden y en qué dirección. |
| 💬 Notas (opcional) | Aclaraciones o condiciones para entender el mensaje. |
🧱 Sintaxis en PlantUML
PlantUML usa la siguiente sintaxis para los diagramas de comunicación:
1@startuml 2object Cliente 3object Tienda 4object Pedido 5 6Cliente -> Tienda : 1: hacerPedido() 7Tienda -> Pedido : 2: crearPedido() 8Pedido -> Cliente : 3: confirmar() 9@enduml
🎓 Ejemplo 1: Proceso de compra
Escenario: Un cliente realiza un pedido a una tienda, la tienda crea un pedido, y el pedido es confirmado al cliente.
📈 Diagrama en PlantUML
1@startuml 2object Cliente 3object Tienda 4object Pedido 5 6Cliente -> Tienda : 1: hacerPedido() 7Tienda -> Pedido : 2: crear() 8Pedido -> Cliente : 3: confirmar() 9@enduml
📌 Explicación:
- Cliente, Tienda y Pedido son objetos que interactúan.
- La flecha
Cliente -> Tiendacon1:indica el primer mensaje enviado:hacerPedido(). - Luego, la tienda envía el mensaje
crear()al objeto pedido. - Finalmente, el pedido responde al cliente con
confirmar().
🎓 Ejemplo 2: Registro de usuario
Escenario: Un usuario se registra, el sistema valida los datos y guarda el usuario en la base de datos.
📈 Diagrama en PlantUML
1@startuml 2object Usuario 3object Sistema 4object BaseDeDatos 5 6Usuario -> Sistema : 1: registrar(nombre, email) 7Sistema -> Sistema : 2: validarDatos() 8Sistema -> BaseDeDatos : 3: guardarUsuario() 9BaseDeDatos -> Usuario : 4: notificarExito() 10@enduml
📌 Explicación:
- El objeto
Sistematiene una autollamadavalidarDatos()representada con una flecha hacia sí mismo. - El orden de los mensajes está numerado.
- La comunicación incluye a la base de datos y devuelve una notificación al usuario.
🧮 Comparación con Diagrama de Secuencia
| Característica | Diagrama de Comunicación | Diagrama de Secuencia |
|---|---|---|
| Énfasis | Relaciones entre objetos | Orden temporal |
| Visualización de estructura | Alta | Media |
| Uso de líneas de vida | No | Sí |
| Ideal para | Redes de interacción | Flujo cronológico |
💡 Buenas prácticas
- Usa nombres claros para los objetos (por ejemplo:
cliente,pedido). - Numera los mensajes para indicar el orden de ejecución.
- No sobrecargues el diagrama: representa solo lo esencial.
- Si hay muchos mensajes entre dos objetos, indica solo los más relevantes.
🛠 Actividad propuesta
Diseña un diagrama de comunicación para este escenario:
Un alumno solicita inscribirse a un curso. El sistema valida la disponibilidad y notifica al alumno el resultado. Si hay cupo, se registra la inscripción en la base de datos.
Solución:
1@startuml 2object Alumno 3object Sistema 4object Curso 5object BaseDeDatos 6 7Alumno -> Sistema : 1: solicitarInscripcion(cursoId) 8Sistema -> Curso : 2: verificarDisponibilidad(cursoId) 9Curso -> Sistema : 3: disponibilidad = true 10Sistema -> BaseDeDatos : 4: registrarInscripcion(alumnoId, cursoId) 11Sistema -> Alumno : 5: notificarExito() 12@enduml