الغرض من تعدد الملفات في البرنامج في ++C

c

رأينا قبل ذلك كيف يجمع برنامج السي++ المختلفة , مثل تعاريف الفئات والدوال المنتمية والدالة الأصلية . علي أن كافة هذه البرامج كانت من ملف واحد .

وسوف نتناول في هذا المقال تنظيم البرامج من وجهة نظر أخري , الملفات المتعددة .

وبالإضافة إلي ذلك , سنعرض في هذا المقال لبعض برامج طموحة , ليس بهدف فهمها وحسب , بل لتأخذ فكرة عن كيفية العلاقات بين عناصر البرامج الكبيرة . كما تنبين هذه البرامج تطبيق الفئات في مواقف أكثر واقعية من التي عرضنا لها للأن .

الغرض من تعدد الملفات في البرنامج

هناك عدة أسباب لتعدد الملفات في البرامج , من ذلك استخدام الملفات المكتبية , تنظيم العمل بيم مبرمجي البرنامج , وتنظيم البرنامج تنظيما منطقيا .

كيف تنشئ برنامجا متعدد الملفات

تصور أنك اشتريت برنامجا جاهزا , وليكن theirs.obj (يتم التعامل مع الملفات .lib بنفس الطريقة) , هذا البرنامج يأني في الغالب بملف تصديري وليكن theirs.h , وأنك تريد دمج هذين العنصرين مع برنامجك mine.cpp في ملف تنفيذي .

الملفات التصديرية

تضمين الملف التصديري أمر سهل , فهو يتم بالأمر :

#include ''theirs.h''

وتخبر علامتي التنصيص المترجم ألا يبحث عن هذا البرنامج تحت الدليل include , بل تحت الدليل الحالي .

الأدلة

يجب التأكد من أن العناصر الثلاثة موجودة تحت نفس الدليل , وقد تنشئ دليلا خاصا بمشروعك منعا للالتباس (وإن كان هذا ليس بالأمر المحتم) . وفي بولاند سي++ أنشئ ملف مشروع mine.ide بالطريقة التي شرحناها قبل ذلك , وفي تيربو سي++ تجول إلي هذا الدليل ثم شغل النظام بكتابة tc عند محث الدوس . ولست محتاجا لفتح أي من العناصر الثلاثة .

الملفات المتعدد في بورلاند سي ++

إضافة ملف جديد يتم في بورلاند سي++ بكل سهولة , لنفرض أنك أنشأت بالفعل مشروعا باسم mine , وأنك ابتدائه بالملف mine.cpp كما شرحنا في قبل ذلك , وإنك تريد إضافة الملف theirs.obj للمشروع .

في نافذة Project تري أيقونة mine.exe , مع أيقونة mine.cpp ملحقة بها , ويعني ذلك أن المشروع سوف ينشئ الملف التنفيذي المبين , وأن الملف mine.cpp مطلوب كملف مصدري .

ولإضافة الملف theirs.h أنقر علي الضاغط الأيمن للفارة . ثم أختر من القائمة التي تظهر الأمر Add Node فيظهر لك صندوق حواري باسم Add to Project List , أختر من القائمة الملف المطلوب إضافته , وفي مثالنا هذا الملف theirs.h . لاحظ أن الملفات المصدرية ذات الامتداد h . لا يشترط أن تظهر في نافذة المشروع .

هذا كل ما في الأمر , سوف تري في النافذة Project أن الملف التنفيذي قد ألحق به الملفان mine.cpp و theirs , يمكنك ترجمتها وربطها بالطريقة العادية , باختيار Debug/Run .

الملفات المتعددة في تيربوسي++

تتطلب الملفات المتعددة عدة خطوات أ:ثر ما يتطلبه بورلاند سي++ والسبب أن بورلاند سي++ يفترض أن أي برنامج هو مشروع , أما التيربو فليس الأمر كذلك مع البرامج ذات الملف المصدري الواحد .

افتح مشروعا

اختر الأمر Project/Open وستفتح لك نافذة باسم Load Project File . تحتوي هذه النافذة علي سطر لإدخال النص , أيضا باسم Load Project File .

في هذا الحقل أكتب اسم ملف المشروع الذي تريد إنشاؤه . وعليك أن تعطي هذا الملف نفس الأسم الذي اخترته للملف التنفيذي النهائي , ولكن بالإمتداد prj . وعلي ذلك فإذا كنت ترغب أن يكون برنامجك باسم mine.exe فأدخل في ذلك الحقل mine.prj . ثم اضرب مفتاح الإدخال أو أختر OK . ستخفي هذه النافذة , وتأتي أخري بعنوان الملف الذي اخترته .

أدخل عناصر مشروعك

لإدخال الملفات المكونة للمشروع , أضرب INS أو أختر Project/ Add Item ستفتح نافذة ثالثة , باسم Add Item to Project List , ذات حقل نصي باسم Name في أعلاها . أكتب في هذا الحقل اسم الملف الأول , وليكن teirs.obj , ثم اضرب مفتاح الإدخال او المفتاح Add . ستري أن اسم الملف قد سجل علي النافذة Project أسدل الشاشة . افعل نفس الشئ مع الملف التالي وهكذا . أخيرا , أضرب علي Cancel لتختفي شاشة Add Item , وبذلك يكون عملك قد تم .

أنشئ الملف التنفيذي

تأكد من أن نافذة Project فعالة , واختر Compile/Make EXE file . بذلك سوف يترجم ملف mine.cpp (إذا بم يكن قد ترجم في مرحلة سابقة ) , ثم يربط به الملف theirs.obj . وينشأ بذلك الملف التنفيذي mine.exe .

لتشغيل الملف , اختر Run/Run , أو أضرب علي Cntr+F9 . بعد إنهاء التربو سي++ ستجد أسم ملفك التنفيذي قد أضيف لقائمة الملفات كملف قائم بذاته .

الترجمة الألية

يحتفظ المترجم بتواريخ أخر تعديل في أي ملف , وبذلك يعرف الملفات التي تتطلب إعادة ترجمة والتي لا تتطلب ذلك فإذا كان ملف مصدري قد ترجم قبل إنشاء الملف التنفيذي , فلا داعي لإعادة ترجمته قبل ربطه . أما إذا كان قد تعرض لتعديل ما منذ أخر عملية ربط فإن التربو سي ++ سوف يعيد ترجمته قبل ربط ملفه المصدري . هذه الألية تعني أنك كمبرمج ليس عليك أن تشغل ذهنك بما يحتاج للترجمة , اعتمادا علي أن التربو سي++ يفهم ما يجب عليه عمله حين تطلب منه إنشاء الملف التنفيذي .

ويمكنك علي الدوام أن ترم الملفات المصدرية علي استقلال , مستخدما Compile/Compile . فكل ملف مصدري يجب أن يقبل الترجمة بذاته , أي مستقلا عن غيره . وقد تحتاج لهذه الميزة عندما تكون منهمكا في وضع مجموعة من الفئات أو البرنامج التطبيقي الذي يستخدمها . فعندما تطمئن إلي سلامة ترجمة كافة ملفاتك ,يمكنك البدء في إنشاء المشروع .

ملف المشروع الوهمي

في التربو سي++ حينما لا يكون تحت الدليل سوي ملف مشروع واحد , فإن النظام يحمله تلقائيا بمجرد تشغيلك له لم يكن هذه ما تريد , ربما سبب لك ذلك إزعاجا . يمكنك لتلاقي ذلك خلق ملف مشروع وهمي (أي فارغ) , حيث إنه حين يكون تحت الدليل أكثر من ملف , لن يفتح التربو سي++ أيا منهما .

التسميات: