Diagramas de Clases UML: Cuatro Tipos de Relaciones entre Clases

En este artículo, exploraremos las relaciones fundamentales entre clases en los diagramas UML. Existen cuatro tipos principales de relaciones: generalización, asociación, dependencia y agregación. A continuación, analizaremos cada una en detalle.

Relaciones en Diagramas de Clases UML

Las clases pueden estar relacionadas mediante los siguientes tipos de conexiones:

  1. Generalización
  2. Asociación
  3. Dependencia
  4. Agregación

1. Generalización

En los diagramas UML, la generalización representa relaciones de herencia entre clases, herencia entre interfaces, o implementación de interfaces por clases. La relación de generalización se traza desde la subclase hacia la superclase, en dirección opuesta a la herencia o implementación.

**Manifestación concreta:**Superclase instancia = new Subclase()

Diagrama UML:[Imagen 1.1: Relación de generalización entre la clase Animal y las clases Tigre y Perro]

Representación en código:

class Animal {
}

class Tigre extends Animal {
}

public class Prueba {
    public void prueba() {
        Animal a = new Tigre();
    }
}

2. Dependencia

En los diagramas UML, la dependencia indica que entre dos objetos relativamente independientes, cuando un objeto es responsable de crear una instancia de otro objeto o depende de los servicios de otro, se establece una relación de dependencia.

**Manifestación concreta:**Las dependencias aparecen en variables locales, parámetros de métodos y llamadas a métodos estáticos.

**Ejemplo real:**Imagina que necesitas apretar un tornillo. Debes utilizar (depende de) un destornillador para completar la tarea de apretar el tornillo.

Reprseentación UML:[Imagen 1.2: Relación de dependencia entre la clase Persona y la clase Destornillador]

Representación en código:

public class Persona {
    /** Apretar tornillo */
    public void apretarTornillo(Destornillador destornillador) {
        destornillador.apretar();
    }
}

3. Asociación

En los diagramas UML, la asociación representa que entre dos objetos relativamente independientes, cuando una instancia de un objeto tiene una relación fija con instancias específicas de otro objeto, se establece una relación de asociación.

**Manifestación concreta:**La relación de asociación se implementa mediante variables de instancia.

**Ejemplo real:**Por ejemplo, clientes y pedidos: cada pedido corresponde a un cliente específico, y cada cliente tiene ciertos pedidos específicos. Otro ejemplo es empresas y empleados: cada empresa tiene empleados específicos, y cada empleado trabaja para una empresa específica.

Diagrama UML:[Imagen 1.3: Relación de asociación entre Empresa y Empleado]

Representación en código:

public class Empresa {
    private Empleado empleado;
    
    public Empleado getEmpleado() {
        return empleado;
    }
    
    public void setEmpleado(Empleado empleado) {
        this.empleado = empleado;
    }
    
    // La empresa opera
    public void operar() {
        empleado.iniciarTrabajo();
    }
}

4. Agregación

En los diagramas UML, la relación de agregación indica cuando un objeto A se añade a un objeto B, convirtiéndose en parte componente de B. La agregación es un tipo de asociación más fuerte, que enfatiza la relación entre un todo y sus partes.

**Manifestación concreta:**Al igual que la asociación, la relación de agregación se implementa mediante variables de instancia. A nivel sintáctico, no hay forma de distinguir entre asociación y agregación; la diferencia semántica es lo que permite diferenciarlas.

Diferencia entre Asociación y Agregación:

  1. Los objetos involucrados en una relación de asociación están en el mismo nivel jerárquico. Por ejemplo, una persona y una bicicleta tienen una relación de asociación, no de agregación, porque una persona no está compuesta por bicicletas. En la relación de agregación, los objetos están en niveles jerárquicos desiguales: uno representa el todo y otro la parte. Por ejemplo, una computadora y sus componentes como monitor, teclado, placa base y memoria tienen una relación de agregación, ya que la placa base es un componente de la computadora.
  2. Para dos objetos con relación de agregación (especialmente agregación fuerte), el objeto completo controla el ciclo de vida de sus componentes. Los objetos de la clase parte no pueden existir de forma independiente; su ciclo de vida depende del del objeto completo. Cuando el objeto completo desaparece, las partes también desaparecen. Por ejemplo, si le roban la computdaora a Juan, todos sus componentes ya no existen, a menos que Juan hubiera retirado algunos componentes (como el disco duro y la memoria) antes.

Diagrama UML:[Imagen 1.4: Relación de agregación entre Computadora y sus componentes]

Representación en código:

public class Computadora {
    private Procesador procesador;
    
    public Procesador getProcesador() {
        return procesador;
    }
    
    public void setProcesador(Procesador procesador) {
        this.procesador = procesador;
    }
    
    // Encender la computadora
    public void encender() {
        // El procesador funciona
        procesador.ejecutar();
    }
}

Etiquetas: UML diagrama de clases relaciones de clases generalización asociación

Publicado el 6-5 22:28