Llevo varios días buscando en código cuál era la diferencia entre Agregación y Composición pero nadie sabía explicarlo, excepto tu. Muchas gracias por el video.
Muy buena explicación Bella, al fin pude entender mejor como representar en el codigo el traspaso de agregacion y composicion de clases. muchas gracias!
En composicion , dentro del constructor de una clase A se construye los objetos de la otra clase B . Y en agregación , se construye los objetos de la clase B fuera del constructor de la clase A. Así es o estaré equivocado🤔.
Hola, gracias por el video. Tengo una duda, si los atributos son privados, como puedo crear a chapultepec.animales = new Animal[3]; sin que salga error por tratar de acceder a un atributo privado, osea animales.
Los atributos privados solo pueden ser accedidos dentro de la clase, si quieres acceder a ellos fuera, se usa encapsulamiento para modificar o ver el atributo a partir de métodos. En este vídeo explico eso ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-wPEmmQi4yVo.html y la implementación la encuentras a partir del minuto 12.
Excelente explicacion!! tengo una duda, en la composicion la clase abeja puede existir y ser instanciada independientemente fuera de la clase panal, programaticamente si se puede hacer, pero estariamos rompiendo el principio de composicion en uml? es asi?
Hola Martín, conceptualmente cuando hablamos de composición nos referimos a una relación "parte/todo", por lo que no tendría sentido que una instancia de la clase parte sea creada fuera de la instancia de la clase todo. El caso que comentas de la abeja y el panal tendría sentido crear las abejas fuera en una relación de agregación, donde las abejas son independientes del panal. Cabe destacar que hay diferentes opiniones en torno a las diferencias entre agregación y composición, la persona que grabó el video concluye que la única diferencia radica en el momento en el que hacemos la creación, sin embargo, según mi opinión hay más diferencias, a nivel conceptual, si realizamos una composición entre una base de madera y sus 4 patas para formar una mesa, si las patas dejan de existir, también desaparece el concepto de mesa. A nivel de código además del momento de la creación, también existe diferencia en la eliminación de las instancias, pero bueno, todo depende de lo que estemos modelando y de las diferentes formas de abstracción de cada persona
En lugar de declarar un arreglo de abejas hace una lista de abejas en la clase Panal: ArrayList listaDeAbejas; Cuando lo use, para que sea composición, se espera una dependencia de abeja hacia panal, por lo que la opción expuesta en el video (aunque hay otras) es la siguiente: Panal.listaDeAbejas.add(new Abeja(“la abeja”));