A. Apa itu Agregasi?
Agregasi adalah jenis hubungan antar kelas di dalam OOP yang menunjukkan hubungan “HAS-A tetapi tidak saling bergantung”.
HAS-A artinya "Memiliki"
Artinya:
Sebuah objek dapat berhubungan dengan objek lain, tetapi jika salah satu dihapus, objek lain masih dapat hidup.
Contoh mudah dalam kehidupan nyata:
| Relasi | Makna |
|---|---|
| Sekolah memiliki banyak siswa | tetapi jika sekolah tutup, siswa tetap ada |
| Perpustakaan memiliki buku | tetapi buku tetap ada meski perpustakaan hilang |
B. Ciri-Ciri Relasi Agregasi
| Ciri | Penjelasan |
|---|---|
| Tidak saling bergantung | Objek tetap ada tanpa pemiliknya |
| Di UML ditandai dengan diamond putih (◇) | Contoh: Kelas ◇──> Siswa |
| Umumnya menggunakan hubungan One-to-Many (1..*) | Satu objek memiliki banyak objek lain |
| Bersifat lebih longgar dibanding komposisi | Komposisi → wajib hidup bersama, Agregasi → boleh terpisah |
C. Perbedaan dengan Relasi Lain
| Relasi | Koneksi | Ketergantungan | Contoh |
|---|---|---|---|
| Asosiasi | Umum | Tidak wajib | Siswa → Guru |
| Agregasi | HAS-A longgar | Tidak wajib | Perpustakaan → Buku |
| Komposisi | HAS-A kuat | Wajib | Rumah → Kamar |
D. Studi Kasus Agregasi
Kelas memiliki banyak Siswa.Jika objek kelas dihapus, objek siswa
E. Contoh UML Agregasi
src/├── Main.java└── model/├── Siswa.java└── Kelas.java
Class Siswa.java
package model;public class Siswa {private String nama;public Siswa(String nama) {this.nama = nama;}public String getNama() {return nama;}}
Class Kelas.java
package model;import java.util.ArrayList;public class Kelas {private String namaKelas;private ArrayList<Siswa> daftarSiswa; // Agregasipublic Kelas(String namaKelas) {this.namaKelas = namaKelas;daftarSiswa = new ArrayList<>();}public void tambahSiswa(Siswa s) {daftarSiswa.add(s);}public void tampilkanSiswa() {System.out.println("Daftar siswa kelas " + namaKelas + ":");for (Siswa s : daftarSiswa) {System.out.println("- " + s.getNama());}}}
Class Main.java
import model.Kelas;import model.Siswa;public class Main {public static void main(String[] args) {// Objek siswa tetap dapat hidup tanpa kelas → AgregasiSiswa s1 = new Siswa("Bima");Siswa s2 = new Siswa("Salsa");Kelas kelasPPLG = new Kelas("XI RPL 1");kelasPPLG.tambahSiswa(s1);kelasPPLG.tambahSiswa(s2);kelasPPLG.tampilkanSiswa();System.out.println("\n>>> Kelas dihapus (disimulasikan)");// siswa s1 dan s2 tetap ada meskipun kelas dihapusSystem.out.println("Siswa tetap ada: " + s1.getNama() + ", " + s2.getNama());}}
Output Program
Daftar siswa kelas XI RPL 1:- Bima- Salsa>>> Kelas dihapus (disimulasikan)Siswa tetap ada: Bima, Salsa
G. Kesimpulan
ASOSIASI → Cuma “kenalan/terkait”, tidak ada kepemilikan
Hubungannya hanya kerja sama, berinteraksi, saling terhubung, TAPI tidak saling memiliki.
Contoh:
- Guru ↔ Siswa
- Dokter ↔ Pasien
- Penjual ↔ Pembeli
Tidak ada yang menjadi “bagian dari” yang lain.
Makanya, kalau salah satu hilang, yang lain tetap ada… karena mereka memang bukan bagian tubuhnya.
➡ Ibarat: Teman.
Kalau kamu pindah sekolah, teman kamu tetap hidup. Tapi kalian memang tidak punya hubungan kepemilikan.AGREGASI → Hubungan “bagian dari”, tapi lemah
Ini sudah hubungan bagian dari, tapi tidak sekeras komposisi.
Contoh:
- Perpustakaan ◊— Buku
- Keranjang ◊— Produk
- Kelas ◊— Siswa
Di sini, bagian dianggap bagian dari induknya, tapi tidak sepenuhnya bergantung.
➡ Ibarat: Tim sepak bola dan pemainnya.
Kalau klub bubar, pemain tetap ada… tapi selama klub masih ada, pemain itu adalah bagian dari tim.
Tags
PBTGM