Menu
Coddy logo textTech

בדיקות ואינטגרציה

חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 87 מתוך 91.

challenge icon

אתגר

קל

ברכות על בניית מערכת מלאה לניהול ספרייה! עכשיו הגיע הזמן לחבר את כל הרכיבים שלך ולוודא שהכול עובד בצורה חלקה. תיצור בדיקת אינטגרציה מקיפה שמפעילה את כל תהליך העבודה של הספרייה שלך.

תארגן את הקוד שלך בחמישה קבצים:

  • Book.php: מחלקת Book שלך עם מאפיינים לקריאה בלבד (isbn, title, author), מאפיין פרטי $isAvailable והמתודות: isAvailable(), markAsBorrowed() ו-markAsReturned().
  • User.php: כלול את קובץ Book. מחלקת User שלך עם מאפיינים לקריאה בלבד (id, name), מערך פרטי $borrowedBooks, קבוע MAX_BOOKS שערכו 3, וכל המתודות של המשתמש.
  • Library.php: כלול את קובץ User. מחלקת Library שלך עם ניהול ספרים, פונקציונליות להשאלה ולהחזרה, מתודות חיפוש ומתודת removeBook().
  • Admin.php: כלול את קובץ Library. מחלקת Admin שלך, שיורשת מ-User, עם המתודות addBookToLibrary() ו-removeBookFromLibrary().
  • main.php: כלול את קובץ Admin. כאן תריץ את בדיקת האינטגרציה שלך. תקבל שני קלטים: שם משתמש ומילת מפתח לחיפוש לפי שם המחבר.
  • הגדר את מערכת הספרייה שלך:

    • צור Library
    • צור Admin עם מזהה 1 ושם "LibraryAdmin"
    • צור User עם מזהה 2 ושם המשתמש שסופק

    בקש מהמנהל להוסיף את שלושת הספרים האלה:

    • מסת"ב: "978-0", כותרת: "PHP Fundamentals", מחבר: "Sarah Johnson"
    • מסת"ב: "978-1", כותרת: "OOP Patterns", מחבר: "Mike Chen"
    • מסת"ב: "978-2", כותרת: "Web Security", מחבר: "Sarah Johnson"

    לאחר מכן, הרץ את רצף בדיקת האינטגרציה הזה והדפס כל תוצאה בשורה חדשה:

    1. בקש מהמשתמש לשאול את "978-0"
    2. בקש מהמשתמש לשאול את "978-1"
    3. חפש לפי המחבר באמצעות הקלט השני והדפס את מספר התוצאות: "Books by author: [count]"
    4. קבל את הספרים הזמינים והדפס: "Available: [count]"
    5. בקש מהמשתמש להחזיר את "978-0"
    6. קבל שוב את הספרים הזמינים והדפס: "Available after return: [count]"
    7. בקש מהמנהל להסיר את "978-0"
    8. בקש מהמנהל לנסות להסיר שוב את "978-0"

האתגר האחרון הזה מאמת שהמערכת כולה פועלת יחד: מנהלים שמנהלים את המלאי, משתמשים ששואלים ספרים במסגרת המגבלות, חיפושים שמחזירים תוצאות מדויקות וזמינות שמתעדכנת כראוי לאורך כל תהליך העבודה.

נסו בעצמכם

<?php

require_once 'Admin.php';

// קראו את הקלט
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: צרו Library

// TODO: צרו Admin עם ID 1 והשם "LibraryAdmin"

// TODO: צרו User עם ID 2 ושם המשתמש שסופק

// TODO: בקשו מהאדמין להוסיף שלושה ספרים:
// - ISBN: "978-0", כותרת: "PHP Fundamentals", מחבר: "Sarah Johnson"
// - ISBN: "978-1", כותרת: "OOP Patterns", מחבר: "Mike Chen"
// - ISBN: "978-2", כותרת: "Web Security", מחבר: "Sarah Johnson"

// TODO: רצף בדיקות אינטגרציה:
// 1. בקשו מהמשתמש לשאול את "978-0"
// 2. בקשו מהמשתמש לשאול את "978-1"
// 3. חפשו לפי מחבר באמצעות $searchAuthor והדפיסו: "Books by author: [count]"
// 4. קבלו את הספרים הזמינים והדפיסו: "Available: [count]"
// 5. בקשו מהמשתמש להחזיר את "978-0"
// 6. קבלו שוב את הספרים הזמינים והדפיסו: "Available after return: [count]"
// 7. בקשו מהמנהל להסיר את "978-0"
// 8. בקשו מהמנהל לנסות להסיר שוב את "978-0"

?>

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר PHP אונליין