entre diferencia dependencia composicion asociacion agregacion oop uml

oop - composicion - ¿Cuál es la diferencia entre agregación, composición y dependencia?



dependencia uml (7)

Contención: - Aquí para acceder al objeto interno tenemos que usar el objeto externo. Podemos reutilizar el objeto contenido. Agregación: - Aquí podemos acceder al objeto interno una y otra vez sin usar el objeto externo.

Esta pregunta ya tiene una respuesta aquí:

¿Cuál es la diferencia entre agregación, composición y dependencia?


La agregación y la composición son términos que la mayoría de las personas en el mundo de OO han adquirido a través de UML. Y UML hace un trabajo muy pobre en la definición de estos términos, como lo han demostrado, por ejemplo, Henderson-Sellers y Barbier ("¿Qué es esto que se llama agregación?" "). No creo que se pueda dar una definición coherente de agregación y composición si está interesado en ser compatible con UML. Te sugiero que mires las obras citadas.

Con respecto a la dependencia, esa es una relación altamente abstracta entre tipos (no objetos) que puede significar casi cualquier cosa.


Un objeto asociado con una relación de composición no existirá fuera del objeto contenedor. Los ejemplos son una cita y el propietario (una persona) o un calendario; un TestResult y un Paciente.

Por otro lado, un objeto que se agrega por un objeto que contiene puede existir fuera de ese objeto que contiene. Los ejemplos son una puerta y una casa; un empleado y un departamento.

Una dependencia se refiere a la colaboración o delegación , donde un objeto solicita servicios de otro objeto y, por lo tanto, depende de ese objeto. Como cliente del servicio, desea que la interfaz del servicio permanezca constante, incluso si se ofrecen servicios futuros.


Un objeto puede contener otro como parte de su atributo.

  1. documento contiene oraciones que contienen palabras.
  2. El sistema informático tiene un disco duro, ram, procesador, etc.

Así que la contención no necesita ser física. Por ejemplo, el sistema informático tiene una garantía.


La agregación y la composición son casi completamente idénticas, excepto que la composición se usa cuando el padre controla completamente la vida del niño.

Agregación

Car -> Tires

Los Tires se pueden sacar del objeto del Car e instalarlos en otro diferente. Además, si el automóvil se totaliza, los neumáticos no necesariamente tienen que ser destruidos.

Composición

Body -> Blood Cell

Cuando se destruye el objeto Body las BloodCells se destruyen con él.

Dependencia

Una relación entre dos objetos donde cambiar uno puede afectar al otro.


Agregación - parte separable a total. La parte tiene una identidad propia, separada de la que forma parte. Podrías escoger esa parte y moverla a otro objeto. (Ejemplos del mundo real: rueda -> coche, glóbulo -> cuerpo)

Composición - parte no separable del conjunto. No puedes mover la parte a otro objeto. más como una propiedad. (Ejemplos del mundo real: curva -> carretera, personalidad -> persona, max_speed -> automóvil, propiedad del objeto -> objeto)

Tenga en cuenta que una relación que es un agregado en un diseño puede ser una composición en otro. Se trata de cómo se utilizará la relación en ese diseño específico.

Dependencia - sensible al cambio. (cantidad de lluvia -> clima, posición de la cabeza -> bodyposition)

Nota: "Bloodcell" -> Blood "podría ser" Composición "ya que Blood Cells no puede existir sin la entidad llamada Blood." Blood "-> Body" podría ser "Aggregation" como Blood puede existir sin la entidad llamada Body.


La agregación implica una relación en la que el hijo puede existir independientemente del padre. Ejemplo: Clase (padre) y Estudiante (niño). Eliminar la clase y los estudiantes todavía existen.

La composición implica una relación en la que el niño no puede existir independientemente del padre. Ejemplo: casa (padre) y habitación (niño). Las habitaciones no existen separadas de una casa.

Los dos anteriores son formas de contención (de ahí las relaciones padre-hijo).

La dependencia es una forma más débil de relación y en términos de código indica que una clase usa otra por parámetro o tipo de retorno.

La dependencia es una forma de asociación .