Junior — Middle
Koje su razlike između odnosa agregacije i kompozicije u objektno-orijentisanom programiranju?
sobes.tech АИ
Одговор од АИ
Агрегација и композиција су два типа односа између објеката у објектно-оријентисаном програмирању (ООП), који описују како су објекти повезани.
-
Агрегација: то је однос "има" (has-a), у којем један објекат садржи други, али животни циклус унутрашњег објекта не зависи од контејнера. Унутрашњи објекат може постојати самостално.
-
Композиција: јача форма агрегaције, где унутрашњи објекат у потпуности припада контејнеру и не постоји одвојено. Ако се контејнер уништи, уништава се и унутрашњи објекат.
Пример:
class Engine {}
// Агрегација: Car има Engine, али Engine може постојати одвојено
class Car {
var engine: Engine?
}
// Композиција: House се састоји од Rooms, које не постоје без куће
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
У композицији, објекти су тесно повезани и управљају се заједно, док је у агрегaцији веза слабија.