Menu
CoddyTech

class Buku dan Pengguna

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 78 dari 87.

challenge icon

Tantangan

Mudah

Mari lanjutkan membangun Library Management System dengan mengembangkan class Book dan User dari pelajaran sebelumnya. Sekarang kamu akan menambahkan kemampuan bagi pengguna untuk meminjam buku, sehingga tercipta hubungan nyata antara kedua entitas ini.

Kamu akan menyusun kodemu dalam tiga file:

  • Book.java: Tingkatkan class Book-mu dari tantangan sebelumnya. Pertahankan semua fungsionalitas yang sudah ada (isbn, title, author, isAvailable beserta getter/setter, dan getDetails()). Sekarang tambahkan field private borrowedBy bertipe String yang menyimpan ID pengguna yang meminjam buku (atau null jika buku tidak dipinjam). Tambahkan getter untuk borrowedBy dan setter yang juga memperbarui isAvailable sebagaimana mestinya. Saat buku dipinjam (borrowedBy diatur ke nilai non-null), buku menjadi tidak tersedia. Saat buku dikembalikan (diatur ke null), buku tersedia kembali.
  • User.java: Kembangkan class User-mu agar dapat melacak buku yang dipinjam. Pertahankan id, name, constructor, getter, dan toString() yang sudah ada. Tambahkan field private ArrayList<Book> bernama borrowedBooks (inisialisasikan di constructor). Buat method borrowBook(Book book) yang menambahkan buku ke list pengguna dan mengatur borrowedBy pada buku ke ID pengguna ini. Buat method returnBook(Book book) yang menghapus buku dari list dan mengatur borrowedBy ke null. Tambahkan method getBorrowedCount() yang mengembalikan jumlah buku yang sedang dimiliki pengguna.
  • Main.java: Tunjukkan cara kerja sistem peminjaman. Kamu akan menerima lima input: ISBN, title, dan author sebuah buku, lalu ID dan nama pengguna.

    Buat Book dan User menggunakan input ini. Cetak detail dan status ketersediaan buku. Lalu, minta pengguna meminjam buku tersebut. Cetak kembali ketersediaan buku, diikuti informasi tentang siapa yang meminjamnya dengan format Borrowed by: [userId]. Cetak jumlah buku yang dimiliki pengguna dengan format [name] has [count] book(s). Terakhir, minta pengguna mengembalikan buku dan cetak status ketersediaannya sekali lagi.

Kamu akan menerima lima input secara berurutan: ISBN (String), title (String), author (String), ID pengguna (String), dan nama pengguna (String).

Contohnya, dengan input 978-0-13-468599-1, Effective Java, Joshua Bloch, U001, dan Alice, output-mu akan menjadi:

[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
Available: false
Borrowed by: U001
Alice has 1 book(s)
Available: true

Tantangan ini dibangun langsung dari pekerjaanmu sebelumnya, dengan menambahkan hubungan penting antara buku dan pengguna yang membuat sistem perpustakaan berfungsi. Kamu akan menggunakan composition (User "memiliki" Books) dan melihat bagaimana perubahan pada satu object dapat memengaruhi object lain melalui method yang dirancang dengan baik!

Coba sendiri

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca informasi buku
        String isbn = scanner.nextLine();
        String title = scanner.nextLine();
        String author = scanner.nextLine();
        
        // Baca informasi pengguna
        String userId = scanner.nextLine();
        String userName = scanner.nextLine();
        
        // Buat object Book dengan isbn, title, dan author
        Book book = new Book(isbn, title, author);
        
        // Buat object User dengan userId dan userName
        User user = new User(userId, userName);
        
        // Cetak detail buku menggunakan getDetails()
        System.out.println(book.getDetails());
        
        // Cetak apakah buku tersedia (format: "Available: true" atau "Available: false")
        System.out.println("Available: " + book.isAvailable());
        
        // Minta pengguna meminjam buku
        user.borrowBook(book);
        
        // Cetak lagi status ketersediaan buku
        System.out.println("Available: " + book.isAvailable());
        
        // Cetak siapa yang meminjam buku
        System.out.println("Borrowed by: " + book.getBorrowedBy());
        
        // Cetak jumlah buku yang dimiliki pengguna
        System.out.println(user.getName() + " has " + user.getBorrowedCount() + " book(s)");
        
        // Minta pengguna mengembalikan buku
        user.returnBook(book);
        
        // Cetak status ketersediaan sekali lagi
        System.out.println("Available: " + book.isAvailable());
    }
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online