Menu
CoddyTech

Sistem Peminjaman

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

challenge icon

Tantangan

Mudah

Mari lanjutkan membangun Sistem Manajemen Perpustakaan dengan membuat sistem peminjaman yang tepat menggunakan class Library untuk mengelola koleksi buku dan pengguna. Di sinilah sistemmu mulai terasa seperti perpustakaan sungguhan: melacak siapa yang meminjam apa dan menerapkan aturan peminjaman!

Kamu akan mengatur kodemu ke dalam empat file:

  • Book.java: Pertahankan class Book-mu dari tantangan sebelumnya beserta semua fungsinya: isbn, title, author, isAvailable, borrowedBy, getDetails(), serta getter dan setter yang sesuai.
  • User.java: Pertahankan class User-mu dengan id, name, borrowedBooks ArrayList, borrowBook(), returnBook(), getBorrowedCount(), dan toString().
  • Library.java: Buat class Library utama yang mengelola semuanya. Library-mu harus memiliki dua ArrayList: satu untuk object Book dan satu untuk object User. Sertakan method berikut:

    addBook(Book book) - menambahkan buku ke koleksi library.

    registerUser(User user) - menambahkan pengguna ke daftar pengguna terdaftar di library.

    findBookByIsbn(String isbn) - menelusuri daftar buku dan mengembalikan Book dengan ISBN yang cocok, atau null jika tidak ditemukan.

    findUserById(String id) - menelusuri daftar pengguna dan mengembalikan User dengan ID yang cocok, atau null jika tidak ditemukan.

    borrowBook(String userId, String isbn) - mencari pengguna dan buku, lalu jika keduanya ada dan buku tersedia, membuat pengguna meminjam buku tersebut dan mencetak [userName] borrowed [bookTitle]. Jika buku tidak tersedia, cetak Book not available. Jika pengguna atau buku tidak ditemukan, cetak Invalid user or book.

    returnBook(String userId, String isbn) - mencari pengguna dan buku, lalu meminta pengguna mengembalikan buku tersebut dan mencetak [userName] returned [bookTitle]. Jika pengguna atau buku tidak ditemukan, cetak Invalid user or book.

  • Main.java: Satukan sistem library-mu! Kamu akan menerima input untuk dua buku, masing-masing berisi ISBN, judul, dan penulis, satu pengguna yang berisi ID dan nama, lalu serangkaian operasi.

    Buat Library, tambahkan kedua buku, lalu daftarkan pengguna. Setelah itu, proses operasinya: kamu akan menerima string yang dipisahkan koma, dengan setiap operasi menggunakan format borrow:userId:isbn atau return:userId:isbn.

    Setelah memproses semua operasi, cetak ringkasan yang menampilkan status setiap buku dengan format [isbn]: [Available/Borrowed].

Kamu akan menerima input dengan urutan berikut: ISBN book1, judul book1, penulis book1, ISBN book2, judul book2, penulis book2, ID pengguna, nama pengguna, dan terakhir string operasi.

Misalnya, dengan input ISBN-001, Clean Code, Robert Martin, ISBN-002, Design Patterns, Gang of Four, U001, Alice, dan borrow:U001:ISBN-001,borrow:U001:ISBN-002,return:U001:ISBN-001, output-mu akan menjadi:

Alice borrowed Clean Code
Alice borrowed Design Patterns
Alice returned Clean Code
ISBN-001: Available
ISBN-002: Borrowed

Tantangan ini menggabungkan komposisi, enkapsulasi, dan perancangan method untuk membuat sistem yang terpadu. Class Library bertindak sebagai koordinator, mendelegasikan logika peminjaman kepada class User dan Book, sekaligus mengelola seluruh koleksi!

Coba sendiri

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca informasi buku 1
        String isbn1 = scanner.nextLine();
        String title1 = scanner.nextLine();
        String author1 = scanner.nextLine();
        
        // Baca informasi buku 2
        String isbn2 = scanner.nextLine();
        String title2 = scanner.nextLine();
        String author2 = scanner.nextLine();
        
        // Baca informasi pengguna
        String userId = scanner.nextLine();
        String userName = scanner.nextLine();
        
        // Baca string operasi (dipisahkan koma, format: borrow:userId:isbn atau return:userId:isbn)
        String operationsStr = scanner.nextLine();
        
        // TODO: Buat object Book untuk book1 dan book2
        
        // TODO: Buat object User
        
        // TODO: Buat Library, tambahkan kedua buku, dan daftarkan pengguna
        
        // TODO: Pisahkan operationsStr berdasarkan "," dan proses setiap operasi
        //       Untuk setiap operasi, pisahkan berdasarkan ":" untuk mendapatkan action, userId, isbn
        //       Panggil library.borrowBook() atau library.returnBook() sesuai operasinya
        
        // TODO: Cetak ringkasan setiap buku dalam format "[isbn]: [Available/Borrowed]"
    }
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online