composición y agregación

30
Composición y Agregación

Upload: jordan-ulises-r-alarcon

Post on 16-Sep-2015

27 views

Category:

Documents


0 download

DESCRIPTION

Programación Orientada a Objetos

TRANSCRIPT

Composicin y Agregacin

Composicin y AgregacinExisten diversas formas para organizar clases en un programa con mltiples clases, una de ellas es la agregacin.

Hay dos formas de agregacin:

La primera es cuando las clases forman parte de una clase contendora ms grande, donde una clase es el todo y las otras clases son parte del todo.

Hay dos formas de agregacin:La otra forma de agregacin tambin define una clase como el todo y a otras clases como partes del todo. Pero tiene una restriccin adicional que indica que la clase todo es la propietaria exclusiva de las clases parte.

Composicin

Es un tipo de relacin entre dos objetos que tienen comunicacin persistente.

Se utiliza para expresar que un par de objetos tienen una relacin de dependencia para llevar a cabo su funcin, de modo que uno de los objetos involucrados est compuesto por el otro.

Con la composicin, la clase todo se denomina compuesto, las clases parte se denominan componentes y el compuesto contiene a los componentes.

Se considera que la composicin es una forma fuerte de la agregacin, puesto que las conexiones compuesto-componentes son fuertes (debido a que cada componente slo tiene un propietario: el compuesto).

De manera prctica, es posible reconocer asociatividad entre dos objetos A y B si la proposicin "A tiene un B" (o viceversa) es verdadera. Por ejemplo: "una computador tiene un disco duro" es verdadero; por tanto, un objeto computador tiene una relacin de composicin con al menos un objeto disco duro.

En una jerarqua de composicin (as como en una jerarqua de agregacin), la relacin entre una clase contenedora y una de sus clases parte se denomina relacin tiene-un. Por ejemplo, cada cuerpo humano tiene un cerebro y tiene un corazn.

AGREGACINConsiste en la agrupacin de una o ms clases dentro de otra.

Jerarqua de agregacin. Relacin tiene-un.

En una agregacin, las partes no son propiedad exclusiva del todo.

Siempre que exista una relacin de agregacin, es necesario guardar el objeto de la clase contenida en una variable de referencia de la clase contenedora, y tambin debe guardarse en otra variable de referencia fuera de la clase contenedora.EJEMPLO DE AGREGACIN

La regla general para implementar relaciones de agregacin consiste en: Siempre que dos clases tienen una relacin de agregacin, es necesario guardar el objeto de la clase contenida en una variable de referencia en la clase contenedora, y tambin debe guardarse en otra variable de referencia fuera de la clase contenedora. De esa forma, el objeto puede aadirse a otra agregacin y tener dos propietarios distintos (el hecho de tener dos propietarios distintos es permitido por la agregacin).Ejemplo de Agregacin y Composicin

Comparacin entre Composicin y Agregacin

Si la entidad motor forma parte de carro, y corazn forma parte de la persona, entonces la flecha apunta a la clase carro y persona respectivamente y el diamante va pegado a estas clases.La diferencia entre la relacin carro-ruedas y persona-corazn, es que en el primer caso se llama agregacin por ser una relacin en donde la existencia del carro no depende de las ruedas, mientras que en l segn caso una persona no existe sin su corazn. Por tanto la relacin de la persona con su corazn es de composicin.Tanto en la agregacin como en la composicin ocurre que varias clases forman parte de una clase contenedora.La diferencia entre las dos formas de agregacin es que, en la composicin, la clase todo es la propietaria exclusiva de las clases parte; mientras que en la agregacin las clases parte pueden pertenecer a otras clases adems de la clase todoConclusiones

Cuando un programa tiene una gran cantidad de clases se utiliza la agregacin, la cual nos permite organizar las clases de forma ordenada.Existen dos formas primarias de agregacin, la agregacin propiamente dicha (agregacin dbil) y la composicin (agregacin fuerte).En una jerarqua de composicin, as como en una jerarqua de agregacin, la relacin entre una clase contenedora y una de sus clases parte se denomina relacin tiene-un.En la composicin las clases parte pueden transferirse de una clase todo a otra; pero siempre pertenecern a una sola clase todo.En la agregacin (dbil) la clase contenida presenta independencia con respecto a la clase todo; es decir que la clase contenida puede seguir existiendo aunque la clase todo sea eliminada.Siempre que dos clases tienen una relacin de agregacin (dbil), es necesario guardar el objeto de la clase contenida en una variable de referencia en la clase contenedora, y tambin debe guardarse fuera de la clase contenedora. De esta forma, el objeto puede aadirse a otra agregacin y tener dos propietarios distintos.La agregacin con respecto a su modelamiento en UML se representa mediante una lnea que parte de la clase contenida y termina en forma de rombo blanco en la clase contenedora.La composicin con respecto a su modelamiento en UML se representa mediante una lnea que parte de la clase contenida y termina en forma de rombo negro en la clase contenedora.