Академический Документы
Профессиональный Документы
Культура Документы
Asociacin vs Composicin
Por Darel el 14 de Julio de 2010 con 47,275 visitas
Asociacin
La asociacin se podra definir como el momento en que dos objetos se unen para
trabajar juntos y as, alcanzar una meta.
Un punto a tomar muy en cuenta es que ambos objetos son independientes entre
s, veremos un poco ms adelante qu implicacin tiene esto. Para validar la
asociacin, la frase Usa un, debe tener sentido:
Composicin
En caso contrario, la composicin es un tipo de relacin dependiente en dnde un
objeto ms complejo es conformado por objetos ms pequeos. En esta situacin,
la frase Tiene un, debe tener sentido:
public Customer() {
//Lo que sea que el construtor haga
}
// Ms cdigo aqu
La explicacin viene ms adelante para darles oportunidad que hagan sus propias
comparaciones.
public Laptop() {
//Lo que sea que el constructor haga
}
Muy similar, pero hay una gran diferencia: Podemos crear un objeto de tipo
Customer y asignarle un CreditCard ms tarde mediante el mtodo
setCreditCard.
Pero si creamos un objeto Laptop, de entrada sabremos que tendr un teclado ya
creado, puesto que la variable de referencia keyBoad es declarada e inicializada
al mismo tiempo.
Llamaremos a las clases Customer y Laptop, clases contenedoras.
De ambos casos podemos deducir que:
En la asociacin:
1.
2.
En la composicin:
1.
2.
tema:
Todo depende del cristal con que se mire (Ms propiamente dicho, el que
necesites).
Pero espero y haya logrado darles una perspectiva ms clara de cmo y cundo
aplicar Asociacin y Composicin.
Saludos.
Sabes SQL? No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y ms
con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Agregacin
La agregacin es un tipo de asociacin que indica que una clase es parte de otra
clase (composicin dbil). Los componentes pueden ser compartidos por varios
compuestos (de la misma asociacin de agregacin o de varias asociaciones de
agregacin distintas). La destruccin del compuesto no conlleva la destruccin de
los componentes. Habitualmente se da con mayor frecuencia que la composicin.
La agregacin se representa en UML mediante un diamante de color blanco
colocado en el extremo en el que est la clase que representa el todo.
Composicin
Composicin es una forma fuerte de composicin donde la vida de la clase
contenida debe coincidir con la vida de la clase contenedor. Los componentes
constituyen una parte del objeto compuesto. De esta forma, los componentes no
pueden ser compartidos por varios objetos compuestos. La supresin del objeto
compuesto conlleva la supresin de los componentes.
El smbolo de composicin es un diamante de color negro colocado en el extremo
en el que est la clase que representa el todo (Compuesto).
Veamos un ejemplo de composicin:
Y en cdigo
Para traducir ambas relaciones a cdigo, podemos utilizar un atributo en la clase
contenedora o compuesta donde almacenaremos una coleccin de los objetos que
la componen, y por otro lado declararemos un mtodo para agregar elementos a la
coleccin. Dependiendo del lenguaje de programacin empleado, podemos utilizar
diferentes estructuras de datos que nos permitan almacenar esa coleccin de
objetos, aunque generalmente se utilizan arrays (arreglos) para este fin.
Veamos un ejemplo:
Como podemos apreciar, es tan simple como crear en la clase Empresa un atributo
clientes (coleccin de clientes) que sea un array, luego creamos un mtodo
addCliente donde recibiremos objetos de tipo Cliente y los agregaremos dentro del
array.
Concluyendo
En lneas generales, como hemos visto, se podra decir que la diferencia entre
agregacin y composicin es conceptual, no se diferencia por cdigo, o al
menos, en el mayor de los casos y en la mayora de los lenguajes de programacin
(como Java o PHP). De todas maneras, en el caso de la composicin, si quisiramos
ser ms estrictos con los diagramas de clases modelados con UML, deberamos
destruir de alguna manera el objeto componente (empleado) una vez que se
desasociaran del objeto compuesto (empresa).
En definitiva, UML nos permite la posibilidad de diferenciar este tipo de
asociaciones con el fin de que, aquella persona que le interese, pueda estipular de
una u otra manera que se trata de una composicin o una agregacin, aunque en
trminos de implementacin no se diferencie tan apenas su uso ni tenga tanta
relevancia. Pero una vez ms, y como vimos en un post anterior de este blog: UML
en su justa medida , UML propone muchas posibilidades y debe ser el analista
y/o desarrollador quien decida y haga un uso correcto del mismo, con el fin de
visualizar, especificar, construir y documentar adecuadamente los artefactos
(modelos) de un sistema software.