Modelo Clase
Investiga sobre los
conceptos de agregación y composición en UML.
Composición:
Composición es una forma fuerte de composición 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 supresión del objeto compuesto conlleva la supresión de los componentes.
El símbolo de composición 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 composición:
• Tenemos una clase Empresa.
• Un objeto Empresa está a su vez compuesto por uno o varios objetos del tipo empleado.
• El tiempo de vida de los objetos Empleado depende del tiempo de vida de Empresa, ya que si no existe una Empresa no pueden existir sus empleados.
Agregación:
La agregación es un tipo de
asociación que indica que una clase es parte de otra clase (composición débil).
Los componentes pueden ser compartidos por varios compuestos (de la misma
asociación de agregación o de varias asociaciones de agregación distintas). La
destrucción del compuesto no conlleva la destrucción de los componentes.
Habitualmente se da con mayor frecuencia que la composición.
La agregación se representa en
UML mediante un diamante de color blanco colocado en el extremo en el que está
la clase que representa el “todo”.
Veamos un ejemplo de
agregación:
• Tenemos una clase Empresa.
• Tenemos una clase Cliente.
• Una empresa agrupa a varios
clientes.
Diferencias entre Composición
y Agregación
La siguiente tabla intenta
resumir algunas diferencias entre agregación y composición.
Y en código…
Para traducir ambas relaciones
a código, podemos utilizar un atributo en la clase contenedora o compuesta
donde almacenaremos una colección de los objetos que la componen, y por otro
lado declararemos un método para agregar elementos a la colección. Dependiendo
del lenguaje de programación empleado, podemos utilizar diferentes estructuras
de datos que nos permitan almacenar esa colección 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 (colección de
clientes) que sea un array, luego creamos un método addCliente donde
recibiremos objetos de tipo Cliente y los agregaremos dentro del array.
Comentarios
Publicar un comentario