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.