UML – Relaciones entre clases
La relación entre dos clases se representa mediante una linea que las une. Si la línea no termina con una flecha (en ninguno de sus extremos) la relación es bidireccional, es decir, ambas clases saben de la existencia de la otra.
Tipos de relaciones
- Generalización

Es ni más ni menos que un sinónimo de “Herencia”. También se lo llama “Especialización”.public class Author extends Person
{
//...
}- Dependencia

Es una relación semántica entre dos elementos. Un cambio en el elemento independiente puede afectar al elemento dependiente. Indica que una clase usa otra en alguno de sus métodos, pero esta última no forma parte estructural de la clase que la utiliza.import Author;
public class Files
{
public int getFilesByAuthor(Author author)
{
//...
}
}- Asociación

Significa que una clase está constituída por otra. Es decir, estructuralmente una clase incluye uno o más objetos de otra clase. Aquí existen dos tipos, dependiendo de la forma que incluyamos un objeto dentro de otro:- Composición

El objeto incluído es pasado por valor. Se trata de una relación estática, donde el tiempo de vida del objeto incluído depende del objeto que lo incluye. Si este último es destruído, también será destruido el objeto incluído.- Agregación

El objeto incluído es pasado por referencia. Esta es una relación dinámica, donde el tiempo de vida del objeto incluído no depende del objeto que lo incluye. El objeto incluído puede seguir existiendo si el que lo incluye es destruído.
Multiplicidad de las asociaciones
Determina cuántos objetos de cada tipo intervienen en la relación. Es el número de instancias de una clase que se relacionan con UNA instancia de otra clase.
- Cada asociación tiene 2 multiplicidades (una por cada extremo de la relación)
- La multiplicidad se indica mediante un mínino y un máximo
- Cuando la multiplicidad mínima es 0, la relación es opcional
- Una multiplicidad mínima mayor o igual a 1 establece una relación obligatoria
| Multiplicidad | Significado |
|---|---|
| 1 | Uno y sólo uno |
| 0..1 | Cero o uno |
| n..m | De n a m |
| * | Cero o más |
| 0..* | Cero o más (idem anterior) |
| 1..* | Uno o más |
Interfaces
La implementación de una interfaz se representa con una linea terminada en un círculo, seguido del nombre de dicha interfaz:
Ejemplo
Este es un ejemplo de diagrama de clases hecho con Día:




