Menu
CoddyTech

Sistem Peminjaman

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 84 dari 91.

challenge icon

Tantangan

Mudah

Mari wujudkan Sistem Manajemen Perpustakaan dengan membuat class Library yang mengatur semua operasi peminjaman. Koordinator utama ini akan mengelola koleksi buku dan menegakkan aturan yang menjaga agar perpustakaan berjalan lancar.

Kamu akan mengatur kodemu dalam empat file:

  • Book.php: Class Book dari pelajaran sebelumnya dengan property readonly (isbn, title, author), property $isAvailable privat yang dimulai dengan nilai true, dan method: isAvailable(), markAsBorrowed(), dan markAsReturned().
  • User.php: Sertakan file Book. Class User dengan property readonly (id, name), array $borrowedBooks privat, konstanta MAX_BOOKS bernilai 3, dan method: getBorrowedBooks(), canBorrow(), addBook(Book $book), dan removeBook(string $isbn).
  • Library.php: Sertakan file User. Buat class Library yang mengelola koleksi buku. Library-mu harus memiliki:
    • Array $books privat untuk menyimpan buku dengan ISBN sebagai indeks
    • addBook(Book $book): void: menambahkan buku ke koleksi
    • findBook(string $isbn): ?Book: mengembalikan buku atau null jika tidak ditemukan
    • borrowBook(User $user, string $isbn): string: memvalidasi dan memproses peminjaman, lalu mengembalikan pesan yang sesuai
    • returnBook(User $user, string $isbn): string: memproses pengembalian dan memperbarui status buku serta pengguna

    Method borrowBook harus memeriksa tiga kondisi secara berurutan dan mengembalikan pesan berikut secara persis:

    • "Book not found": jika buku tidak ada
    • "Book is not available": jika buku sudah dipinjam
    • "Borrowing limit reached": jika pengguna memiliki 3 buku
    • "Successfully borrowed: [title]": jika berhasil

    Method returnBook harus mengembalikan "Book not found" jika buku tidak ada, atau "Successfully returned: [title]" jika berhasil.

  • main.php: Sertakan file Library. Kamu akan menerima dua input: ISBN dan judul buku.

    Buat Library, User dengan ID 1 dan nama "Alice", serta Book dengan ISBN, judul, dan author "Unknown" yang diberikan. Tambahkan buku ke library, lalu lakukan operasi berikut dan cetak setiap hasil pada baris baru:

    1. Pinjam buku
    2. Coba pinjam buku yang sama lagi
    3. Kembalikan buku
    4. Pinjam buku sekali lagi

Tantangan ini menunjukkan cara class Library memusatkan logika bisnis. Class ini memvalidasi kondisi, mengoordinasikan perubahan status pada object Book dan User, serta memberikan umpan balik yang jelas untuk setiap operasi.

Coba sendiri

<?php
require_once 'Library.php';

// Baca input
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));

// TODO: Buat instance Library

// TODO: Buat User dengan ID 1 dan nama "Alice"

// TODO: Buat Book dengan ISBN dan judul yang diberikan, serta penulis "Unknown"

// TODO: Tambahkan buku ke library

// TODO: Lakukan operasi berikut dan cetak setiap hasil pada baris baru:
// 1. Pinjam buku
// 2. Coba pinjam buku yang sama lagi
// 3. Kembalikan buku
// 4. Pinjam buku sekali lagi

?>

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online