Junior — Middle
Jakie są różnice między relacjami agregacji a kompozycji w programowaniu obiektowym?
sobes.tech AI
Odpowiedź od AI
Agregacja i kompozycja to dwa typy relacji między obiektami w programowaniu obiektowym (OOP), które opisują, jak obiekty są ze sobą powiązane.
-
Agregacja: to relacja "ma" (has-a), w której jeden obiekt zawiera inny, ale cykl życia obiektu zawartego nie zależy od kontenera. Obiekt zawarty może istnieć niezależnie.
-
Kompozycja: silniejsza forma agregacji, w której obiekt zawarty w pełni należy do kontenera i nie istnieje oddzielnie. Jeśli kontener zostanie zniszczony, to samo dotyczy obiektu zawartego.
Przykład:
class Engine {}
// Agregacja: Car ma Engine, ale Engine może istnieć osobno
class Car {
var engine: Engine?
}
// Kompozycja: House składa się z Rooms, które nie istnieją bez domu
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
W kompozycji obiekty są ściśle powiązane i zarządzane razem, podczas gdy w agregacji, relacja jest słabsza.