Junior — Middle
Aký je rozdiel medzi vzťahmi agregácie a kompozície v objektovo orientovanom programovaní?
sobes.tech AI
Odpoveď od AI
Agregácia a kompozícia sú dva typy vzťahov medzi objektmi v objektovo orientovanom programovaní (OOP), ktoré popisujú, ako sú objekty prepojené.
-
Agregácia: je vzťah "má" (has-a), pri ktorom jeden objekt obsahuje iný, ale životný cyklus vloženého objektu nezávisí od kontajnera. Vložený objekt môže existovať samostatne.
-
Kompozícia: silnejšia forma agregácie, kde vložený objekt plne patrí do kontajnera a neexistuje samostatne. Ak je kontajner zničený, zanikne aj vložený objekt.
Príklad:
class Engine {}
// Agregácia: Car má Engine, ale Engine môže existovať samostatne
class Car {
var engine: Engine?
}
// Kompozícia: House sa skladá z Rooms, ktoré neexistujú bez domu
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
V kompozícii sú objekty úzko prepojené a spravované spolu, zatiaľ čo v agregácii je vzťah slabší.