Sobes.tech
Junior — Middle

Mi a különbség az aggregáció és a kompozíció kapcsolatai között az objektumorientált programozásban?

sobes.tech MI

Válasz az MI-től

Az aggregáció és a kompozíció két típusú kapcsolat az objektumorientált programozásban (OOP), amelyek leírják, hogyan kapcsolódnak egymáshoz az objektumok.

  • Aggregáció: ez egy "valaminek a része" (has-a) kapcsolat, ahol egy objektum tartalmaz egy másikat, de a beágyazott objektum életciklusa nem függ a tartálytól. A beágyazott objektum önállóan is létezhet.

  • Kompozíció: egy erősebb aggregációs forma, ahol a beágyazott objektum teljes mértékben a tartályhoz tartozik, és nem létezik külön. Ha a tartály megszűnik, akkor a beágyazott objektum is.

Példa:

class Engine {}

// Aggregáció: Car rendelkezik Engine-nel, de az Engine külön is létezhet
class Car {
    var engine: Engine?
}

// Kompozíció: House több Room-ból áll, amelyek nem léteznek a ház nélkül
class Room {}

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

A kompozícióban az objektumok szorosan összekapcsolódnak és együtt kezelik őket, míg az aggregációban a kapcsolat gyengébb.