Junior — Middle
Mis vahe on agregatsiooni ja kompositsiooni suhetel objektorienteeritud programmeerimises?
sobes.tech AI
Vastus AI-lt
Objektide vahelised suhted on kaks tüüpi: agregatsioon ja kompositsioon, mis kirjeldavad, kuidas objektid on omavahel seotud.
-
Agregatsioon: see on "omab" (has-a) suhe, kus üks objekt sisaldab teist, kuid sisemise objekti elutsükkel ei sõltu konteinerist. Sisemine objekt võib eksisteerida iseseisvalt.
-
Kompositsioon: tugevam agregatsiooni vorm, kus sisemine objekt kuulub täielikult konteinerile ja ei eksisteeri eraldi. Kui konteiner hävib, siis hävib ka sisemine objekt.
Näide:
class Engine {}
// Agregatsioon: Car omab Engine, kuid Engine võib eksisteerida eraldi
class Car {
var engine: Engine?
}
// Kompositsioon: House koosneb Rooms, mis ei eksisteeri ilma majata
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
Kompositsioonis on objektid tihedalt seotud ja neid hallatakse koos, samas kui agregatsioonis on side nõrgem.