Tipos de Relaciones UML
Tabla Resumen General
| Relación |
Símbolo |
¿Qué significa? |
Ejemplo típico |
Dónde aparece |
| Asociación |
Línea simple |
Relación estructural entre clases |
Cliente — Pedido |
Diagrama de clases |
| Navegabilidad |
Flecha en asociación |
Indica dirección de acceso |
Cliente → Pedido |
Diagrama de clases |
| Agregación |
Rombo blanco ◇ |
Relación "todo-parte" débil |
Equipo ◇ Jugador |
Clases |
| Composición |
Rombo negro ◆ |
Relación "todo-parte" fuerte |
Casa ◆ Habitación |
Clases |
| Dependencia |
Línea discontinua → |
Uso temporal (parámetros, métodos) |
Método recibe objeto |
Clases, secuencia |
| Herencia (Generalización) |
Flecha vacía △ |
Una clase hereda de otra |
Perro → Animal |
Clases |
| Realización |
Línea discontinua △ |
Implementa una interfaz |
Clase → Interface |
Clases |
| Asociación reflexiva |
Línea a sí misma |
Relación consigo misma |
Empleado supervisa empleado |
Clases |
Representación Visual de Relaciones
HERENCIA REALIZACIÓN COMPOSICIÓN AGREGACIÓN
[Perro] [ClaseA] [Casa] [Equipo]
| ╎ ◆ ◇
△ △ | |
| [«interface»] [Habitación] [Jugador]
[Animal] [Volable] (sin casa, (sin equipo,
no existe) puede existir)
ASOCIACIÓN DEPENDENCIA NAVEGABILIDAD REFLEXIVA
[Cliente]──────[Pedido] [A]- - ->[B] [A]──────>[B] [Empleado]
(relación (uso ┐ │
permanente) temporal) └──────┘
supervisa
Relaciones en Detalle
Asociación y Navegabilidad
- Asociación simple: relación estructural bidireccional. Los objetos conocen la existencia del otro.
- Navegabilidad: flecha sobre la línea → indica que solo uno accede al otro (unidireccional).
- Puede incluir multiplicidad:
1, 0..1, 1..*, *
[Cliente] 1 ──────────── * [Pedido]
hace
Agregación vs. Composición ⚠️
La diferencia entre ambas es el ciclo de vida de las partes.
| Característica |
Agregación ◇ |
Composición ◆ |
| Tipo de relación |
Todo-parte débil |
Todo-parte fuerte |
| Ciclo de vida |
Partes independientes |
Partes dependen del todo |
| Si el todo se destruye |
Las partes sobreviven |
Las partes desaparecen |
| Ejemplo |
Equipo ◇ Jugador |
Casa ◆ Habitación |
| Símbolo |
Rombo blanco en el todo |
Rombo negro en el todo |
Herencia (Generalización)
- Una clase hija hereda atributos y métodos de la clase padre.
- Representa la relación "es un tipo de".
- Flecha con punta triangular vacía apuntando al padre.
[Animal]
△
|
[Perro] ← hereda atributos y métodos de Animal
Realización
- Una clase implementa los métodos declarados en una interfaz.
- Representa la relación "cumple el contrato de".
- Línea discontinua con punta triangular vacía.
// Equivalente en código:
class Pato implements Volable { ... }
Dependencia
- Relación temporal: una clase usa a otra en un método (parámetro, variable local).
- No hay atributo permanente entre ellas.
- Línea discontinua con flecha simple.
// Dependencia: Factura depende de Impresora
void imprimir(Impresora imp) { imp.print(this); }
Asociación Reflexiva
- Una clase se relaciona consigo misma.
- Habitual en jerarquías o estructuras recursivas.
[Empleado] ─────────┐
└───supervisa───┘
Relaciones por Tipo de Diagrama UML
| Diagrama UML |
Relaciones más usadas |
| Clases |
Asociación, agregación, composición, herencia, dependencia |
| Secuencia |
Mensajes (llamadas entre objetos) |
| Comunicación |
Enlaces + mensajes |
| Casos de uso |
Inclusión, extensión, generalización |
| Componentes |
Dependencias |
| Despliegue |
Asociaciones |
Guía de Decisión: ¿Qué relación usar?
| Relación |
Cuándo usarla |
| Dependencia |
Parámetros, variables locales, uso temporal |
| Asociación |
Relación permanente (atributos) |
| Composición |
Vida dependiente (si muere el todo, mueren las partes) |
| Agregación |
Relación débil (pueden existir por separado) |
| Herencia |
"Es un tipo de" |
| Realización |
"Implementa interfaz" |
Árbol de decisión rápido
¿La relación es temporal (parámetros/métodos)?
└── SÍ → DEPENDENCIA (- - - →)
└── NO → ¿Es jerárquica ("es un tipo de")?
└── SÍ + clase concreta → HERENCIA (──△)
└── SÍ + interfaz → REALIZACIÓN (- -△)
└── NO → ¿Es todo-parte?
└── SÍ + ciclos de vida dependientes → COMPOSICIÓN (──◆)
└── SÍ + ciclos de vida independientes → AGREGACIÓN (──◇)
└── NO → ASOCIACIÓN (────)
Multiplicidad (Notación UML)
| Notación |
Significado |
1 |
Exactamente uno |
0..1 |
Cero o uno |
* o 0..* |
Cero o más |
1..* |
Uno o más |
n..m |
Entre n y m |
⚠️ Errores Frecuentes en Oposición
- Confundir agregación y composición: la clave es el ciclo de vida.
- Usar herencia cuando la relación es de uso → debe ser dependencia o asociación.
- Confundir realización (interfaz) con herencia (clase abstracta): el símbolo es similar pero la línea es discontinua en realización.
- La flecha de dependencia y realización son ambas discontinuas → diferenciarlas por la punta (simple vs. triangular).
Resumen en 3 puntos
-
Las relaciones estructurales (asociación, agregación, composición) modelan cómo los objetos se relacionan en el tiempo; la diferencia entre agregación y composición está en si las partes sobreviven o no a la destrucción del todo.
-
Las relaciones de herencia y realización modelan la jerarquía de tipos: la herencia extiende una clase concreta o abstracta ("es un"), mientras que la realización implementa el contrato de una interfaz (línea discontinua + flecha triangular vacía).
-
La dependencia es la relación más débil: indica un uso puntual (parámetro, variable local) sin vínculo permanente, y es la primera opción cuando dos clases interactúan solo en el contexto de un método.