#11 RELASI AGREGASI

 

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



F. Contoh Program Java

Struktur:

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; // Agregasi

    public 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 → Agregasi
        Siswa 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 dihapus
        System.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.

Posting Komentar

Lebih baru Lebih lama

Formulir Kontak