2009-10-29 33 views

Respuesta

120

Agregación y composición son casi completamente idénticos excepto que composición se utiliza cuando la vida del niño está completamente controlado por los padres.

Agregación

Car -> Tires 

El Tires se puede sacar del objeto Car e instalado en una diferente. Además, si el automóvil se suma, las llantas no necesariamente tienen que ser destruidas.

Composición

Body -> Blood Cell 

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

Dependencia

Una relación entre dos objetos, donde el cambio de uno puede afectar al otro.

+10

Es curioso, acabo de leer un tutorial donde se usa el ejemplo de las llantas de automóvil para ilustrar la composición ... – mouviciel

+11

interesante, supongo que depende de cómo lo mires. No veo cómo la destrucción del objeto del automóvil también exige que los neumáticos sean destruidos también. Además, puede quitar los neumáticos de un automóvil y ponerlos en un automóvil diferente. Ese es el problema con las analogías, aunque supongo. –

+1

Sí, de hecho entendí la agregación y la composición no con tales analogías sino con el código real. – mouviciel

381

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

La composición implica una relación donde 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.

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

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.

Dependencia es una forma de asociación .

+1

Mencione el hecho de que la agregación y la composición son especialización de la forma de relación de contención y sería perfecto. – alphazero

+1

:-) No dice que tienes razón o estás equivocado, pero estas clasificaciones son malas. ¿Clase/Estudiante == Agregación? ... No de acuerdo con JavaPapers.com. http://javapapers.com/oops/association-aggregation-composition-abstraction-generalization-realization-dependency/ "Una clase contiene estudiantes. Un alumno no puede existir sin una clase. Existe una composición entre clase y estudiantes". – TallPaul

+0

Por cierto, personalmente estoy de acuerdo con usted ... – TallPaul

6

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

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

A dependencia refiere a colaboración o delegación, en donde un servicios de solicitudes de objetos de otro objeto y es para ello depende de ese objeto. Como cliente del servicio, desea que la interfaz de servicio permanezca constante, incluso si se ofrecen servicios futuros.

5

Agregación y composición son términos que la mayoría de las personas en el mundo OO han adquirido a través de UML. Y UML hace un trabajo muy pobre al definir estos términos, como lo han demostrado, por ejemplo, Henderson-Sellers y Barbier ("¿Qué es lo que se llama agregación?", "Formalización de la relación de partes enteras en el lenguaje de modelado unificado" "). No creo que se pueda dar una definición coherente de agregación y composición si le interesa cumplir con UML. Sugiero que mires los trabajos citados.

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

0

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

1

Un objeto puede contener a otro como parte de su atributo.

  1. documento contiene oraciones que contienen palabras.
  2. sistema de ordenador tiene un disco duro, memoria RAM, procesador, etc.

Así contención no tiene por qué ser física. Por ejemplo, el sistema de computadora tiene una garantía.

39

Agregación - parte separable a todo. La parte tiene una identidad propia, separada de lo que forma parte. Podrías elegir esa parte y moverla a otro objeto. (ejemplos del mundo real: rueda -> coche, célula sanguínea -> cuerpo)

Composición - parte no separable del todo. No puedes mover la parte a otro objeto. más como una propiedad. (Ejemplos del mundo real: curva -> carretera, personalidad -> persona, velocidad_máxima -> 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. Es todo acerca de cómo la relación se va a utilizar 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 las células sanguíneas no pueden existir sin la entidad llamada Blood." Blood "-> Body" podría ser "Agregación" ya que la Sangre puede existir sin la entidad llamada Cuerpo.

Cuestiones relacionadas