Junior — Middle
Kuo skiriasi agregacijos ir kompozicijos ryšiai objektinio programavimo kontekste?
sobes.tech AI
Atsakymas iš AI
Objektų tarpusavio ryšiai yra dviejų tipų: agregacija ir kompozicija, kurie apibūdina, kaip objektai yra susiję.
-
Agregacija: tai "turi" (has-a) ryšys, kai vienas objektas apima kitą, tačiau įdėto objekto gyvavimo ciklas nepriklauso nuo konteinerio. Įdėtas objektas gali egzistuoti savarankiškai.
-
Kompozicija: stipresnė agregacijos forma, kai įdėtas objektas visiškai priklauso konteineriui ir neegzistuoja atskirai. Jei konteineris sunaikinamas, sunaikinamas ir įdėtas objektas.
Pavyzdys:
class Engine {}
// Agregacija: Car turi Engine, bet Engine gali egzistuoti atskirai
class Car {
var engine: Engine?
}
// Kompozicija: House sudarytas iš Rooms, kurie neegzistuoja be namo
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
Kompozicijoje objektai glaudžiai susiję ir valdoma kartu, o agregacijoje ryšys yra silpnesnis.