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