Saya mengerti komposisi apa yang ada dalam OOP, tetapi saya tidak bisa mendapatkan gambaran yang jelas tentang apa itu Agregasi. Bisakah seseorang menjelaskan?
Saya mengerti komposisi apa yang ada dalam OOP, tetapi saya tidak bisa mendapatkan gambaran yang jelas tentang apa itu Agregasi. Bisakah seseorang menjelaskan?
Jawaban:
Aturan sederhana:
Contoh 1:
Perusahaan adalah kumpulan Orang. Perusahaan adalah komposisi Akun. Ketika Perusahaan berhenti melakukan bisnis, Akunnya tidak ada lagi, tetapi Karyawannya tetap ada.
Contoh 2: (sangat sederhana)
Editor Teks memiliki Buffer (komposisi). Editor Teks menggunakan File (agregasi). Ketika Editor Teks ditutup, Buffer dihancurkan tetapi File itu sendiri tidak dihancurkan.
Dari http://en.wikipedia.org/wiki/Object_composition
Agregasi berbeda dari komposisi biasa karena tidak menyiratkan kepemilikan. Dalam komposisi, ketika benda yang dimiliki dihancurkan, demikian pula benda yang terkandung. Secara agregasi, ini belum tentu benar. Misalnya, universitas memiliki berbagai departemen (misalnya, kimia), dan setiap departemen memiliki sejumlah profesor. Jika universitas ditutup, departemen tidak akan ada lagi, tetapi profesor di departemen tersebut akan terus ada. Oleh karena itu, sebuah Universitas dapat dilihat sebagai komposisi departemen, sedangkan departemen memiliki agregasi profesor. Selain itu, seorang Profesor dapat bekerja di lebih dari satu departemen, tetapi suatu departemen tidak dapat menjadi bagian dari lebih dari satu universitas.
Jadi - selagi Anda memiliki hubungan kepemilikan dengan komposisi, objek yang dimiliki juga dihancurkan ketika pemiliknya adalah - agregasi (dan objek yang terkandung) dapat eksis secara independen.
-
Pembaruan: Permintaan Maaf - jawaban ini terlalu sederhana di belakang.
c.batt memberikan definisi yang sangat baik dalam jawabannya: Agregasi vs Komposisi
Tidak ada penjelasan tunggal. Para penulis yang berbeda memiliki arti yang berbeda dengan agregasi. Sebagian besar tidak benar-benar berarti sesuatu yang spesifik.
Komposisi adalah sebuah Asosiasi
Agregasi adalah sebuah Asosiasi
Komposisi adalah Asosiasi yang kuat (Jika kehidupan objek yang terkandung sepenuhnya tergantung pada objek kontainer, itu disebut asosiasi yang kuat)
Agregasi adalah Asosiasi yang lemah (Jika kehidupan objek yang terkandung tidak tergantung pada objek wadah, itu disebut asosiasi yang lemah)
Contoh:
class Contained {
public void disp() {
System.out.println("disp() of Contained A");
}
}
public class Container {
private Contained c;
//Composition
Container() {
c = new Contained();
}
//Association
public Contained getC() {
return c;
}
public void setC(Contained c) {
this.c = c;
}
public static void main(String[] args) {
Container container = new Container();
Contained contained = new Contained();
container.setC(contained);
}
}
Komposisi (campuran) adalah cara untuk menggabungkan objek sederhana atau tipe data menjadi yang lebih kompleks. Komposisi adalah blok bangunan penting dari banyak struktur data dasar
Pengumpulan (pengumpulan) berbeda dari komposisi biasa karena tidak menyiratkan kepemilikan. Dalam komposisi, ketika benda yang dimiliki dihancurkan, demikian pula benda yang terkandung. Secara agregasi, ini belum tentu benar
╔═══════════╦═════════════════════════╦═══════════════════════╗
║ ║ Aggregation ║ Composition ║
╠═══════════╬═════════════════════════╬═══════════════════════╣
║ Life time ║ Have their own lifetime ║ Owner's life time ║
║ Relation ║ Has ║ part-of ║
║ Example ║ Car has driver ║ Engine is part of Car ║
╚═══════════╩═════════════════════════╩═══════════════════════╝
Keduanya menunjukkan hubungan antara objek dan hanya berbeda dalam kekuatannya.
Notasi UML untuk berbagai jenis ketergantungan antara dua kelas
Komposisi : Karena Mesin adalah bagian dari Mobil, hubungan di antara mereka adalah Komposisi. Inilah cara mereka diimplementasikan di antara kelas-kelas Java.
public class Car {
//final will make sure engine is initialized
private final Engine engine;
public Car(){
engine = new Engine();
}
}
class Engine {
private String type;
}
Agregasi : Karena Organisasi memiliki Orang sebagai karyawan, hubungan di antara mereka adalah Agregasi. Berikut adalah bagaimana mereka terlihat dalam hal kelas Java
public class Organization {
private List employees;
}
public class Person {
private String name;
}
agregasi adalah koleksi sederhana, seperti sekantong kelereng
komposisi menyiratkan dependensi internal / fungsional, seperti engsel pada kotak
mobil penumpang agregat; mereka masuk dan keluar tanpa merusak fungsi mobil
ban adalah komponen; lepaskan satu dan mobil tidak lagi berfungsi dengan benar
[catatan: ban serepnya agregat!]
Saya selalu melihat komposisi sebagai 'kebutuhan a', yaitu mobil membutuhkan mesin, dan saya melihat agregasi sebagai 'hal-hal yang terkait dengan suatu tujuan'. Jadi tetap dengan analogi mobil, agregasi saya mungkin mewakili perjalanan yang mungkin melibatkan menyatukan mobil dan penumpang. Perjalanan tidak memiliki mobil atau penumpang, saya mengumpulkan data yang terkait dengan skenario tertentu. Ketika perjalanan selesai, mobil dan penumpang melanjutkan. Ketika sebuah mobil berakhir, mobil dan mesinnya biasanya dihancurkan bersama.
Semantik, semua set terbuat dari himpunan bagian, kan? Karena itu:
Agregasinya adalah ketika himpunan bagian itu ada secara independen dari set ayah. Sebagai monitor dapat dicabut dari komputer untuk dihubungkan ke yang lain.
Komposisi adalah ketika himpunan bagian itu tergantung dari keberadaan set ayah. Seperti daun adalah bagian dari pohon atau hati adalah bagian dari tubuh.
Konsep-konsep ini berbicara tentang jenis ketergantungan antara dua objek atau kelas, secara konseptual. Langsung dalam suatu program, dalam suatu agregasi, ketika objek ayah membuang, objek agregat juga harus dibuang. Dalam skenario yang sama untuk komposisi, objek anak komposit akan bertahan kemudian objek ayah mengeluarkan.
Bagaimana dengan contoh sederhana ini:
Array objek adalah komposisi. Array pointer ke objek adalah agregasi.
Jika saya menghapus yang pertama, isinya lenyap bersamanya. Yang kedua, di sisi lain dapat menghilang tanpa mempengaruhi keberadaan anggotanya kecuali ada metode khusus yang menghapus setiap objek saat penunjuknya dihapus.