Вы находитесь на странице: 1из 6

Los dos conceptos que debes conocer cmo mnimo cuando intentas

descifrar la forma en que tus objetos deben interactuar son Asociacin y


Composicin.

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:
El ingeniero usa una computadora
El cliente usa tarjeta de crdito.

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:
El auto tiene llantas
La porttil tiene un teclado.

Cmo implementar Asociacin

Representaremos la relacin: El cliente usa tarjeta de crdito.


Cdigo :
public class Customer {

private int id;


private String firstName;
private String lastName;
private CreditCard creditCard;

public Customer() {
//Lo que sea que el construtor haga
}

public void setCreditCard(CreditCard creditCard) {


this.creditCard = creditCard;
}

// Ms cdigo aqu
}
La explicacin viene ms adelante para darles oportunidad que hagan sus
propias comparaciones.

Cmo implementar Composicin

Representaremos la relacin: La porttil tiene un teclado.


Cdigo :
public class Laptop {

private String manufacturer;


private String model;
private String serviceTag;
private KeyBoard keyBoard = new KeyBoard();

public Laptop() {
//Lo que sea que el constructor haga
}

Tiempo de vida de un objeto

Para que quede ms clara la diferencia entre Asociacin y Composicin,


entendamos adems, lo que es el tiempo de vida de un objeto.

Se define como el tiempo que transcurre desde que un objeto es creado


hasta que se destruye.

Aplicando esto a la asociacin, tenemos que los tiempos de vida de ambos


objetos se cruzan mientras estn trabajando juntos, esto es, mientras se
encuentran asociados, pero no significa que se hayan creado al mismo
tiempo.

En el ejemplo del cliente, puede ser que primero se cree el cliente, despus la
tarjeta de crdito y luego viene la asociacin. O incluso se puede crear antes

la tarjeta de crdito. Sus tiempos de vida se cruzan slo mientras la tarjeta


de crdito est asociada al cliente.

En la composicin, tanto los objetos componentes como la clase


contenedora, nacen y mueren al mismo tiempo. Esto es, tienen el mismo
tiempo de vida.

Al ser una relacin demasiado dependiente, si cualquier objeto muere, se


lleva consigo a todos los dems. En el ejemplo de la porttil, si mi teclado se
descompone, mi laptop ya no es funcional.
Y no vengan con que puedo reemplazar el teclado, y que puedo seguir
trabajando con la misma porttil y un teclado distinto. Tienes que analizarlo
de la siguiente forma:

Si a tu auto, se le poncha una llanta, podrs reemplazarlas siempre y cuando


lo tengas estacionado (Es como modificar el cdigo de la clase, el sistema no
est en funcionamiento). Pero Qu pasa si tu auto estuviera en marcha?,
puedes cambiarla al vuelo e impedir que el auto se detenga? No se puede,
por lo tanto tu auto deja de cumplir su objetivo en ese momento y para fines
prcticos, ya no sirve. Entonces es lo mismo con los objetos ya creados, no
puedes reemplazarles componentes al vuelo porque no existe (no debera)
mecanismo alguno en la definicin de la clase, que te lo permita.

Asociacin o Composicin? depende

Habr casos en que ser difcil determinar qu tipo de relacin usar cuando
ambas encajan:
Un reloj tiene manecillas
Un reloj usa manecillas (Para dar la hora, claro).

As que debes tomar en cuenta qu tanta flexibilidad te dara implementar


una u otra.

Desde el punto de vista de fabricante de relojes, necesito tener control sobre


cada una de las piezas que conforman mis relojes; as, si alguna pieza sale
defectuosa, puedo reemplazarla antes que mi producto llegue al mercado. Me
conviene la asociacin.

Pero desde el punto de vista de Consumidor final, Si mis manecillas se


friegan, pues tiro el reloj entero y me compro uno nuevo. Lo vera como
composicin.

Y terminar diciendo lo mismo que dicen la mayora de las lecturas que


tratan este 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.

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).

Вам также может понравиться