סיכום – מערכת רישומי תלמידים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 43 מתוך 91.
אתגר
קלבואו נבנה מערכת לניהול רשומות תלמידים, שמשלבת את כל מושגי הכימוס שלמדת בפרק הזה. תיצור מערכת מאורגנת היטב שמנהלת את נתוני התלמידים באופן מאובטח, באמצעות קידום בנאי, מאפיינים פרטיים, גטרים וסטרים עם אימות נתונים והסתרת מידע.
תארגן את הקוד שלך בשלושה קבצים:
Student.php: צור מחלקה בשםStudentבאמצעות קידום בנאי עבור$nameפרטי (מחרוזת) ועבור$studentIdפרטי (מחרוזת). כלול גם מאפיין מערך פרטי בשם$grades(שמאותחל כמערך ריק). למחלקת התלמיד צריכים להיות:getName(): מחזירה את שם התלמידgetStudentId(): מחזירה את מזהה התלמידaddGrade(int $grade): מוסיפה ציון רק אם הוא בין 0 ל־100 (כולל)getAverage(): מחזירה את הממוצע של כל הציונים כמספר עשרוני (מחזירה 0.0 אם אין ציונים)getGradeCount(): מחזירה את מספר הציונים שנרשמו
Classroom.php: צור מחלקה בשםClassroomשמנהלת אוסף של תלמידים. השתמש במערך פרטי לאחסון התלמידים. כלול את קובץ Student. למחלקת הכיתה צריכים להיות:- בנאי שמקבל
$roomNameפרטי (מחרוזת) באמצעות קידום בנאי addStudent(Student $student): מוסיפה תלמיד לכיתהgetStudentCount(): מחזירה את מספר התלמידים הרשומיםgetClassAverage(): מחשבת את הממוצע של ממוצעי כל התלמידים (מחזירה 0.0 אם אין תלמידים או ציונים)getRoomName(): מחזירה את שם הכיתה
- בנאי שמקבל
main.php: כלול את קובץ Classroom. יתקבלו חמישה קלטים: שם של כיתה, שם של תלמיד, מזהה תלמיד ושני ערכי ציונים. צורClassroomעם שם הכיתה. צורStudentעם השם והמזהה, הוסף את שני הציונים (לאחר המרתם למספרים שלמים), ואז הוסף את התלמיד לכיתה. הדפס ארבע שורות:- שם הכיתה
- שם התלמיד ואחריו הממוצע שלו בפורמט של ספרה אחת אחרי הנקודה העשרונית:
"[name]: [average]" - מספר הציונים של אותו תלמיד
- ממוצע הכיתה בפורמט של ספרה אחת אחרי הנקודה העשרונית
המערכת הזו מדגימה כימוס נכון: הציונים מוגנים מפני שינוי ישיר, הממוצעים מחושבים באופן פנימי בלי לחשוף את הנתונים הגולמיים, וכל הנתונים עוברים דרך מתודות מבוקרות. הכיתה לא צריכה לדעת איך התלמידים מחשבים את הממוצעים שלהם. היא רק מבקשת את התוצאה.
נסו בעצמכם
<?php
require_once 'Classroom.php';
// קראו את הקלטים
$roomName = trim(fgets(STDIN));
$studentName = trim(fgets(STDIN));
$studentId = trim(fgets(STDIN));
$grade1 = intval(trim(fgets(STDIN)));
$grade2 = intval(trim(fgets(STDIN)));
// TODO: צרו Classroom עם שם הכיתה
// TODO: צרו Student עם השם וה-ID
// TODO: הוסיפו את שני הציונים לתלמיד
// TODO: הוסיפו את התלמיד לכיתה
// TODO: הדפיסו את שם הכיתה
// TODO: הדפיסו את שם התלמיד ואחריו את הממוצע שלו, מעוצב לספרה אחת אחרי הנקודה העשרונית: "[name]: [average]"
// TODO: הדפיסו את מספר הציונים של התלמיד הזה
// TODO: הדפיסו את ממוצע הכיתה, מעוצב לספרה אחת אחרי הנקודה העשרונית
?>כל השיעורים ביחידה תכנות מונחה עצמים
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 אונליין