Sobes.tech
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цији веза слабија.