לוגיקת משיכה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C של Coddy. שיעור 25 מתוך 61.
אתגר
קלחשבון הבנק שלך גדל! עכשיו נוסיף את היכולת למשוך כספים. בניגוד להפקדות, למשיכות יש אילוץ נוסף. אי אפשר למשוך יותר כסף ממה שיש לך. פונקציית המשיכה שלך צריכה לבדוק את היתרה לפני שהיא מאפשרת את הפעולה.
בהתבסס על פרויקט חשבון הבנק הקיים שלך, תרחיב את המודול באמצעות הוספת פונקציונליות למשיכת כספים. כאן הכימוס באמת בא לידי ביטוי. הפונקציה שלך יכולה לגשת ליתרה המוסתרת כדי לוודא שיש מספיק כספים, דבר שקוד חיצוני לעולם לא יכול לעשות ישירות.
תעבוד עם שלושה קבצים:
account.h: הוסף אבטיפוס של פונקציה חדשה:withdraw. פונקציה זו מקבלת מצביע ל-Account וסכום מסוגdouble, ומחזירהint(1 במקרה של הצלחה, 0 אם המשיכה נכשלת). השאר את כל ההצהרות הקיימות שלך עבורcreate_account,destroy_accountו-deposit.account.c: ממש את הפונקציהwithdraw. משיכה תצליח רק אם מתקיימים שני תנאים: הסכום חייב להיות חיובי (גדול מאפס), ולחשבון חייבים להיות מספיק כספים (יתרה >= סכום). אם שני התנאים מתקיימים, הפחת את הסכום מהיתרה והחזר 1. אחרת, החזר 0 בלי לשנות את היתרה.main.c: הצג את תהליך ההפקדה והמשיכה המלא שלך. צור חשבון, בצע הפקדה כדי לקבוע את היתרה, ואז בדוק משיכות: גם מוצלחות וגם לא מוצלחות.
תקבל ארבעה קלטים: מזהה החשבון (מספר שלם), סכום הפקדה (לקביעת הכספים הראשוניים), סכום משיכה מוצלחת (קטן או שווה לסכום שהופקד), ו-סכום משיכה שנכשלה (גדול מהיתרה שנותרה).
בקובץ הראשי שלך, צור חשבון והדפס אישור. הפקד את הכספים הראשוניים והדפס את התוצאה. לאחר מכן בצע את המשיכה המוצלחת והדפס אם היא הצליחה. לבסוף, נסה לבצע את המשיכה שאמורה להיכשל (אין מספיק כספים) והדפס את התוצאה. השמד את החשבון ואשר את הניקוי.
הדפס את הפלט בפורמט הזה:
Account 1001 created
Deposit 500.00: 1
Withdraw 200.00: 1
Withdraw 400.00: 0
Account destroyedכאשר 1001 הוא מזהה החשבון, 500.00 הוא סכום ההפקדה, 200.00 הוא סכום המשיכה המוצלחת, ו-400.00 הוא סכום המשיכה שנכשלה (כי נותרו רק 300.00 לאחר המשיכה הראשונה). עצב את כל הסכומים עם שתי ספרות אחרי הנקודה העשרונית באמצעות %.2f.
פונקציית המשיכה שלך מדגימה את כוחה של הכימוס. היא יכולה לבדוק את היתרה המוסתרת באופן פנימי כדי לקבל החלטות, ואילו לקוד חיצוני אין דרך לעקוף את האימות הזה או להציץ ביתרה ישירות.
נסו בעצמכם
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
double valid_amount;
scanf("%lf", &valid_amount);
double invalid_amount;
scanf("%lf", &invalid_amount);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
int result_invalid = deposit(account, invalid_amount);
printf("Deposit %.2f: %d\n", invalid_amount, result_invalid);
int result_valid = deposit(account, valid_amount);
printf("Deposit %.2f: %d\n", valid_amount, result_valid);
destroy_account(account);
printf("Account destroyed\n");
return 0;
}כל השיעורים ביחידה תכנות מונחה עצמים
4כימוס
המושג של מצביעים אטומיםהגדרת מבנים אטומיםפונקציות Get ו-Setאימות ב-Settersסיכום: הקופסה הסודית2אובייקטים ומתודות
מבנים כאובייקטיםמצביע 'Self'נכונות constמצביע לעומת ערךמתודות עזרחזרה: מנהל נקודות5פרויקט: חשבון בנק פשוט
הגדרת הפרויקטמימוש החשבוןתרגלו בעצמכם: קומפיילר C אונליין