|
أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه هنا توضع المواضيع الغير مكتملة او المكرره في المنتدى او المنقوله من مواقع اخرى دون تصرف ناقلها او المواضيع المخالفه. |
| LinkBack | أدوات الموضوع | انواع عرض الموضوع |
#1
| ||
| ||
درس القوالب Templates-الدرس الأول بسم الله الرحمن الرحيم أقدم هذا الدرس المهم جدا في البرمجة الغرضية التوجه object - oriented programming سنتكلم عن القوالب templates . القوالب هي طريقة اختصارية للتحميل الزائد وتوفر لنا الوقت والجهد من كتابة تحميل زائد لأي دالة . قبل ان ندرس القوالب على البرمجة الغرضية التوجه OOP سنقوم بدراستها على الدوال (التوابع - الوظائف) Function لكي نوضح آليه عملها والفائدة المرجؤة من ذلك . Chapter -1 للتصريح عن قالب معين نستخدم الكلمة class او نستخدم الكلمة typename مثال: كود HTML: template<class T> كود HTML: template<typename T> عند استخدام T كوسيط في أي دالة سيكون عبارة عن وسيط وهمي ! . ويتسبب عدم كتابة الكلمة class او الكلمة typename قبل نمط كل وسيط وهمي ظمن قالب لدالة ما بحدوث خطأ قواعدي !! . سنقوم الان بإنشاء دالة array تأخذ وسطين أحدهما مصفوفة والاخر عدد يمثل عدد عناصر المصفوفة , تقوم الدالة بطباعة العناصر كلا بصف مستقل . كود HTML: #include<iostream> using std::cout; using std::endl; template<class T> void array(T *x,int a) { for(int i=0;i<a;i++) cout<<x[i]<<endl; } main() { int x[]={1,2,3,4,5}; double y[]={1.5,2.5,1.9,1.4}; char z[]="Template"; array(x,(sizeof(x)/4)); array(y,(sizeof(y)/8)); array(z,sizeof(z)); return 0; نلاحظ من خلال المثال السابق بأن المخرجات ستكون 1 2 3 4 5 1.5 2.5 1.9 1.4 T e m p l a t e هكذا نكون قد اوضحنا آلية عمل القوالب على الدوال , يتبقى لنا الان ان نعرف كيفية استخدامها على الصفوف . Chapter -2 من خلال المثال التالي , سنقوم بتصميم صف (صنف,فئة)class سنسميه Ali سيحتوي على دالة print تأخذ وسيط وهمي (قالب) وتقوم بطباعته على حسب عدد المرات والتي يتم تحديدها عند اشتقاق غرض من الصف (اي عن طريق دالة البناء). تقوم الدالة Sure بالتأكد من ان عملية الطباعة ماتزال مستمرة , أي انها تعيد قيمة bool من خلالها تساوي احد المعطيات(متغير خاص) بالمطعى الخاص بأخذ العدد المطلوب لتكرار عملية الطباعة والذي يتم اعطائة القيمة بواسطة تابع البناء . كود HTML: #include<iostream> using namespace std; template <class T> class Ali { public: Ali(int=1); bool print(T); bool Sure() { return y==x; } private: int x; int y; }; template<class T> Ali<T>::Ali(int a):x(a),y(0){} template<class T> bool Ali<T>::print(T a) { if(!Sure()) { cout<<a<<endl; y++; return true; } else return false; } main() { Ali<int> i(3); Ali<double> d(2); Ali<char*> c(4); while(i.print(15)){} while(d.print(15.50)){} while(c.print("Ali")){} return 0; } الدوال مع قالب الصف Chapter -3 سنقوم الان باستخدام الصف السابق بكتابة برنامج جديد . سنوضح من خلال هذا البرنامج كيفية عمل القوالب مع الدوال التي يكون احد وسطائها قالب صف. يحتوي البرنامج على دالة fun تأخذ وسيطين الأول غرض من صف Ali والوسيط الثاني سيكون وسيط وهمي لنوع من البيانات . كود HTML: #include<iostream> using namespace std; template <class T> class Ali { public: Ali(int=1); bool print(T); bool Sure() { return y==x; } private: int x; int y; }; template<class T> Ali<T>::Ali(int a):x(a),y(0){} template<class T> bool Ali<T>::print(T a) { if(!Sure()) { cout<<a<<endl; y++; return true; } else return false; } template<class T> void fun(Ali<T> &m,T a) { while(m.print(a)) {} } main() { Ali<int> i(3); Ali<double> d(2); Ali<char*> c(4); fun(i,15); fun(d,15.50); fun(c,"Ali"); return 0; } Chapter -4 نقوم اولا بتعريف الصف class بأنه "قالب صف" والذي يسمى بالمكدس Stack بواسطة تعريف القالب , يقوم المترجم بواسطة نص برمجي غير ظاهر للمستخدم او المبرمج بتعريف النمط T على انه النمط المرفق عند اشتقاق الغرض مثلا int او double بالنسبة للدوال داخل الصف يتم تعريف الدوال التي تأخذ وسيط وهمي "قالب" خارج تعريف الصف وباستخدام العملية الثنائية :: مع اسم القالب الصف كود HTML: Ali <T> في main نقوم باشتقاق الغرض من الصف Ali كما تعودنا ولكن يجب تحديد نوعية النمط للمكدس ليتم التعامل معه مستقبلاً . بهذا اكون قد انهيت الدرس الأول . اتمنى ان يكون قد حاز على رضاكم واستحسانكم . تقبلوا تحياتي منقول
__________________ angel4angel4angel4angel4angel4 |
مواقع النشر (المفضلة) |
| |
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
الدرس الأول لتعليم اللغه الأنجليزيه | عبده الشلبى | تعلم اللغة الانجليزيه | 5 | 10-03-2010 11:19 AM |
الدرس الأول .. تعلم اللغة الفرنسية | فارس عيون العرب | معهد تعلم لغات العالم | 21 | 08-27-2010 08:37 PM |
حروف اللغة العربية الدرس الأول | محمد البطّاح | معهد تعلم لغات العالم | 4 | 07-03-2010 07:38 PM |