Sobes.tech
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.