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

// Class "serba bisa": menyimpan data, mencetak laporan,
// dan mengirim notifikasi sekaligus dalam satu tempat.
class PerpustakaanSerbaBisa {
    private final List<String> judulBuku = new ArrayList<>();

    public void tambahBuku(String judul) {
        judulBuku.add(judul);
    }

    // Getter menyerahkan referensi internal apa adanya.
    public List<String> daftarBuku() {
        return judulBuku;
    }

    public void pinjam(String judul, String peminjam) {
        System.out.println("[notifikasi] Halo " + peminjam
                + ", buku \"" + judul + "\" siap diambil.");
    }

    public void laporanBulanan() {
        System.out.println("== Laporan Perpustakaan ==");
        System.out.println("Jumlah buku: " + judulBuku.size());
        for (String judul : judulBuku) {
            System.out.println("  - " + judul);
        }
    }
}

public class SebelumRefactor {
    public static void main(String[] args) {
        PerpustakaanSerbaBisa app = new PerpustakaanSerbaBisa();
        app.tambahBuku("Java Dasar");
        app.tambahBuku("Java Lanjutan");
        app.pinjam("Java Dasar", "Budi");

        // Pemanggil memegang list internal dan bisa mengubahnya dari luar.
        app.daftarBuku().clear();

        app.laporanBulanan();
    }
}
