Sobes.tech
Junior

Kompozisiya və agregasiya arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Kompazisiya və agregasiya obyektlər arasında "hissə-bütöv" münasibətləridir.

  • Kompazisiya: Qətiyyətli münasibət, burada hissə bütəndən ayrı ola bilməz. Bütünü silmək həm də hissələri silir. Asılı hissənin həyat dövrü bütöv tərəfindən tam müəyyən edilir. Məsələn: Otaqlar (hissələr) Evin (bütöv) içində. Ev olmasa, otaqlar mövcud deyil.

    // Kompazisiya nümunəsi:
    class Room {
        private String name;
    
        public Room(String name) {
            this.name = name;
        }
    
        // ... Room metodları
    }
    
    class House {
        private List<Room> rooms = new ArrayList<>(); // Hissələr bütöv tərəfindən yaradılır və idarə olunur
    
        public House() {
            rooms.add(new Room("Living Room")); // Hissəni bütöv daxilində yaratmaq
            rooms.add(new Room("Bedroom"));
        }
    
        // ... House metodları
    }
    
  • Agregasiya: Daha zəif münasibət, burada hissə müstəqil mövcud ola bilər. Bütünü silmək, mütləq şəkildə hissələri silmir. Hissələr müxtəlif obyektlərlə əlaqəli ola bilər. Məsələn: Avtomobil (bütöv) və Təkərlər (hissələr). Təkərlər avtomobildən müstəqil mövcud ola bilər və başqa avtomobildə istifadə oluna bilər.

    // Agregasiya nümunəsi:
    class Wheel {
        private int size;
    
        public Wheel(int size) {
            this.size = size;
        }
    
        // ... Wheel metodları
    }
    
    class Car {
        private List<Wheel> wheels = new ArrayList<>(); // Bütöv, hissələrə istinadlar ehtiva edir
    
        public Car(List<Wheel> wheels) {
            this.wheels = wheels; // Xaricdən hissələr alınır
        }
    
        // ... Car metodları
    }
    
    // Yaratma və istifadə nümunəsi:
    List<Wheel> myWheels = new ArrayList<>();
    myWheels.add(new Wheel(16));
    myWheels.add(new Wheel(16));
    // ...
    Car myCar = new Car(myWheels); // Agregasiya: Təkərlər avtomobildən əvvəl və sonra mövcud ola bilər
    

Əsas fərqlər cədvəldə:

Kriteriy Kompazisiya Agregasiya
Asılılıq Qəti: Hissə bütündən asılıdır Zəif: Hissə müstəqil ola bilər
Həyat dövrü Hissə bütöv tərəfindən idarə olunur Hissə mütləq bütöv tərəfindən idarə olunmaya bilər
Bütöv silindikdə Hissələrin silinməsinə səbəb olur Zorunlu deyil, hissələri silmir
Çoxsaylı əlaqələr Hissə yalnız bir bütövlə əlaqəlidir Hissə bir neçə bütə bağlı ola bilər
UML diagramı Dolu romb bütöv tərəfdə Boş romb bütöv tərəfdə