Sobes.tech
Junior — Middle

Obyekt yönümlü proqramlaşdırmada agregasiya və kompozisiya arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Obyektlər arasında əlaqənin iki növü var: agregasiya və kompozisiya, bunlar obyektlərin bir-biri ilə necə əlaqəli olduğunu təsvir edir.

  • Agregasiya: "sahib olmaq" (has-a) əlaqəsidir, burada bir obyekt başqa birini ehtiva edir, lakin daxil olan obyektin həyat dövrü konteynerdən asılı deyil. Daxil olan obyekt müstəqil olaraq mövcud ola bilər.

  • Kompozisiya: agregasiyanın daha güclü formasıdır, burada daxil olan obyekt tamamilə konteynerə aiddir və ayrıca mövcud deyil. Əgər konteyner məhv olunsa, daxil olan obyekt də yox olur.

Nümunə:

class Engine {}

// Agregasiya: Car Engine-ə malikdir, lakin Engine ayrıca mövcud ola bilər
class Car {
    var engine: Engine?
}

// Kompozisiya: House Rooms-dan ibarətdir, otaqlar ev olmadan mövcud deyil
class Room {}

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

Kompozisiyada obyektlər sıx bağlıdır və birlikdə idarə olunur, agregasiyada isə əlaqə zəifdir.