Menu
Coddy logo textTech

סיכום – מנהל חשבון בנק

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

challenge icon

אתגר

קל

בואו נבנה מערכת מלאה לניהול חשבונות בנק, שמשלבת את כל המושגים שלמדת על מאפייני מחלקות בפרק הזה. תיצור מחלקת 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]"

?>

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

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