السلام عليكم ورحمة الله وبركاته
كنت أفكر منذ مدة أن أضع بعض الدروس التطبيقية حول انشاء واستخدام الفئات في برامجنا وكنت أحاول كل مرة وضع خطة بسيطة يمكن أن يستوعبها الجميع بمختلف مستوياتهم
وفي الأخير وجدت قرض تعليمي كنت قد أخذت عليه وتعلمت منه أشياء كثيرة وقررت أن أتبع نفس المنهجية في طرح الموضوع
الأهداف :
- شرح أهمية استعمال الفئات في برامجنا
- إستعمال الفئات من أجل انتاج أدوات و مكتبات DLL واستغلالها في برامجنا
- إنشاء أدوات وفئات بخصائص وأحداث
- إنشاء وإستخدام فئات قواعد بيانات واستعمالها في تطبيقاتنا
قبل البدء دائما أردت التنبيه أن الدورة هي فقط تطبيقية وليست مقالة تختص بالتعريفات العامة لكن يمكننا أن نتعلم بعض المصطلحات منها (أرجو من الاخوة التصحيح اذا كان هناك خطأ في استعمال بعض المصطلحات)
ماذا نقصد بالفئات ؟
الفئات أو الClasses هي ببساطة ذلك النوع من الكود المستعمل داخل الفيجوال عبارة عن ملفات ذات امتداد cls شبيهة بالمويدول التي امتدادها bas لكن تختلف عنها في الاستعمال
فالفئات يمكننا استعمالها ككائن Object وكل فئة يمكنها تعريف كائن من نوع محدد
يمكننا تعريف الفئات كما في الصورة كالتصميم الذي ننشؤه لمنزل
ومن خلاله نستطيع أن نعرف كيف سيتم بناء منزل ما بموصفات مختلفة
يمكننا انشاء عدة منازل من خلال تصميم واحد وبخصائص مختلفة كلون الجدران والزجاج المستعمل مثلا
طبعا التصميم واحد لكن يمكننا اطلاق اسم على المنزل الأول واسم آخر على المنزل الثاني كأن نقول منزل فلان و منزل ...
هنا قمنا بانشاء Instance من الفئة (التصميم ) وقمنا بتحديد خصائص لها
مثال :
نفترض انه لدينا فئة اسمها House لانشاء منزل من الفئة ننشئ نسخة جديدة من الفئة لكي نتعامل معها ككائن له خصائص
Dim house1 As House Set house1 = New House
الآن بعد أن أنشأنا نسخة من الفئة House يمكننا أن نغير خصائصها الموجودة في التصميم
house1.Color = vbRed
طبعا هنا يجب المراعة وجود الخاصية في التصميم
يمكننا أن ننشئ منزلا آخر ونغيير خصائصه بنفس الطريقة 
مما ورد فاننا نلاحظ أن أهمية الفئة أنه يمكننا بواسطتها انشاء عدة كائنات مشتقة منها وهذا يعني أنها توفر علينا اعادة كتابة الأكواد لكل كائن على حدى
كل فئة يتم انشائها داخل مشروعنا تتضمن في البدء شيئين أساسيين أو اجرائين مهمين
هما
- إجراء Class_Initialize
- إجراء Class_Terminate
يتم استدعاء الإجراء الأول عندء انشاء نسخة جديدة من الفئة
أما الإجراء الثاني فانه يستدعى عند انتهاء عمل النسخة أو الكائن المنشئ من الفئة
وعادة مايتم انهاء أو تفريغ الكائنات المستعملة آليا عند انهاء البرنامج
لكن ينصح بإنهاءه عن طريق الكود
مثال :
نضيف لمشروعنا Class وندعها بدون اعادة تسمية (افتراضيا سيكون اسمها Class1 )
نكتب هذا الكود داخل فئتنا
Private Sub Class_Initialize () MsgBox "Object Created " End Sub Private Sub Class_Terminate () MsgBox "Object Terminated " End Sub
نعرف في قسم المتغيرات العامة متغيير منن الفئة التي قمنا بانشائها
نعرف في قسم المتغيرات العامة متغيير منن الفئة التي قمنا بانشائها
Private S As Class1
نحن هنا نريد التأكد مما قلناه سابقا
ننشئ زر لانشاء نسخة جديدة من الفئة Class1 لكي نتأكد أن الإجراء Class_Initialize يتم استدعؤه وقت الانشاء
Private Sub Command1_Click () Set S = New Class1 End Sub
ستلاحظ ظهور المسج بوكس الذي وضعناه في اجراء الانشاء
ولكي نقوم بتفريغ أو حذف الكائن المنشئ نستعمل الكود التالي
Private Sub Command2_Click() Set S = Nothing End Sub
