Junior — Middle
Jaký je rozdíl mezi vztahy agregace a kompozice v objektově orientovaném programování?
sobes.tech AI
Odpověď od AI
Agregace a kompozice jsou dva typy vztahů mezi objekty v objektově orientovaném programování (OOP), které popisují, jak jsou objekty propojeny.
-
Agregace: je vztah "má" (has-a), kdy jeden objekt obsahuje jiný, ale životní cyklus vloženého objektu nezávisí na kontejneru. Vložený objekt může existovat samostatně.
-
Kompozice: silnější forma agregace, kde vložený objekt plně patří do kontejneru a neexistuje samostatně. Pokud je kontejner zničen, zanikne i vložený objekt.
Příklad:
class Engine {}
// Agregace: Car má Engine, ale Engine může existovat samostatně
class Car {
var engine: Engine?
}
// Kompozice: House se skládá z Rooms, které bez domu neexistují
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
V kompozici jsou objekty těsně propojené a spravovány společně, zatímco v agregaci je vztah slabší.