261 votos

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

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

426voto

cletus Puntos 276888

Agregación implica una relación en la que el niño puede existir de forma independiente de la de los padres. Ejemplo: la Clase (padre) y el Alumno (niño). Eliminar la Clase y los Estudiantes todavía existen.

Composición implica una relación en la que el niño no puede existir independiente de la de los padres. Ejemplo: Casa (padre) y Habitación (niño). Las habitaciones no existen por separado a una Casa.

Los dos anteriores son formas de contención (por lo tanto, las relaciones padre-hijo).

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

La dependencia es una forma de asociación.

139voto

Robert Greiner Puntos 16237

la agregación y la composición son casi completamente idénticas, excepto que la composición se utiliza cuando la vida del niño está completamente controlada por los padres.

Agregación

Coche>Neumáticos

Los neumáticos pueden tomarse fuera de la cabina objeto y se instala en una diferente. También, si el automóvil se sumaron, los neumáticos no necesariamente tiene que ser destruido.

Composición

Cuerpo->Células De La Sangre

Cuando el objeto de Cuerpo es destruido, el BloodCells se destruye con ella.

Dependencia

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

44voto

MatsW Puntos 21

Agregación - separables de la parte al todo. La pieza tiene una identidad propia, independiente de lo que es parte de. Usted puede elegir que parte y moverlo a otro objeto. (ejemplos del mundo real: la rueda -> coche, bloodcell -> body)

Composición - no-separables parte de la totalidad. Usted no puede mover la parte a otro objeto. más como una propiedad. (ejemplos del mundo real: la curva -> carretera, de la personalidad -> persona, max_speed -> coche, propiedad de objeto> objeto )

Tenga en cuenta que una relación que es un agregado en un diseño puede ser una composición en la otra. Su todo acerca de cómo la relación es para ser utilizado en el diseño.

la dependencia sensible a cambios. (cantidad de lluvia -> clima, headposition -> bodyposition)

Nota: "Bloodcell" -> Sangre" podría ser "Composición", como las Células de la Sangre no puede existir sin la entidad llamada de la Sangre. "De sangre" -> Cuerpo" podría ser "Agregación" como la Sangre puede existir sin la entidad denominada Cuerpo.

6voto

Mark Puntos 728

Un objeto asociado con una composición relación no existe fuera de la que contiene el objeto. Ejemplos son una Cita y el propietario (a una Persona) o un Calendario; un TestResult y un Paciente.

Por otro lado, un objeto que se agregan por un objeto que contiene puede existir fuera que contiene el objeto. 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 de solicitudes de servicios de otro objeto y es por ello dependientes de ese objeto. Como el cliente del servicio, desea que la interfaz de servicio de permanecer constante, incluso si el futuro de los servicios que se ofrecen.

5voto

CesarGon Puntos 8710

La agregación y la composición son los términos que la mayoría de la gente en la OO mundo han adquirido a través de UML. UML y hace un trabajo muy pobre en la definición de estos términos, como se ha demostrado, por ejemplo, Henderson-Sellers y Barbier ("¿Qué es Esta Cosa Llamada Agregación?", "La formalización de la Totalidad de la Parte de la Relación en el Lenguaje de Modelado Unificado"). No creo que una definición coherente de la agregación y la composición puede ser dada si usted está interesado en ser UML-compatible. Le sugiero que busque en los trabajos citados.

Con respecto a la dependencia, que es una muy abstracto relación entre los 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