بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

من أروع مواضيع البرمجة هو البرمجة الكائنية ..ولكن للأسف قليل منا من يستخدمها

افتح مشروع جديد بإسم التطبيق(7-1) ثم اختر project ثم اضف class Module ...

غير الخاصية Name لل class إلى Car

تخيل أن هنالك سيارة لها اسم ولون ورقم لوحة

تحيل أن هنالك ملايين من السيارات لها اسماء وألوان وأرقام لوحات

هل يعقل أنك ستقوم بكتابة متغيرات لكل سيارة ؟ هل هي طريقة عملية ؟

هذه فائدة البرمجة الكائنية .. حيث تحدد خصائص الكائن ثم تنشئ ما تريده من الكائنات

لنتخيل أن هنالك سيارة لها اسم ولون ورقم

ونريد أن نجعل هذه الخصائص لكل سيارة ننشئها
بحيث أننا نقول فقط أنشئ سيارة جديدة وهو يقوم بإنشاء متغيرات جديدة لكل سيارة ..

حسناً لقد اضفنا class Module وسنكتب فيه المتغيرات التالية

كود:
Public Name As String
Public Speed As Integer
Public Color As ColorConstants
Dim Number As String
لقد انشئنا اربعة متغيرات :
اسم السيارة - سرعتها - لونها - رقم اللوحة

لمذا لوحة السيارة Dim وليست Public ؟؟
وذلك لك اريك الفرق بين Public و Dim
الفرق بينهم هو أن متغيرات Public تستطيع تعديلها من الفورم مباشرة
أما متغيرات Dim فلا تستطيع الوصول إليها إلا من خلال الClass نفسه
بمعني أننا لابد من أن ننشئ دالة تقوم بالوصول إلى المتغير ... سنفهم معنى هذا الكلام بعد قليل
الان وبعد أن أنشئنا المتغيرات ، إذهب إلى Form1 واكتب في الحدث Load
كود:
Dim Car1 as new Car
أو

كود:
Dim car1 As Car
Set car1 = New Car
تؤديان نفس النتيجة وهي تعيين كائن جديد في الذاكرة مع متغيراته الأربعة التي أنشأناها

حسناً وبعد أن أنشأنا الكائن Car1 في الذاكرة نريد تعين الخواص الأريعة له

والأن أكتب (في الحدث Load أيظاً ) :

كود:
Car1.   'will show to you 3 Objects
عند كتابه هذا سيضهر عندك ثلاث عانصر وهي
Name
Speed
Color
فقط فـ Number لم تضهر لأنها متغير Dim .... هل اتضح الفرق الان

والان أكتب الكود التالي لتتأكد من صحة ما نفعله

كود:
Car1.Speed = 150
Msgbox Car1.Speed
سيطبع لك سرعة الكائن Car1 بعد أن أدلخنا سرعته

والأن لنجعل دالة تقوم بالوصول إلى المتغير Number

إذهب إلى الClass

وإكتب

كود:
Public Sub Set_Number(N As String) ' A Function to Set the Number
Number = N
End Sub

Public Sub Get_Number() ' A Function to Get the Number
MsgBox Number
End Sub
فقط أنشأنا دالتين (داخل الClass) الاولى تقوم بالوصول إلى المتغير Number
والثانية تقوم بطباعة المتغير Number

أرأيت لا نستطيع الوصول إلى المتغير Number إلى عن طريق دالة داخل الClass نفسه

والان لنتحقق من عمل الدالتين

إذهب إلى الفورم وداخل الحدث Load إكتب :

كود:
car1.Set_Number "121021"  ' set the number
car1.Get_Number ' Get the Number
هل إتضحت البرمجة الكائنية الان ... امل ذلك

انتظر دقيقة هل يجب علي كتابة الخواص لك كائن واحد تلو الاخر ؟؟؟
بالطبع لا تستطيع إنشاء دالة كما فعلنا في دالة Set_Number للوصول إلى العناصر مرة واحدة

حسناً لقد صنعت مثالاً بسيطاً عن البرمجة الكائنية فيه كائنين Car1 و Car2 يتسابقان
وفيه إضافات بسيطة تستطيع فهما بسهولة لأنه لا يوجد جديد ماعدا :
كود:
bObject as Object
التعريف كـ Object مهم جداً فما هو Object ?

هو أي كائن في Visula Basic قد يكون Form1 أو Picture1 أو Picture2 لا يهم
فإذا كنت تريد دالة تقوم بتغير خلفية الفورم فستكون :
كود:
Public Sub CBackColor(bObject As Object, Color As ColorConstants) ' a Function to change the bc of an object
bObject.BackColor = Color
End Sub
أنظر إلى التطبيق (7-1) لترى المثال

_________

بما أننا تحدثنا عن البرمجة الكائنية OOP فمن الجديد بنا المضي مع ملفات dll
لطالما نظرت إلى هذه الملفات نظرة رعب وهيبة ( الا توافقني الرأي)
فالنسق لهذه الملفات dll. له هيبته
بالفعل هذه الملفات تعتمد عليها البرامج ونظام Windows بشكل رهيب

لكي لا نطيل عليكم ...

كيف أنشأ مثل هذه الملفات

إفتح فيجوال بيسك وإنتبه لا تختار Standard EXE بل إختر ActiveX dll

سم الملف من خلال الخاصية Name من class1 إلى Car
والان قم بنقل الكود الموجود في التطبيق (7-1) في الكائن Class
إلى ملف Class الجديد...
غير اسم المشروع من Project1 إلى Cars
والان اختر File ثم Make Car.dll ثم سم الملف ما تريد

لقد صنعت ملفك dll الخاص بك

افتح مشروع جديد ثم اختر Project ثم References ثم Browse ثم أبحث عن ملف الDll واختاره
إن لم يضع عليه علامة صح مباشرة إبحث عن Cars

والان تعامل مع الملف كأنه موجود داخل ملف Class لديك

إن لم تفهم أنظر إلى التطبيق (7 - 2) و التطبيق (7 - 3)

تستطيع تحميل ملف التطبيقات في موقعي في القسم الرئيسي للدروس

أتمنى لكم برمجة كائنية ممتعة