مرحبا يا اعضاء المنتدى اذا سمحتم اريد شرح للتيمبليت وما هي فائدته
:D :D :D :D
مرحبا يا اعضاء المنتدى اذا سمحتم اريد شرح للتيمبليت وما هي فائدته
:D :D :D :D
السلام عليكم ,,
القوالب أو Templates كما يحلو لك تسميتها هي طريقة مبتكرة لإعادة استخدام الكود دون كتابته من جديد أو نسخه و لصقه أو التعديل عليه ,,
في ++C الطريقة تعتبر ناجحة نسبياً ,, هناك طرق أخرى في لغات برمجة أخرى تسمى Generic Programming بشكل عام يمكنك البحث عنها ,,
لنعد إلى Templates ,, هذا مثال بسيط :
template < class Type >
bool IsEqual ( Type A, Type B ){
if ( A == B )
return true;
else
return false;
}قد يبدو شكل الكود غريباً بعض الشيء و لكنه ليس كذلك ,, الكلمة template تقوم بتعريف اسم النوع الذي سيتم ادخاله للدالة ,, يعني باختصار ما هو النوع Type ؟
طبعاً لا يوجد نوع اسمه Type في ++C إذا ما هو Type ؟
الدالة التي كتبناها قبل قليل تعتبر صعبة جداً بدون القوالب ,, لماذا ,, لأنه كلما أردنا أن نقارن متغيرين مثلاً من نفس النوع علينا إعادة تعريف الدالة Overloading ,, و لكن هنا المترجم Compiler بكل بساطة يقوم بالعمل و يستبدل النوع الذي تمرره للدالة بالنوع Type
على سبيل المثال لمقارنة عددين صحيحين int يمكنك تمريرهما للدالة كالتالي :
IsEqual ( 6, 6 );
و الدالة سوف تعيد true طبعاً ماذا لو أردت مقارنة حرفين ؟
بنفس الطريقة !! دون تغيير قم بتمرير المتغيرات و دع العمل للمترجم ,,
طبعاً لا أنسى أن أقول لك أن الدالة ستعمل مع أي فئة Class تم إعادة تعريف المعامل == فيها !!
هناك مكتبة كاملة مبنية بهذه التقنية و هي من أشهر المكاتب و هي STL ,, وهي مكتبة قياسية تأتي مع مترجمات ++C ,,
و هذا درس رائع للقوالب من الأخ time1
و هنا نقاش عام قام بفتحه الأخ الشمري و ستجد الكثير من الفائدة فيه
طبعاً الموضوع متشعب و إذا كان هناك سؤال محدد فلا تتردد ,,
تحياتي ,,
والله مني عارف كيف بدي اشكرك لانه يوم الاحد عندي امتحان وانتا سهلت علي هذا الدرس والف الف شكر مرة ثانية...............
:rolleyes: :rolleyes: :rolleyes: :rolleyes:
هذا الموضوع مغلق.