261 votos

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

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

426voto

cletus Puntos 276888

Agregación implica una relación en la que el hijo puede existir independientemente del padre. Ejemplo: Clase (padre) y Estudiante (hijo). Si se elimina la clase, los estudiantes siguen existiendo.

Composición implica una relación en la que el hijo no puede existir independientemente del padre. Ejemplo: Casa (padre) y Habitación (hijo). 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 utiliza a otra por parámetro o tipo de retorno.

La dependencia es una forma de asociación .

139voto

Robert Greiner Puntos 16237

Agregación y composición son casi completamente idénticos, salvo que composición se utiliza cuando la vida del niño está completamente controlada por el padre.

Agregación

Car -> Tires

El Tires se puede sacar de la Car y se instala en otro diferente. Además, si el coche queda destrozado, los neumáticos no tienen por qué ser destruidos.

Composición

Body -> Blood Cell

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

Dependencia

Una relación entre dos objetos en la que el cambio de uno puede afectar al otro.

44voto

MatsW Puntos 21

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

Composición - parte no separable del conjunto. No se puede trasladar la parte a otro objeto. es más bien una propiedad. (ejemplos del mundo real: curva -> carretera, personalidad -> persona, max_speed -> coche, 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. Todo depende de cómo se vaya a utilizar la relación en ese diseño específico.

dependencia - sensible al cambio. (cantidad de lluvia -> tiempo, posición de la cabeza -> posición del cuerpo)

Nota: "Célula sanguínea" -> Sangre" podría ser "Composición" ya que las Células sanguíneas no pueden existir sin la entidad llamada Sangre. "Sangre" -> Cuerpo" podría ser "Agregación" ya que la Sangre puede existir sin la entidad llamada Cuerpo.

6voto

Mark Puntos 728

Un objeto asociado a un 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 agregado por un objeto contenedor puede existen fuera de ese objeto contenedor. Ejemplos son una puerta y una casa; un empleado y un departamento.

A dependencia se refiere a colaboración o delegación Cuando un objeto solicita servicios de otro objeto y, por tanto, depende de éste. Como cliente del servicio, quieres que la interfaz del servicio permanezca constante, incluso si se ofrecen futuros servicios.

5voto

CesarGon Puntos 8710

La agregación y la composición son términos que la mayoría de la gente del mundo OO ha adquirido a través de UML. Y UML hace un trabajo muy pobre en la definición de estos términos, como ha sido demostrado, por ejemplo, por Henderson-Sellers y Barbier ("What is This Thing Called Aggregation?", "Formalization of the Whole-Part Relationship in the Unified Modeling Language"). No creo que pueda darse 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.

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X