Sobes.tech
Junior — Middle

Care este diferența dintre relațiile de agregare și compoziție în programarea orientată pe obiecte?

sobes.tech AI

Răspuns de la AI

Agregarea și compoziția sunt două tipuri de relații între obiecte în programarea orientată pe obiecte (OOP), care descriu modul în care obiectele sunt legate între ele.

  • Agregare: este o relație de "are" (has-a), în care un obiect conține altul, dar ciclul de viață al obiectului conținut nu depinde de container. Obiectul conținut poate exista independent.

  • Compoziție: o formă mai puternică de agregare, în care obiectul conținut aparține complet containerului și nu există separat. Dacă containerul este distrus, și obiectul conținut dispare.

Exemplu:

class Engine {}

// Agregare: Car are Engine, dar Engine poate exista separat
class Car {
    var engine: Engine?
}

// Compoziție: House este format din Rooms, care nu există fără casă
class Room {}

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

În compoziție, obiectele sunt strâns legate și gestionate împreună, în timp ce în agregare, legătura este mai slabă.