Menu
Coddy logo textTech

Testowanie i integracja

Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 87 z 91.

challenge icon

Wyzwanie

Łatwy

Gratulacje z okazji zbudowania kompletnego systemu zarządzania biblioteką! Teraz pora połączyć wszystkie komponenty i sprawdzić, czy wszystko działa bez zakłóceń. Utworzysz kompleksowy test integracyjny, który sprawdzi pełny przepływ pracy w Twojej bibliotece.

Rozmieścisz kod w pięciu plikach:

  • Book.php: Twoja klasa Book z właściwościami tylko do odczytu (isbn, title, author), prywatną właściwością $isAvailable i metodami: isAvailable(), markAsBorrowed() oraz markAsReturned().
  • User.php: Dołącz plik Book. Twoja klasa User z właściwościami tylko do odczytu (id, name), prywatną tablicą $borrowedBooks, stałą MAX_BOOKS o wartości 3 oraz wszystkimi metodami użytkownika.
  • Library.php: Dołącz plik User. Twoja klasa Library z funkcjami zarządzania książkami, wypożyczania i zwracania, metodami wyszukiwania oraz metodą removeBook().
  • Admin.php: Dołącz plik Library. Twoja klasa Admin rozszerzająca klasę User, z metodami addBookToLibrary() i removeBookFromLibrary().
  • main.php: Dołącz plik Admin. Tutaj uruchomisz test integracyjny. Otrzymasz dwa wejścia: nazwę użytkownika i słowo kluczowe będące nazwiskiem autora do wyszukania.

    Skonfiguruj system biblioteczny:

    • Utwórz obiekt Library
    • Utwórz obiekt Admin o ID 1 i nazwie "LibraryAdmin"
    • Utwórz obiekt User o ID 2 i podanej nazwie użytkownika

    Niech administrator doda te trzy książki:

    • ISBN: "978-0", tytuł: "PHP Fundamentals", autor: "Sarah Johnson"
    • ISBN: "978-1", tytuł: "OOP Patterns", autor: "Mike Chen"
    • ISBN: "978-2", tytuł: "Web Security", autor: "Sarah Johnson"

    Następnie wykonaj poniższą sekwencję testu integracyjnego, wypisując każdy wynik w nowym wierszu:

    1. Niech użytkownik wypożyczy "978-0"
    2. Niech użytkownik wypożyczy "978-1"
    3. Wyszukaj książki według autora, używając drugiego wejścia, i wypisz ich liczbę: "Books by author: [count]"
    4. Pobierz dostępne książki i wypisz: "Available: [count]"
    5. Niech użytkownik zwróci "978-0"
    6. Ponownie pobierz dostępne książki i wypisz: "Available after return: [count]"
    7. Niech administrator usunie "978-0"
    8. Niech administrator spróbuje ponownie usunąć "978-0"

To końcowe wyzwanie sprawdza, czy cały system działa jako całość: administratorzy zarządzają zasobami, użytkownicy wypożyczają książki w ramach limitów, wyszukiwanie zwraca dokładne wyniki, a dostępność jest prawidłowo aktualizowana w całym przepływie pracy.

Spróbuj swoich sił

<?php

require_once 'Admin.php';

// Odczytaj dane wejściowe
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: Utwórz obiekt Library

// TODO: Utwórz obiekt Admin z ID 1 i nazwą "LibraryAdmin"

// TODO: Utwórz obiekt User z ID 2 i podaną nazwą użytkownika

// TODO: Niech administrator doda trzy książki:
// - ISBN: "978-0", Tytuł: "PHP Fundamentals", Autor: "Sarah Johnson"
// - ISBN: "978-1", Tytuł: "OOP Patterns", Autor: "Mike Chen"
// - ISBN: "978-2", Tytuł: "Web Security", Autor: "Sarah Johnson"

// TODO: Sekwencja testu integracyjnego:
// 1. Niech użytkownik wypożyczy "978-0"
// 2. Niech użytkownik wypożyczy "978-1"
// 3. Wyszukaj według autora, używając $searchAuthor, i wypisz: "Books by author: [count]"
// 4. Pobierz dostępne książki i wyświetl: "Available: [count]"
// 5. Niech użytkownik zwróci "978-0"
// 6. Ponownie pobierz dostępne książki i wyświetl: "Available after return: [count]"
// 7. Niech administrator usunie "978-0"
// 8. Niech administrator spróbuje ponownie usunąć "978-0"

?>

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator PHP online