Sobes.tech
Junior — Middle

Quali sono le differenze tra relazioni di aggregazione e composizione nella programmazione orientata agli oggetti?

sobes.tech AI

Risposta dell'AI

L'aggregazione e la composizione sono due tipi di relazioni tra oggetti nella programmazione orientata agli oggetti (OOP), che descrivono come gli oggetti sono collegati tra loro.

  • Aggregazione: è una relazione di "ha" (has-a), in cui un oggetto contiene un altro, ma il ciclo di vita dell'oggetto contenuto non dipende dal contenitore. L'oggetto contenuto può esistere indipendentemente.

  • Composizione: una forma più forte di aggregazione, in cui l'oggetto contenuto appartiene completamente al contenitore e non esiste separatamente. Se il contenitore viene distrutto, anche l'oggetto contenuto lo sarà.

Esempio:

class Engine {}

// Aggregazione: Car ha Engine, ma Engine può esistere separatamente
class Car {
    var engine: Engine?
}

// Composizione: House è composta da Rooms, le stanze non esistono senza la casa
class Room {}

class House {
    var rooms: [Room] = []
    init() {
        rooms = [Room(), Room()]
    }
}

Nella composizione, gli oggetti sono strettamente collegati e gestiti insieme, mentre nell'aggregazione, il legame è più debole.