Menu
Coddy logo textTech

סיכום - מחשבון צורות

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

challenge icon

אתגר

קל

בואו נבנה מחשבון צורות שמדגים את העוצמה של ממשקים ליצירת קוד גמיש וניתן להרחבה. תיצרו ממשק שמגדיר חוזה לחישוב שטחים, ואז תממשו אותו במחלקות של צורות שונות.

תארגנו את הקוד שלכם בארבעה קבצים:

  • 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() עם העיגול, תוך שימוש בשם הצורה שסופק
?>

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

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