C++ Templates
هل عملت يوما في احد برامج تصميم صفحات الانترنت ؟!
إذا كنت قد عملت فربما تعاملت مع النماذج مثلا في دريم ويفر يمكنك استخدام النماذج الجاهزة لبناء الموقع أو يمكنك بناء نموذج
و إذا كنت لم تسمع عن النماذج ..فماذا يعني النموذج؟
النموذج أو template هو مفهوم يمكن المبرمج من تصميم خوارزمية لسير العمليات في برنامج ما بغض النظر عن أنماط
المعطيات المستخدمة......يعني نقوم بتعريف نموذج , و نستخدمه في البرنامج مع أي نمط للمعطيات, طبعا بما يناسب العمليات
في الخوارزمية المكتوبة, فعندما نكتب خوارزمية خاصة بالأنماط الرقمية لا يمكن تمرير معطيات محرفية مثلا وهذا للتنبيه فقط
و هذه الفكرة تشبه فكرة التحميل الزائد Overloading في الOOP لكن هنا يمكن استخدامها في البرمجة الهيكلية
Stuructured Programming
و يمكن استخدام النماذج في C++ في التوابع Functions و الصفوف Classes :
Template Functions :
و يمكن تسميتها التوابع العامة أو الشاملة generic functions و الفكرة هي معالجة العمليات بشكل مجرد عن المعطيات
و الشكل العالم لتعريف نموذج التابع كما يلي template <class AType>
return-type function-name(parameter-list){
//function body
{
كمثال عليه التابع الخاص بالقيمة المطلقة حيث يمكن فهمه من خلال المثال التالي*******************************************************************
*******************************************************************
#include <iostream.h>
template <class AnyType>
AnyType abs (AnyType a_number) {
if (a_number < 0)
return -a_number;
else
return a_number;
}
//****************************
// main ()
//****************************
main() {
// Variables of different types
int a = -10;
long b = -567890;
float c = -33.44;
cout << "\ndemonstrating template function abs()\n";
// Passing constants
cout << abs(-22.3) << "\n;
cout << abs(-3) << "\n";
cout << abs(334556) << "\n";
// Passing variables
cout << abs(a) << "\n";
cout << abs(b) << "\n";
cout << abs(c) << "\n";
return 0;
}
****************************************************************
*************************************************************
و يمكن أن نعرف أكثر من نموذج للمعطيات template <class OneType, class AnotherType>
void Display(OneType x, AnotherType y) {
cout << x << " " << y << "\n";
}
**************************************************************
**************************************************************
أرجو أن تكون الفكرة قد وصلت بشكل مناسب
و عليكم دائما بالتجربة ...جرب ثم جرب ثج جرب حتى تتعلم بشكل جيدو قد واجهت مشاكل في تنسيق المقالة و أعتذر عن هذا السوء بالتنسيق