السلام عليكم ورحمة الله وبركاته :
استكمالا لسلسلة دروس الـ OOP في VB.NET( ان جاز اطلاق لقب سلسله عليها) ...,,,
وكما وعدتكم سابقا في الدرس السابق Inheritance in VB.NET بدرس في الـ Properties فسوف يكون درسنا عن كيفية تصميم أو عمل Property أو خاصيه لـ Object وهذا الـ Object قد يكون Class أو Component وقد وضحنا كل منهما والعلاقه بينهما في أول درس Classes in VB.NET ولكن أولا دعوني أوضح الـ Structure الخاص بالـ Class , وبعد ذلك يتم تجميع هذه الـ Class في Namespace كالآتي :
Namespace [Namespace Name] Public Class [Class Name] 'Member variables 'Methods 'Properties 'Events End Class End Namespace
*******************************************************************************
نتعامل كثيرا أو دائما عند عمل أي برنامج مع الـ Buttons و الـ TextBoxes كالآتي :
TextBox1.Text = "this is a text property of text box"
وعلي الرغم من أننا جميعا نتعامل مع هذه الخاصيه جيدا لكن البعض لا يعلم أنها Property ولا يعرف كيفية عملها , لذلك حتي نتعلم كيفية عمل الـ Property أتبع الخطوات التاليه معي :
1- افتح الفيجوال ستوديو وأنشئ مشروع جديد باسم OOP Series - Properties in VB.NET .
2- أضف Class جديده وأظن أننا نعرف ما معني الكلاس جيدا Employee .
3- في داخل كود الـ Class اكتب الاعلان التالي :
Public Property name
ثم أضغط زر Enter وسوف تجد أنه تمت اضافة الكود ليصبح هكذا :
Public Property name() Get End Get Set(ByVal Value) End Set End Property
هذه هي الصيغه القياسيه للـ Property وتوجد صيغ أخري سنناقشها لاحقا ,,,
ستجد أن كود الـ Property ينقسم الي قسمين أساسين هما Get و Set و عن طريق هذين المقطعين نستطيع اسناد أو جلب بيانات الخاصيه name الخاصه بالـ Class Employee .
حسنا وكيف نسند بيانات الي الخاصيه ,
4- اذن يجب انشاء متغير يحمل البيانات :
Dim employee_name As String
ملحوظه : يفضل الاعلان عن المتغير قبل الاعلان عن الـ Property .
5- ثم نكتب الكود التالي في المقطع Get :
Return employee_name
وذلك حتي عندما نقوم بطلب البيانات من الـ Property تعود القيمه المسنده الي المتغير employee_name .
6- وفي المقطع Set نقوم بكتابة الكود التالي :
employee_name = Value
حيث أننا بذلك قمنا باسناد القيمه التي سيتم وضعها في المتغير employee_name الي الـ Property عن طريق الـ Parameter Value .
هكذا نكون قد انتهينا من تصميم الـ Property وهذه هي أبسط الطرق , ولكي نتعامل مع هذه الـ Property من خلال البرنامج :
7- اذهب الي الـ Form وأنشئ Object من الـ Class Employee :
Dim xx As New Employee
وأضف زرين أحدهما Set و الاخر Get ,
8- وفي كود الـ Set نكتب :
xx.name = "hazzoom"
وبذلك نكون قد أسندنا الي الخاصيه name في الكائن Employee القيمه hazzoom .
حسنا وكيف نتأكد من ذلك ,
9- ضع في كود الـ Get :
MsgBox(xx.name)
قم بتنفيذ البرنامج F5 واضغط علي Set أولا (لن يحدث شئ مرئي) ثم أضغط علي Get سوف تظهر رساله بها القيمه التي أسندناها في كود الـ Set ,
****************************************************************************
أما بالنسبه للصيغ الأخري للـ Properties , هناك بعض الخواص التي لا تسمح بعمل Set للقيمه الموجوده بها لأنها قد تسبب خطأ في التنفيذ أو ما يشبه ذلك أو لأنها بيانات ثابته لا يتم تغييرها تحت أي ظرف من الظروف , فكيف يكون انشاء مثل هذه الخواص :
ننشئ هذه النوع من الـ Properties عن طريق الاعلان عن متغير أولا يحمل قيمة الـ Property :
Dim employee_salary As Integer = 100
ثم نعلن عن الـ Property كالتالي :
Public ReadOnly Property salary
وأضغط Enter وسيتم استكمال باقي الكود , وستجد أنه لم يتم الا اضافة المقطع Get فقط لأنها الخاصيه ReadOnly , وفي كود الـ Get أضف :
Return employee_salary
ثم في كود الفورم نضع زر جديد باسم Get Salary :
MsgBox(xx.salary)
قم بتنفيذ البرنامج F5 وأضغط Get Salary وأنظر ما سيحدث :
تظهر رساله بها القيمه التي أسندناها الي المتغير employee_salary .
هناك نوع آخر من الـ Properties يكون لعرض لاسناد القيم فقط , ويتم الاعلان عنها كالتالي :
Public WriteOnly Property Address
ثم أضغط Enter فيتم استكمال باقي الكود وستجد طبعا المقطع Set فقط ,
ونعلن عن متغير لاستقبال القيمه :
Dim employee_address As String
وفي المقطع Set ضع الكود التالي :
employee_address = Value
أذهب الي الفورم وضع زر Set Address وفي حدث الضغط عليه أضف الكود التالي :
xx.Address = "Assiut-Egypt"
وبذلك نكون قد أسندنا الي الخاصيه Address القيمه Assiut-Egypt ,,,
وهذه هي الأنواع الثلاثه للـ Property ,,,
أرجو أن أكون قد وفقت في توصيل ماهية الـ Property وكيفية عملها وان كان توفيق فمن الله وان تقصير فمني والله الموفق .....,,,,
لو وجد أي خطأ ارجو تنبيهي , جزاكم الله خيرا ,,,
أرجو منكم الدعاء ...,,,

