Menu
CoddyTech

Class Buku dan Pengguna

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

challenge icon

Tantangan

Mudah

Mari kita bangun fondasi Library Management System dengan membuat class Book dan User. Object domain inti ini akan bekerja sama untuk mengelola operasi perpustakaan.

Kamu akan mengatur kodemu dalam tiga file:

  • Book.php: Buat class Book untuk melacak buku perpustakaan. Buku kamu harus memiliki tiga property readonly yang ditetapkan melalui constructor promotion: isbn, title, dan author. Sertakan property privat $isAvailable yang nilai awalnya true. Tambahkan tiga method:
    • isAvailable(): bool: mengembalikan status ketersediaan
    • markAsBorrowed(): void: mengatur ketersediaan menjadi salah
    • markAsReturned(): void: mengatur ketersediaan menjadi benar
  • User.php: Sertakan file Book dan buat class User yang mewakili anggota perpustakaan. User kamu harus memiliki dua property readonly melalui constructor promotion: id (int) dan name (string). Sertakan array privat $borrowedBooks (awalnya kosong) dan konstanta MAX_BOOKS yang nilainya ditetapkan ke 3. Tambahkan method berikut:
    • getBorrowedBooks(): array: mengembalikan array buku yang dipinjam
    • canBorrow(): bool: mengembalikan benar jika user meminjam kurang dari MAX_BOOKS buku
    • addBook(Book $book): void: menambahkan buku ke array buku yang dipinjam
    • removeBook(string $isbn): void: menghapus buku berdasarkan ISBN menggunakan array_filter
  • main.php: Sertakan file User dan gunakan class kamu. Kamu akan menerima empat input: ID user, nama user, ISBN buku, dan judul buku (author akan bernilai "Unknown").

    Buat User dan Book dengan nilai yang diberikan. Cetak apakah user dapat meminjam buku pada awalnya, lalu minta user meminjam buku tersebut (tandai sebagai dipinjam dan tambahkan ke daftar user). Terakhir, cetak ketersediaan buku dan jumlah buku yang dipinjam.

    Format output:

    Can borrow: [yes/no]
    Book available: [yes/no]
    Books borrowed: [count]

Perhatikan bagaimana enkapsulasi melindungi keadaan internal: ketersediaan buku hanya berubah melalui method khusus, dan buku yang dipinjam user dikelola melalui akses yang terkontrol. Fondasi ini akan mendukung sistem peminjaman yang akan kita bangun berikutnya.

Coba sendiri

<?php

require_once 'User.php';

// Baca input
$userId = intval(trim(fgets(STDIN)));
$userName = trim(fgets(STDIN));
$bookIsbn = trim(fgets(STDIN));
$bookTitle = trim(fgets(STDIN));
$bookAuthor = "Unknown";

// TODO: Buat object User dengan id dan nama yang diberikan

// TODO: Buat object Book dengan isbn, judul, dan penulis yang diberikan

// TODO: Tampilkan apakah pengguna dapat meminjam pada awalnya
// Format: "Can borrow: yes" atau "Can borrow: no"

// TODO: Buat pengguna meminjam buku:
// - Tandai buku sebagai dipinjam
// - Tambahkan buku ke daftar buku yang dipinjam pengguna

// TODO: Tampilkan ketersediaan buku
// Format: "Book available: yes" atau "Book available: no"

// TODO: Tampilkan jumlah buku yang dipinjam
// Format: "Books borrowed: [count]"

?>

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online