[MÚSICA] [MÚSICA] [MÚSICA] Hola, y bienvenidos a una nueva lección. En esta ocasión hablaremos de asociaciones. En particular, de otro tipo de asociaciones diferentes a las básicas. Las asociaciones compuestas o composite, por su nombre en inglés. Al final de esta lección, podrás leer diagramas de clases que contengan asociaciones de tipo compuesto. Las asociaciones de tipo compuesto representan relaciones de tipo agregación, y una agregación representa una asociación entre dos clases en las que una es un todo, y la otra es una parte de dicho todo, es decir, las partes de un todo. Por ejemplo, un carro se compone de un motor, cuatro llantas, un sistema electrónico. O un libro se compone de un prólogo, varios capítulos y una bibliografía. Partes de un todo. Como vemos, las asociaciones compuestas nos permiten modelar una relación en donde las partes le pertenecen a este único todo y en nuestro ejemplo, al carro le pertenecía el motor y todos los elementos. Este motor no podría ser parte de diferentes carros. ¿Cómo representamos entonces en UML una asociación compuesta? De nuevo, una línea, pero en el extremo que corresponde a la parte de la asociación que hace las veces del todo, hacemos un rombo relleno. Vamos a pensar en un ejemplo. Un libro tiene varios capítulos. Tiene sentido pensar que como un libro está compuesto por estos capítulos, es el todo, y que los capítulos solo pueden existir dentro del contexto de este único libro. Esta es la característica principal de las asociaciones de agregación de tipo compuesto en las que la existencia de las instancias de una clase, las partes, dependerán de la existencia de las instancias del todo, y en las que solo puede haber un único todo. Hablemos ahora de la cardinalidad de las asociaciones compuestas. Debido a la naturaleza de las asociaciones, hay ciertas restricciones que debemos cumplir. La más importante es que del lado de la asociación que representa la clase del todo, la cardinalidad debe ser 1, mientras que del lado de las partes puede ser cualquiera de las que hemos visto en el video anterior. Es decir, todas las partes estarán asociadas exactamente a un, y solo un todo. La navegabilidad también puede hacerse explícita en esta relación. Es posible restringir qué objetos tienen visibilidad sobre otros, pero, y esto es muy importante, debido a la naturaleza de la asociación, a lo sumo podemos tener un navegabilidad desde la clase todo a la clase de las partes, pero no podríamos restringirlos de modo contrario. Por ejemplo, en los capítulos de un libro podríamos ver el título del libro como suele suceder, pero en el caso contrario solo a través de la tabla de contenidos del libro podríamos ver cada capítulo y seguirlo leyendo. Las demás convenciones que hemos visto hasta el momento se aplican normalmente. Podemos nombrarlas, asignarles roles de acuerdo a lo que representan, como hemos visto en lecciones anteriores. Y sus convenciones de nombramiento para las asociaciones de tipo compuesto, se mantienen. Ahora, revisemos las implicaciones de una asociación compuesta para los objetos. La primera consecuencia es que todos los objetos instancias de la clase que tiene el rol de parte de, están ligadas al todo. Su creación y su destrucción estará en manos de los objetos de los que hace parte. Para comenzar, vamos a utilizar este ejemplo, el ejemplo del libro que tiene varios capítulos, y los capítulos están relacionados a través de una asociación compuesta. Y vamos a pensar en una clase curso en línea, que tiene una asociación simple con los capítulos para ilustrar que el curso en línea puede publicar esas lecturas capítulos del libro. Ahora vamos a ilustrar usando notación básica de teoría de conjuntos que no hacen parte de UML pero nos van a servir para entender estos conceptos, cuáles son las implicaciones para las instancias de la clase capítulo de la asociación compuesta. Imaginemos que tenemos una instancia de nuestra clase libro que será el libro de Introducción a UML. Este objeto podrá tener tres capítulos. El capítulo 1, el capítulo 2 y el capítulo 3, que serán instancias de nuestra clase capítulo. Y podemos también imaginar un curso en línea que va a publicar alguno de los capítulos como parte de sus lecturas. Entonces, los capítulos están relacionados con nuestro libro a través de una relación de composición. Pero podemos también pensar que el curso 1 tiene una asociación simple que le permitirá publicar este capítulo 3. Ahora, del ciclo de vida de las instancias de la clase capítulo que hacen parte de nuestro libro Introducción a UML, dependen exclusivamente de la existencia de este objeto. Si este objeto fuese destruido, todos los capítulos serían destruidos, y por consecuencia, la lectura que apunta o la lectura que publica el capitulo 3 de nuestro curso en línea también desaparecería porque los objetos dejarán de existir. Y bien, este es el resultado final. Al haber eliminado nuestro objeto libro, Introducción a UML, todos sus capítulos que están relacionados a través de una relación de composición, dejan de existir también. Y por lo tanto, nuestro curso, curso 1, que publicaba como parte de sus lecturas ese capítulo, you no puede hacerlo. Sin embargo, noten que la instancia curso 1, instancia de la clase curso en línea, continúa existiendo normalmente. ¿Por qué? Porque solo había una asociación simple entre curso en línea y capítulo. Con esto termina este video sobre las asociaciones compuestas. Uno de los tres tipos de otras asociaciones que veremos en este curso. En los siguientes videos veremos las asociaciones compartidas y hablaremos de las relaciones de dependencia. Hasta la próxima. [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO]