Menu
CoddyTech

Antarmuka Admin

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

challenge icon

Tantangan

Mudah

Mari kita kembangkan Sistem Manajemen Perpustakaan dengan menambahkan kemampuan administratif. Kamu akan membuat class Admin yang mewarisi User, tetapi memiliki hak khusus untuk mengelola inventaris perpustakaan: menambahkan buku baru dan menghapus buku yang sudah ada.

Kamu akan mengatur kodemu dalam lima file:

  • Book.php: class Book dengan property readonly (isbn, title, author), property $isAvailable private yang nilai awalnya true, dan method: isAvailable(), markAsBorrowed(), dan markAsReturned().
  • User.php: Sertakan file Book. Class User dengan property readonly (id, name), array $borrowedBooks private, konstanta MAX_BOOKS bernilai 3, dan method: getBorrowedBooks(), canBorrow(), addBook(Book $book), dan removeBook(string $isbn).
  • Library.php: Sertakan file User. Class Library dengan fungsionalitas yang sudah ada, termasuk addBook(), findBook(), borrowBook(), returnBook(), dan method pencarian. Tambahkan method baru:
    • removeBook(string $isbn): void: menghapus buku dari koleksi menggunakan unset()
  • Admin.php: Sertakan file Library. Buat class Admin yang memperluas User. Admin mewarisi semua kemampuan user, tetapi juga mendapatkan dua method administratif:
    • addBookToLibrary(Library $library, Book $book): string: menambahkan buku ke perpustakaan dan mengembalikan "Added: [title]"
    • removeBookFromLibrary(Library $library, string $isbn): string: mencoba menghapus buku dengan pemeriksaan berikut:
      • Jika buku tidak ada, kembalikan "Book not found"
      • Jika buku sedang dipinjam, kembalikan "Cannot remove: book is currently borrowed"
      • Jika tidak, hapus buku tersebut dan kembalikan "Removed: [title]"
  • main.php: Sertakan file Admin. Kamu akan menerima dua input: ISBN dan judul buku.

    Buat Library dan Admin dengan ID 1 dan nama "AdminUser". Buat juga User biasa dengan ID 2 dan nama "RegularUser".

    Buat Book dengan ISBN, judul, dan penulis "Test Author" yang diberikan. Lakukan operasi berikut dan cetak setiap hasil pada baris baru:

    1. Minta admin menambahkan buku ke perpustakaan
    2. Minta user biasa meminjam buku
    3. Minta admin mencoba menghapus buku (seharusnya gagal: buku sedang dipinjam)
    4. Minta user biasa mengembalikan buku
    5. Minta admin menghapus buku (seharusnya berhasil sekarang)
    6. Minta admin mencoba menghapus buku yang sama lagi (seharusnya gagal karena buku tidak ditemukan)

Tantangan ini menunjukkan bagaimana pewarisan membentuk hierarki yang alami: admin adalah user dengan hak tambahan. Pemeriksaan keamanan di removeBookFromLibrary memastikan integritas data dengan mencegah penghapusan buku yang masih beredar.

Coba sendiri

<?php
require_once 'Admin.php';

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

// TODO: Buat Library

// TODO: Buat Admin dengan ID 1 dan nama "AdminUser"

// TODO: Buat User biasa dengan ID 2 dan nama "RegularUser"

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

// TODO: Lakukan operasi berikut dan cetak setiap hasil pada baris baru:
// 1. Minta admin menambahkan buku ke library
// 2. Minta pengguna biasa meminjam buku
// 3. Minta admin mencoba menghapus buku (seharusnya gagal karena buku sedang dipinjam)
// 4. Minta pengguna biasa mengembalikan buku
// 5. Minta admin menghapus buku (seharusnya berhasil sekarang)
// 6. Minta admin mencoba menghapus buku yang sama lagi (seharusnya gagal karena buku tidak ditemukan)

?>

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online