تنفيذ الحساب
جزء من قسم البرمجة كائنية التوجه في رحلة C على Coddy. الدرس 23 من 61.
التحدي
سهلحان الوقت الآن لإضفاء الحياة على حسابك المصرفي! لقد أنشأت بالفعل الواجهة العامة في account.h: والآن ستنفّذ الأجزاء الداخلية المخفية التي تجعله يعمل.
استنادًا إلى عملك السابق، ستضيف ملف المصدر الذي يحتوي على تعريف struct السري والتنفيذات الفعلية للدوال. هنا يحدث التغليف فعليًا: لا يوجد جسم struct إلا في ملف .c، وهو غير مرئي تمامًا لأي شخص يستخدم مكتبتك.
ستعمل باستخدام ثلاثة ملفات:
account.h: ملف الترويسة الموجود لديك، ويحتوي على إعلان النوع المعتمAccountوالنماذج الأولية للدالتينcreate_accountوdestroy_account. احتفظ بحواجز التضمين الخاصة بك باستخدامACCOUNT_H.account.c: هنا يحدث السحر. عرّفstruct Accountالفعلي مع عضوين مخفيين:int id(معرّف الحساب) وdouble balance(يبدأ بالقيمة 0.0 للحسابات الجديدة). نفّذ الباني لتخصيص الذاكرة، وتعيين المعرّف من المعامل، وتهيئة الرصيد إلى الصفر. نفّذ المدمّر لتحرير الذاكرة بشكل صحيح.main.c: اختبر تنفيذك من خلال إنشاء حساب والتأكد من عمله. بما أن أعضاء struct مخفيون، فلا يمكنك إلقاء نظرة داخلهم، لكن يمكنك التحقق من أن دورة الحياة تعمل بشكل صحيح.
ستتلقى مُدخلًا واحدًا: معرّف الحساب (عددًا صحيحًا) لتعيينه للحساب الجديد.
في ملف main الخاص بك، أنشئ حسابًا باستخدام المعرّف المُقدَّم، واطبع رسالة تأكيد تعرض المعرّف، ثم دمّر الحساب وأكّد إتمام التنظيف.
اطبع الناتج بهذا التنسيق:
Account 1001 created
Account destroyedحيث يتم استبدال 1001 بالمعرّف الفعلي الذي تلقيته كمدخل.
تذكّر: لا يمكن لملف main.c الخاص بك الوصول مباشرةً إلى account->id أو account->balance. هذه الأعضاء مخفية تمامًا داخل account.c. في الوقت الحالي، ستستخدم فقط المعرّف من المدخل لرسالة الناتج الخاصة بك. في الدروس القادمة، ستضيف دوال getter لاسترداد البيانات المخفية بطريقة صحيحة.
جرّب بنفسك
#include <stdio.h>
#include "account.h"
int main() {
int account_id;
// TODO: اقرأ account_id من الإدخال
scanf("%d", &account_id);
// TODO: أنشئ حسابًا باستخدام create_account() واطبع "Account <id> created"
// TODO: destroy the account using destroy_account() and print "Account destroyed"
return 0;
}جميع دروس البرمجة كائنية التوجه
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مشروع: رسّام الأشكال
نظرة عامة على المشروعتنفيذ الدائرةتنفيذ المستطيلاستخدام تعدد الأشكالحاوية الأشكالتدرّب بنفسك: مترجم C عبر الإنترنت