סיכום - מחשבון צורות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 32 מתוך 91.
אתגר
קלבואו נבנה מחשבון צורות שמדגים את העוצמה של ממשקים ליצירת קוד גמיש וניתן להרחבה. תיצרו ממשק שמגדיר חוזה לחישוב שטחים, ואז תממשו אותו במחלקות של צורות שונות.
תארגנו את הקוד שלכם בארבעה קבצים:
Calculable.php: הגדירו ממשקCalculableעם חתימה של שיטה אחת:calculateArea(). החוזה הזה מבטיח שכל צורה שניתנת לחישוב תוכל לחשב את השטח שלה.Rectangle.php: צרו מחלקהRectangleשמממשת אתCalculable. כללו את קובץ הממשק. למחלקה צריכות להיות התכונות הפרטיות$widthו-$height, שנקבעות באמצעות הבנאי. ממשו אתcalculateArea()כך שתחזיר את השטח (רוחב כפול גובה).Circle.php: צרו מחלקהCircleשגם היא מממשת אתCalculable. כללו את קובץ הממשק. למחלקה צריכה להיות התכונה הפרטית$radius, שנקבעת באמצעות הבנאי. ממשו אתcalculateArea()כך שתחזיר את השטח באמצעות הנוסחהpi() * radius * radius.main.php: כללו את שני קובצי הצורות. צרו פונקציה בשםdisplayAreaשמקבלת פרמטר מסוגCalculableושם של צורה (מחרוזת). הפונקציה צריכה להדפיס:"[name] area: [area]", כאשר השטח מעוגל ל-2 ספרות אחרי הנקודה העשרונית באמצעותnumber_format().
תקבלו ארבעה קלטים: רוחב המלבן, גובה המלבן, רדיוס המעגל ושם של צורה עבור המעגל. צרו Rectangle עם הרוחב והגובה (המירו למספרים ממשיים), ו-Circle עם הרדיוס (המירו למספר ממשי). קראו ל-displayArea() פעמיים: תחילה עם המלבן, תוך שימוש ב-"Rectangle" כשם, ואז עם המעגל, תוך שימוש בשם הצורה שסופק. הדפיסו כל תוצאה בשורה נפרדת.
הפונקציה displayArea() פועלת עם כל צורה שמממשת את Calculable. היא לא צריכה לדעת אם היא מחשבת את השטח של מלבן, מעגל או כל צורה עתידית שתוסיפו. זה היופי שבתכנות מול ממשק!
נסו בעצמכם
<?php
// כלול את קובצי הצורות
require_once 'Rectangle.php';
require_once 'Circle.php';
// TODO: צור פונקציה בשם displayArea
// עליה לקבל פרמטר מסוג Calculable ושם של צורה (string)
// הדפס: "[name] area: [area]" כאשר השטח מעוגל ל-2 ספרות אחרי הנקודה העשרונית באמצעות number_format()
// קרא את הקלטים
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));
// TODO: צור Rectangle עם הרוחב והגובה
// TODO: צור Circle עם הרדיוס
// TODO: קרא ל-displayArea() עם המלבן, תוך שימוש ב-"Rectangle" בתור השם
// TODO: קרא ל-displayArea() עם העיגול, תוך שימוש בשם הצורה שסופק
?>כל השיעורים ביחידה תכנות מונחה עצמים
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סיכום – אוסף מותאם אישית3מאפייני מחלקה
מאפייני מופע לעומת מאפיינים סטטייםקבועים במחלקותמתודות ומאפיינים סטטייםמאפיינים פרטיים ומוגניםמאפיינים לקריאה בלבד (PHP 8.1)סיכום – מנהל חשבון בנק6פולימורפיזם
בחינה מחדש של דריסת מתודותפולימורפיזם באמצעות ממשקיםרמזי טיפוסים וטיפוסי איחודקישור סטטי מאוחרסיכום — מעבד תשלומיםתרגלו בעצמכם: קומפיילר PHP אונליין