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

ElementoDescripción
📦 ObjetosInstancias de clases. Representan actores que participan en la interacción.
🔄 AsociacionesLíneas que conectan objetos. Indican una posible comunicación.
📨 Mensajes numeradosIndican 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:

cliente tienda
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

pedido
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 -> Tienda con 1: 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

base datos
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 Sistema tiene una autollamada validarDatos() 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ísticaDiagrama de ComunicaciónDiagrama de Secuencia
ÉnfasisRelaciones entre objetosOrden temporal
Visualización de estructuraAltaMedia
Uso de líneas de vidaNo
Ideal paraRedes de interacciónFlujo cronológico

💡 Buenas prácticas

  1. Usa nombres claros para los objetos (por ejemplo: cliente, pedido).
  2. Numera los mensajes para indicar el orden de ejecución.
  3. No sobrecargues el diagrama: representa solo lo esencial.
  4. 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:

cursos
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