PRG of RPG
26-02-2003, 12:43 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
من أروع مواضيع البرمجة هو البرمجة الكائنية ..ولكن للأسف قليل منا من يستخدمها
افتح مشروع جديد بإسم التطبيق(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)
تستطيع تحميل ملف التطبيقات في موقعي في القسم الرئيسي للدروس
أتمنى لكم برمجة كائنية ممتعة :)
السلام عليكم ورحمة الله وبركاته
من أروع مواضيع البرمجة هو البرمجة الكائنية ..ولكن للأسف قليل منا من يستخدمها
افتح مشروع جديد بإسم التطبيق(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)
تستطيع تحميل ملف التطبيقات في موقعي في القسم الرئيسي للدروس
أتمنى لكم برمجة كائنية ممتعة :)