Pengujian dan Integrasi
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 87 dari 91.
Tantangan
MudahSelamat karena kamu telah membangun Sistem Manajemen library yang lengkap! Sekarang saatnya menyatukan semua komponenmu dan memastikan semuanya berfungsi dengan lancar. Kamu akan membuat tes integrasi menyeluruh yang menguji seluruh alur kerja library-mu.
Kamu akan mengatur kodemu dalam lima file:
Book.php: classBookdengan property readonly (isbn,title,author), property$isAvailableyang bersifat private, dan method:isAvailable(),markAsBorrowed(), danmarkAsReturned().User.php: Sertakan file Book. classUserdengan property readonly (id,name), array$borrowedBooksyang bersifat private, konstantaMAX_BOOKSbernilai3, dan semua method user.Library.php: Sertakan file User. classLibrarydengan pengelolaan buku, fungsi peminjaman dan pengembalian, method pencarian, dan methodremoveBook().Admin.php: Sertakan file Library. classAdminyang mewarisiUser, dengan methodaddBookToLibrary()danremoveBookFromLibrary().main.php: Sertakan file Admin. Di sinilah kamu akan menjalankan tes integrasimu. Kamu akan menerima dua input: nama user dan kata kunci penulis yang dicari.Siapkan sistem library-mu:
- Buat
Library - Buat
Admindengan ID1dan nama"LibraryAdmin" - Buat
Userdengan ID2dan nama user yang diberikan
Minta admin menambahkan tiga buku berikut:
- ISBN:
"978-0", Judul:"PHP Fundamentals", Penulis:"Sarah Johnson" - ISBN:
"978-1", Judul:"OOP Patterns", Penulis:"Mike Chen" - ISBN:
"978-2", Judul:"Web Security", Penulis:"Sarah Johnson"
Lalu jalankan urutan tes integrasi ini, dengan mencetak setiap hasil pada baris baru:
- Minta user meminjam
"978-0" - Minta user meminjam
"978-1" - Cari berdasarkan penulis menggunakan input kedua dan cetak jumlahnya:
"Books by author: [count]" - Dapatkan buku yang tersedia dan cetak:
"Available: [count]" - Minta user mengembalikan
"978-0" - Dapatkan lagi buku yang tersedia dan cetak:
"Available after return: [count]" - Minta admin menghapus
"978-0" - Minta admin mencoba menghapus
"978-0"sekali lagi
- Buat
Tantangan terakhir ini memvalidasi bahwa seluruh sistemmu bekerja bersama: admin mengelola inventaris, user meminjam sesuai batas, pencarian memberikan hasil yang akurat, dan ketersediaan diperbarui dengan benar selama alur kerja.
Coba sendiri
<?php
require_once 'Admin.php';
// Baca input
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));
// TODO: Buat Library
// TODO: Buat Admin dengan ID 1 dan nama "LibraryAdmin"
// TODO: Buat User dengan ID 2 dan nama pengguna yang diberikan
// TODO: Minta admin menambahkan tiga buku:
// - ISBN: "978-0", Judul: "PHP Fundamentals", Penulis: "Sarah Johnson"
// - ISBN: "978-1", Judul: "OOP Patterns", Penulis: "Mike Chen"
// - ISBN: "978-2", Judul: "Web Security", Penulis: "Sarah Johnson"
// TODO: Urutan pengujian integrasi:
// 1. Minta pengguna meminjam "978-0"
// 2. Minta pengguna meminjam "978-1"
// 3. Cari berdasarkan penulis menggunakan $searchAuthor dan cetak: "Books by author: [count]"
// 4. Ambil buku yang tersedia dan cetak: "Available: [count]"
// 5. Minta user mengembalikan "978-0"
// 6. Ambil lagi buku yang tersedia dan cetak: "Available after return: [count]"
// 7. Minta admin menghapus "978-0"
// 8. Minta admin mencoba menghapus "978-0" 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