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.