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.