// Model katalog: data buku bersifat beku, jadi record adalah bentuk yang tepat.
public record Buku(String isbn, String judul, String penulis, int tahunTerbit) {

    // Compact constructor: validasi masukan sebelum field disimpan.
    public Buku {
        if (isbn == null || isbn.isBlank()) {
            throw new IllegalArgumentException("isbn wajib diisi");
        }
        if (judul == null || judul.isBlank()) {
            throw new IllegalArgumentException("judul wajib diisi");
        }
        if (tahunTerbit <= 0) {
            throw new IllegalArgumentException(
                    "tahunTerbit harus positif: " + tahunTerbit);
        }
        isbn = isbn.trim();
        judul = judul.trim();
        penulis = (penulis == null || penulis.isBlank()) ? "Tanpa Nama" : penulis.trim();
    }
}
