Menu
Coddy logo textTech

Test ve Entegrasyon

Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 87 / 91.

challenge icon

Görev

Kolay

Tam teşekküllü bir Kütüphane Yönetim Sistemi oluşturdun, tebrikler! Şimdi tüm bileşenlerini bir araya getirmenin ve her şeyin sorunsuz çalıştığını doğrulamanın zamanı. Kütüphanenin tüm iş akışını çalıştıran kapsamlı bir entegrasyon testi oluşturacaksın.

Kodunu beş dosya arasında düzenleyeceksin:

  • Book.php: readonly özelliklere (isbn, title, author), private bir $isAvailable özelliğine ve şu metotlara sahip Book sınıfın: isAvailable(), markAsBorrowed() ve markAsReturned().
  • User.php: Book dosyasını dahil et. readonly özelliklere (id, name), private bir $borrowedBooks dizisine, 3 değerinde bir MAX_BOOKS sabitine ve tüm kullanıcı metotlarına sahip User sınıfın.
  • Library.php: User dosyasını dahil et. Kitap yönetimi, ödünç alma/iade işlevleri, arama metotları ve removeBook() metoduna sahip Library sınıfın.
  • Admin.php: Library dosyasını dahil et. User sınıfını genişleten ve addBookToLibrary() ile removeBookFromLibrary() metotlarına sahip Admin sınıfın.
  • main.php: Admin dosyasını dahil et. Entegrasyon testini burada çalıştıracaksın. İki girdi alacaksın: bir kullanıcı adı ve bir yazar arama anahtar sözcüğü.

    Kütüphane sistemini kur:

    • Bir Library oluştur
    • ID değeri 1 ve adı "LibraryAdmin" olan bir Admin oluştur
    • ID değeri 2 ve sağlanan kullanıcı adına sahip bir User oluştur

    Yöneticiye şu üç kitabı eklettir:

    • ISBN: "978-0", Başlık: "PHP Fundamentals", Yazar: "Sarah Johnson"
    • ISBN: "978-1", Başlık: "OOP Patterns", Yazar: "Mike Chen"
    • ISBN: "978-2", Başlık: "Web Security", Yazar: "Sarah Johnson"

    Ardından her sonucu yeni bir satıra yazdırarak şu entegrasyon testi sırasını çalıştır:

    1. Kullanıcıya "978-0" kitabını ödünç aldır
    2. Kullanıcıya "978-1" kitabını ödünç aldır
    3. İkinci girdiyi kullanarak yazara göre ara ve sayıyı yazdır: "Books by author: [count]"
    4. Mevcut kitapları al ve şunu yazdır: "Available: [count]"
    5. Kullanıcıya "978-0" kitabını iade ettir
    6. Mevcut kitapları tekrar al ve şunu yazdır: "Available after return: [count]"
    7. Yöneticiye "978-0" kitabını kaldırt
    8. Yöneticinin "978-0" kitabını tekrar kaldırmayı denemesini sağla

Bu son meydan okuma, sisteminin tamamının birlikte çalıştığını doğrular: yöneticilerin envanteri yönetmesi, kullanıcıların limitler dahilinde kitap ödünç alması, aramaların doğru sonuçlar döndürmesi ve iş akışı boyunca müsaitlik durumunun doğru şekilde güncellenmesi.

Kendin dene

<?php

require_once 'Admin.php';

// Girdileri oku
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: Bir Library oluştur

// TODO: ID 1 ve adı "LibraryAdmin" olan bir Admin oluştur

// TODO: ID 2 ve sağlanan kullanıcı adıyla bir User oluştur

// TODO: Admin'in üç kitap eklemesini sağla:
// - ISBN: "978-0", Title: "PHP Fundamentals", Author: "Sarah Johnson"
// - ISBN: "978-1", Title: "OOP Patterns", Author: "Mike Chen"
// - ISBN: "978-2", Title: "Web Security", Author: "Sarah Johnson"

// TODO: Entegrasyon test sırası:
// 1. Kullanıcının "978-0" ödünç almasını sağla
// 2. Kullanıcının "978-1" ödünç almasını sağla
// 3. Search by author using $searchAuthor and print: "Books by author: [count]"
// 4. Mevcut kitapları al ve yazdır: "Available: [count]"
// 5. Kullanıcının "978-0" iade etmesini sağla
// 6. Get available books again and print: "Available after return: [count]"
// 7. Admin'in "978-0" öğesini kaldırmasını sağla
// 8. Admin'in "978-0" öğesini tekrar kaldırmayı denemesini sağla

?>

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online PHP derleyicisi