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()]
}
}
კომპოზიციაში ობიექტები მჭიდროდ არიან დაკავშირებული და ერთობლივად მართავენ, ხოლო აგრეგაციაში კავშირი სუსტიია.