Sistem Peminjaman
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 84 dari 91.
Tantangan
MudahMari 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: ClassBookdari pelajaran sebelumnya dengan property readonly (isbn,title,author), property$isAvailableprivat yang dimulai dengan nilaitrue, dan method:isAvailable(),markAsBorrowed(), danmarkAsReturned().User.php: Sertakan file Book. ClassUserdengan property readonly (id,name), array$borrowedBooksprivat, konstantaMAX_BOOKSbernilai3, dan method:getBorrowedBooks(),canBorrow(),addBook(Book $book), danremoveBook(string $isbn).Library.php: Sertakan file User. Buat classLibraryyang mengelola koleksi buku. Library-mu harus memiliki:- Array
$booksprivat untuk menyimpan buku dengan ISBN sebagai indeks addBook(Book $book): void: menambahkan buku ke koleksifindBook(string $isbn): ?Book: mengembalikan buku atau null jika tidak ditemukanborrowBook(User $user, string $isbn): string: memvalidasi dan memproses peminjaman, lalu mengembalikan pesan yang sesuaireturnBook(User $user, string $isbn): string: memproses pengembalian dan memperbarui status buku serta pengguna
Method
borrowBookharus 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
returnBookharus mengembalikan"Book not found"jika buku tidak ada, atau"Successfully returned: [title]"jika berhasil.- Array
main.php: Sertakan file Library. Kamu akan menerima dua input: ISBN dan judul buku.Buat
Library,Userdengan ID1dan nama"Alice", sertaBookdengan ISBN, judul, dan author"Unknown"yang diberikan. Tambahkan buku ke library, lalu lakukan operasi berikut dan cetak setiap hasil pada baris baru:- Pinjam buku
- Coba pinjam buku yang sama lagi
- Kembalikan buku
- 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
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form14Proyek: Manajemen library
Ringkasan ProyekClass Buku dan Pengguna3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online