الغرض من تعدد الملفات في البرنامج في ++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 . فكل ملف مصدري يجب أن يقبل الترجمة بذاته , أي مستقلا عن غيره . وقد تحتاج لهذه الميزة عندما تكون منهمكا في وضع مجموعة من الفئات أو البرنامج التطبيقي الذي يستخدمها . فعندما تطمئن إلي سلامة ترجمة كافة ملفاتك ,يمكنك البدء في إنشاء المشروع .
ملف المشروع الوهمي
في التربو سي++ حينما لا يكون تحت الدليل سوي ملف مشروع واحد , فإن النظام يحمله تلقائيا بمجرد تشغيلك له لم يكن هذه ما تريد , ربما سبب لك ذلك إزعاجا . يمكنك لتلاقي ذلك خلق ملف مشروع وهمي (أي فارغ) , حيث إنه حين يكون تحت الدليل أكثر من ملف , لن يفتح التربو سي++ أيا منهما .
تعليقات
إرسال تعليق