Dic.19

Diagrama de Clases UML: Asociación

Definición

Es una relación de estructura entre clases, es decir, una entidad se construye a partir de otra u otras. Aunque este tipo de relación es mas fuerte que la Dependencia es más débil que la Agregación, ya que el tiempo de vida de un objeto no depende de otro.

Representación UML

Se representa con una flecha continua que parte desde una clase y apunta a otra. El sentido de la flecha nos indica la clase que se compone (base de la flecha) y sus componentes (punta de la flecha).

Del diagrama anterior podemos observar que:

  • La ClaseA depende de la ClaseB.
  • La ClaseA está asociada a la ClaseB.
  • La ClaseA conoce la existencia de la ClaseB pero la ClaseB desconoce que existe la ClaseA.
  • Todo cambio en la ClaseB podrá afectar a la ClaseA.

Esto significa que la ClaseA tendrá como atributo un objeto o instancia de la ClaseB (su componente). La ClaseA podrá acceder a las funcionalidades o atributos de su componente usando sus métodos.

Ejemplo Práctico

  1. Tenemos una clase Taxi con un atributo matricula.
  2. Tenemos una clase Chofer con un atributo nombre.
  3. Cada Taxi necesita ser conducido por un Chofer.
  4. Taxi necesita acceder a algunos de los atributos de su Chofer (por ejemplo, su nombre).

Traduciendo a código: (Java)

Chofer.java


/* Clase Chofer */
class Chofer {
    private String nombre;

    public Chofer(String nombre) {
        this.nombre = nombre;
    }

    public String getNombre() {
        return this.nombre;
    }
}

Taxi.java


/* Clase Taxi */
class Taxi {
    private Chofer chofer;
    private String matricula;

    public Taxi(Chofer chofer, String matricula) {
        this.chofer = chofer;
        this.matricula = matricula;
    }

    public void printMatricula() {
        System.out.println(this.matricula);
    }

    public void printChofer() {
        String nombreChofer = this.chofer.getNombre();
        System.out.println(nombreChofer);
    }
}

Solo bastaría instanciar las clases y hacer uso de sus métodos:


Chofer miChofer = new Chofer("Pedro");
Taxi miTaxi = new Taxi(miChofer, "AHJ-1050");
miTaxi.printChofer();
miTaxi.printMatricula();

Como resultado obtendríamos la impresión en consola del nombre del Chofer "Pedro" y la matricula "AHJ-1050".

Desarrollo,UML,Ingeniería de Software
Share this Story:
  • facebook
  • twitter
  • gplus

About Didier

Leave a comment

Comment