import java.util.ArrayList;
import java.util.List;

class Pemain {
    private final String nama;

    public Pemain(String nama) {
        this.nama = nama;
    }

    public String nama() {
        return nama;
    }
}

class Tim {
    private final String nama;
    private final List<Pemain> pemain; // agregasi: bagian-utuh yang longgar

    public Tim(String nama, List<Pemain> pemain) {
        this.nama = nama;
        this.pemain = pemain;
    }

    public void daftarPemain() {
        System.out.print("Tim " + nama + ": ");
        for (int i = 0; i < pemain.size(); i++) {
            System.out.print(pemain.get(i).nama());
            if (i < pemain.size() - 1) {
                System.out.print(", ");
            }
        }
        System.out.println();
    }
}

public class AgregasiTim {
    public static void main(String[] args) {
        // Pemain dibuat DI LUAR tim: siklus hidup pemain tidak bergantung tim.
        List<Pemain> pemain = new ArrayList<>();
        pemain.add(new Pemain("Budi"));
        pemain.add(new Pemain("Siti"));

        Tim garuda = new Tim("Garuda", pemain);
        garuda.daftarPemain();

        // Tim dibubarkan (referensi tim dihapus), pemain tetap hidup.
        garuda = null;
        System.out.println("Setelah tim dibubarkan, pemain tetap tersedia:");
        for (Pemain p : pemain) {
            System.out.println("  " + p.nama() + " siap bergabung ke tim lain");
        }
    }
}
