סיכום – מנהל חשבון בנק
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 20 מתוך 91.
אתגר
קלבואו נבנה מערכת מלאה לניהול חשבונות בנק, שמשלבת את כל המושגים שלמדת על מאפייני מחלקות בפרק הזה. תיצור מחלקת BankAccount שתכיל כראוי את נתוני החשבון ותעקוב אחר נתונים סטטיסטיים של הבנק כולו.
תארגן את הקוד שלך בשני קבצים:
BankAccount.php: הגדר מחלקתBankAccountשמנהלת חשבונות פרטניים ועוקבת אחר הנתונים הסטטיסטיים הכוללים של הבנק. המחלקה צריכה לכלול:- קבוע
MINIMUM_BALANCEשערכו100 - מאפיין ציבורי לקריאה בלבד
string $accountIdשלא ניתן לשנות לאחר יצירתו - מאפיין ציבורי
$holderNameעבור שם בעל החשבון - מאפיין פרטי
$balanceלהגנה על יתרת החשבון - מאפיין סטטי פרטי
$totalAccountsשמתחיל בערך0 - מאפיין סטטי פרטי
$totalDepositsשמתחיל בערך0
getBalance(): מחזירה את היתרה הנוכחיתdeposit($amount): מוסיפה ליתרה ומעדכנת את מעקב סך ההפקדות, ומחזירה את היתרה החדשהwithdraw($amount): מפחיתה מהיתרה רק אם היתרה שנותרת היא בגובה היתרה המינימלית או גבוהה ממנה, ומחזירה את היתרה החדשה (או את היתרה ללא שינוי אם המשיכה אינה אפשרית)- מתודה סטטית
getTotalAccounts(): מחזירה את המספר הכולל של החשבונות שנוצרו - מתודה סטטית
getTotalDeposits(): מחזירה את סכום כל ההפקדות שבוצעו בכל החשבונות
- קבוע
main.php: כלול את קובץ המחלקה BankAccount. תקבל ארבע קלטים: מזהה החשבון הראשון, שם בעל החשבון הראשון, מזהה החשבון השני ושם בעל החשבון השני. צור שני חשבונות, שלשניהם יתרה התחלתית של500. עבור החשבון הראשון: הפקד200, ואז משוך100. הדפס בשורה אחת את מזהה החשבון, שם בעל החשבון והיתרה, בפורמט:"[accountId]: [holderName] - $[balance]"עבור החשבון השני: הפקד300, ואז נסה למשוך800(הפעולה אמורה להיכשל בגלל היתרה המינימלית). הדפס עבור החשבון הזה באותו הפורמט. לבסוף, הדפס את מספר החשבונות הכולל ואת סך ההפקדות בשורות נפרדות:"Total Accounts: [count]""Total Deposits: $[amount]"
האתגר הזה משלב מאפיינים לקריאה בלבד עבור מזהים שאינם ניתנים לשינוי, מאפיינים פרטיים עם מתודות getter עבור נתונים מוגנים, קבועים עבור כללים קבועים, ומאפיינים סטטיים עם מתודות סטטיות עבור נתונים סטטיסטיים של הבנק כולו.
נסו בעצמכם
<?php
require_once 'BankAccount.php';
// קרא את הקלטים
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));
// TODO: צור את החשבון הראשון עם יתרה התחלתית של 500
// TODO: צור את החשבון השני עם יתרה התחלתית של 500
// TODO: בחשבון הראשון: הפקד 200, ואז משוך 100
// TODO: הדפס את פרטי החשבון הראשון: "[accountId]: [holderName] - $[balance]"
// TODO: בחשבון השני: הפקד 300, ואז נסה למשוך 800
// TODO: הדפס את פרטי החשבון השני: "[accountId]: [holderName] - $[balance]"
// TODO: הדפס "Total Accounts: [count]"
// TODO: הדפס "Total Deposits: $[amount]"
?>כל השיעורים ביחידה תכנות מונחה עצמים
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 אונליין