Sobes.tech
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ší.