Sobes.tech
Junior

Bileşim ile bütünleşme arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bileşim ve agregasyon, nesneler arasında "parça-bütün" ilişkileridir.

  • Bileşim: Parçanın bütün olmadan var olamayacağı katı ilişki. Bütünün silinmesi, parçaların da silinmesine neden olur. Bağımlı parçanın yaşam döngüsü tamamen bütün tarafından belirlenir. Örnek: Bir Evdeki Odalar (parçalar). Ev olmadan odalar var olamaz.

    // Bileşim örneği:
    class Room {
        private String name;
    
        public Room(String name) {
            this.name = name;
        }
    
        // ... Room metodları
    }
    
    class House {
        private List<Room> rooms = new ArrayList<>(); // Parçalar, bütün tarafından oluşturulur ve yönetilir
    
        public House() {
            rooms.add(new Room("Living Room")); // Bütün içinde parça oluşturma
            rooms.add(new Room("Bedroom"));
        }
    
        // ... House metodları
    }
    
  • Agregasyon: Daha zayıf ilişki, parçanın bağımsız olarak var olabileceği. Bütünün silinmesi, parçaların silinmesine zorunlu değil. Parçalar, farklı nesnelerle ilişkili olabilir. Örnek: Araba (bütün) ve Tekerlekler (parçalar). Tekerlekler, arabadan bağımsız olarak var olabilir ve başka araçlarda kullanılabilir.

    // Agregasyon örneği:
    class Wheel {
        private int size;
    
        public Wheel(int size) {
            this.size = size;
        }
    
        // ... Wheel metodları
    }
    
    class Car {
        private List<Wheel> wheels = new ArrayList<>(); // Bütün, parçalara referanslar içerir
    
        public Car(List<Wheel> wheels) {
            this.wheels = wheels; // Dışarıdan parçalar alınır
        }
    
        // ... Car metodları
    }
    
    // Oluşturma ve kullanma örneği:
    List<Wheel> myWheels = new ArrayList<>();
    myWheels.add(new Wheel(16));
    myWheels.add(new Wheel(16));
    // ...
    Car myCar = new Car(myWheels); // Agregasyon: Tekerlekler, araçtan önce ve sonra var olabilir
    

Tablodaki temel farklar:

Kriter Bileşim Agregasyon
Bağımlılık Katı: Parça, bütün olmadan var olamaz Zayıf: Parça, bağımsız olarak var olabilir
Yaşam döngüsü Parça, bütün tarafından yönetilir Parça, mutlaka bütün tarafından yönetilmek zorunda değildir
Bütün silindiğinde Parçaların silinmesine yol açar Parçaların silinmesine zorunlu değildir
Çoklu ilişkiler Parça sadece bir bütünle ilişkilidir Parça, birden fazla bütünle ilişkilendirilebilir
UML diyagramı Dolu rombüs, bütün tarafında Boş rombüs, bütün tarafında