מערכת השאלת ספרים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 84 מתוך 91.
אתגר
קלבואו נפיח חיים במערכת ניהול הספרייה שלנו באמצעות יצירת המחלקה Library, שמתזמרת את כל פעולות השאלת הספרים. המתאם המרכזי הזה ינהל את אוסף הספרים ויאכוף את הכללים שמאפשרים לספרייה שלנו לפעול בצורה חלקה.
תארגן את הקוד שלך בארבעה קבצים:
Book.php: מחלקתBookשלך מהשיעור הקודם, עם מאפיינים לקריאה בלבד (isbn,title,author), מאפיין פרטי$isAvailableשמתחיל בערךtrue, והמתודות:isAvailable(),markAsBorrowed()ו-markAsReturned().User.php: כלול את קובץ Book. מחלקתUserשלך עם מאפיינים לקריאה בלבד (id,name), מערך פרטי$borrowedBooks, קבועMAX_BOOKSשערכו3, והמתודות:getBorrowedBooks(),canBorrow(),addBook(Book $book)ו-removeBook(string $isbn).Library.php: כלול את קובץ User. צור מחלקתLibraryשמנהלת את אוסף הספרים. בספרייה שלך צריכים להיות:- מערך פרטי
$booksלאחסון ספרים לפי ISBN addBook(Book $book): void: מוסיפה ספר לאוסףfindBook(string $isbn): ?Book: מחזירה את הספר או null אם לא נמצאborrowBook(User $user, string $isbn): string: מאמתת ומבצעת השאלה, ומחזירה הודעות מתאימותreturnBook(User $user, string $isbn): string: מבצעת החזרה ומעדכנת את מצב הספר והמשתמש
המתודה
borrowBookצריכה לבדוק שלושה תנאים לפי הסדר ולהחזיר את ההודעות המדויקות הבאות:"Book not found": אם הספר לא קיים"Book is not available": אם הספר כבר הושאל"Borrowing limit reached": אם למשתמש יש 3 ספרים"Successfully borrowed: [title]": במקרה של הצלחה
המתודה
returnBookצריכה להחזיר"Book not found"אם הספר לא קיים, או"Successfully returned: [title]"במקרה של הצלחה.- מערך פרטי
main.php: כלול את קובץ Library. תקבל שתי קלטים: ISBN וכותרת של ספר.צור
Library, משתמשUserעם מזהה1ושם"Alice", וספרBookעם ה-ISBN, הכותרת והמחבר"Unknown"שסופקו. הוסף את הספר לספרייה, ואז בצע את הפעולות האלה והדפס את התוצאה של כל אחת בשורה חדשה:- השאל את הספר
- נסה להשאיל שוב את אותו הספר
- החזר את הספר
- השאל את הספר פעם נוספת
האתגר הזה מדגים כיצד המחלקה Library מרכזת את הלוגיקה העסקית. היא מאמתת תנאים, מתאמת שינויים במצב בין אובייקטים של Book ו-User, ומחזירה משוב משמעותי עבור כל פעולה.
נסו בעצמכם
<?php
require_once 'Library.php';
// קראו את הקלט
$isbn = trim(fgets(STDIN));
$title = trim(fgets(STDIN));
// TODO: צרו מופע של Library
// TODO: צרו User עם ID 1 והשם "Alice"
// TODO: צרו Book עם ה-ISBN שסופק, הכותרת והמחבר "Unknown"
// TODO: הוסיפו את הספר לספרייה
// TODO: בצעו את הפעולות הבאות והדפיסו כל תוצאה בשורה חדשה:
// 1. השאילו את הספר
// 2. נסו לשאול שוב את אותו הספר
// 3. החזירו את הספר
// 4. השאילו את הספר פעם נוספת
?>כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםמילת המפתח $thisמתודותמאפייניםבנאי (__construct)הורס (__destruct)חזרה: מחשבון פשוט4ירושה
ירושה בסיסיתמילת המפתח parent::דריסת מתודותמילת המפתח finalמחלקות מופשטותסיכום – היררכיית עובדים7כימוס
ציבורי, מוגן, פרטימפרטי גישה לעומקמתודות גישה ועדכוןהסתרת מידעקידום פרמטרים בבנאי (8.0)סיכום – מערכת רישומי תלמידים2מרחבי שמות וטעינה אוטומטית
מבוא למרחבי שמותמילת המפתח useתקן הטעינה האוטומטית PSR-4הטוען האוטומטי של Composerסיכום – פרויקט מאורגן5ממשקים וחוזים
מבוא לממשקיםמימוש ממשקיםמימוש של כמה ממשקיםממשק לעומת מחלקה מופשטתרמזי טיפוסים עם ממשקיםסיכום - מחשבון צורות8מתודות קסם
מבוא למתודות קסם__toString ו־__debugInfo__get, __set, __isset, __unset__call ו־__callStatic__clone ושיבוט אובייקטים__serialize ו־__unserializeסיכום – אוסף מותאם אישית11מערכת טיפוסים וטיפול בשגיאות
הצהרות טיפוסיםטיפוסים שניתנים להכלה של nullטיפוסי איחוד וחיתוךמחלקות חריגההיררכיית חריגות מותאמת אישיתTry, Catch, Finallyסיכום – מאמת טפסים14פרויקט: ניהול ספרייה
סקירת הפרויקטמחלקות ספר ומשתמש3מאפייני מחלקה
מאפייני מופע לעומת מאפיינים סטטייםקבועים במחלקותמתודות ומאפיינים סטטייםמאפיינים פרטיים ומוגניםמאפיינים לקריאה בלבד (PHP 8.1)סיכום – מנהל חשבון בנק6פולימורפיזם
בחינה מחדש של דריסת מתודותפולימורפיזם באמצעות ממשקיםרמזי טיפוסים וטיפוסי איחודקישור סטטי מאוחרסיכום — מעבד תשלומיםתרגלו בעצמכם: קומפיילר PHP אונליין