منطق الإيداع
جزء من قسم Object Oriented Programming في رحلة C على Coddy — الدرس 24 من 61.
التحدي
سهلحان الوقت لإضافة أول عملية بنكية حقيقية إلى وحدة الحساب (Account) الخاصة بك—القدرة على إيداع الأموال! يجب أن تكون وظيفة الإيداع ذكية: يجب أن تقبل فقط المبالغ الموجبة، مما يحمي حسابك من المعاملات غير الصالحة.
بناءً على مشروع حساب البنك الحالي، ستقوم بتوسيع الوحدة بوظيفة الإيداع. يجب أن تتحقق وظيفة الإيداع الخاصة بك من المدخلات قبل تعديل الرصيد المخفي—هذا هو مبدأ التغليف (encapsulation) الذي يعمل على حماية سلامة بياناتك.
ستعمل على ثلاثة ملفات:
account.h: قم بتوسيع ملف الترويسة الحالي عن طريق إضافة نموذج أولي لوظيفة جديدة:deposit. يجب أن تأخذ هذه الوظيفة مؤشر Account ومبلغاً من نوعdouble، وتُرجعint(1 للنجاح، و 0 إذا كان المبلغ غير صالح). احتفظ بالإعلانات الحالية لـcreate_accountوdestroy_account.account.c: قم بتنفيذ وظيفةdepositجنباً إلى جنب مع المنشئ (constructor) والمدمر (destructor) الحاليين. يجب أن ينجح الإيداع فقط إذا كان المبلغ موجباً (أكبر من الصفر). إذا كان صالحاً، أضف المبلغ إلى الرصيد المخفي وأرجع 1. إذا كان المبلغ صفراً أو سالباً، فارفضه بإرجاع 0 دون تغيير الرصيد.main.c: قم باستعراض وظيفة الإيداع الخاصة بك عن طريق إنشاء حساب وإجراء عمليات إيداع متعددة—بعضها صالح وبعضها غير صالح—لإظهار أن التحقق من الصحة يعمل بشكل صحيح.
ستتلقى ثلاثة مدخلات: معرف الحساب (عدد صحيح)، و مبلغ إيداع صالح (رقم موجب)، و مبلغ إيداع غير صالح (صفر أو سالب).
في ملفك الرئيسي، قم بإنشاء حساب بالمعرف المعطى واطبع تأكيداً. ثم حاول إيداع المبلغ غير الصالح أولاً—اطبع ما إذا كان قد نجح ولاحظ أن الرصيد يجب أن يظل دون تغيير. بعد ذلك، قم بإيداع المبلغ الصالح—اطبع نتيجة النجاح. أخيراً، قم بتدمير الحساب وتأكيد عملية التنظيف.
اطبع المخرجات بهذا التنسيق:
Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyedحيث 1001 هو معرف الحساب، و -50.00 هو المبلغ غير الصالح، و 200.00 هو المبلغ الصالح. قم بتنسيق جميع المبالغ بمنزلتين عشريتين باستخدام %.2f.
تعمل وظيفة الإيداع الخاصة بك كحارس بوابة—فهي تضمن أن المعاملات الصالحة فقط هي التي يمكنها تعديل الرصيد المخفي للحساب. على الرغم من أنك لا تستطيع رؤية الرصيد بعد (سنضيف وظيفة جلب الرصيد في درس لاحق)، يمكنك الوثوق في أن عمليات الإيداع غير الصالحة يتم رفضها بشكل صحيح.
جرّب بنفسك
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
scanf("%d", &account_id);
Account* account = create_account(account_id);
printf("Account %d created\n", account_id);
destroy_account(account);
printf("Account destroyed\n");
return 0;
}
جميع دروس Object Oriented Programming
1أساسيات البرمجة التركيبية
ملفات الترويسةحواجز التضمينملفات المصدرالدوال الساكنةمراجعة: آلة حاسبة تركيبية4التغليف (Encapsulation)
مفهوم الـ Opaque Pointersتعريف الـ Opaque Structsالـ Getters والـ Settersالتحقق من البيانات في الـ Settersملخص: الصندوق السري2الكائنات والأساليب
الـ Structs ككائناتمؤشر 'Self'صحة استخدام Constالمؤشر مقابل القيمةالأساليب المساعدةملخص: Point Manager5مشروع: حساب بنكي بسيط
إعداد المشروعتنفيذ الحساب3دورة حياة الكائن
نمط المنشئ (Constructor Pattern)نمط الهادم (Destructor Pattern)تهيئة الـ Stackالنسخ العميق (Deep Copy)مراجعة: String Wrapper6الوراثة عبر التركيب
تضمين الـ Structقاعدة العضو الأولالوصول إلى أعضاء الأبعملية الـ Upcastingمراجعة: هرمية الأشكال9مشروع: رسّام الأشكال
نظرة عامة على المشروعتنفيذ الدائرة