Sobes.tech
Junior — Middle

Тафовутҳои байни муносибатҳои агрегатсия ва компози дар барномасозии объектӣ чӣ гуна аст?

sobes.tech AI

Ҷавоб аз AI

Агрегация ва композиция — ин ду намуди муносибатҳо байни объектҳо дар барномасозии объектӣ мебошанд, ки нишон медиҳанд, чӣ гуна объектҳо ба ҳам пайваст мешаванд.

  • Агрегация: ин муносибати "дор" (has-a) мебошад, ки дар он як объект дигарро дар бар мегирад, аммо давраи зиндагии объекти дохилӣ аз контейнер вобаста нест. Объекти дохилӣ метавонад мустақилона вуҷуд дошта бошад.

  • Композиция: шакли қавитарини агрегатсия, ки дар он объекти дохилӣ ба пуррагӣ ба контейнер тааллуқ дорад ва мустақилона вуҷуд надорад. Агар контейнер нобуд шавад, объекти дохилӣ низ нобуд мешавад.

Масалан:

class Engine {}

// Агрегация: Car дорои Engine аст, аммо Engine метавонад мустақилона вуҷуд дошта бошад
class Car {
    var engine: Engine?
}

// Композиция: House аз Rooms иборат аст, ки бидуни хона вуҷуд надоранд
class Room {}

class House {
    var rooms: [Room] = []
    init() {
        rooms = [Room(), Room()]
    }
}

Дар композиция, объектҳо ба ҳам сахт пайваст шудаанд ва бо ҳам идора мешаванд, дар ҳоле ки дар агрегатсия, муносибат заифтар аст.