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
UML - Generalization
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
UML - Dependency
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
UML - Association
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
UML - Composition
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.

import Date;

public class File
{
    private Date time = new Date();
}
Agregación
UML - Aggregation
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.

import File;

public class Files
{
    private File[] files = null;
    private int pointer = -1;

    //..

    public File getLast()
    {
        if (this.pointer >= 0)
        {
            return this.files[this.pointer--];
        }
        return null;
    }

}

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:
UML - Interface

Ejemplo

Este es un ejemplo de diagrama de clases hecho con Día:

UML - Class Diagram
Click en la imagen para ver el diagrama completo

Tags: