السلام عليكم ..
مقالتي اليوم يتحدث عن الخاصية Property وكيفية
برمجتها في الفيجوال بيسك
صحيح نسيت أن أقول لكم أن هذا الدرس خاص للمبتدئين ^_^
الخاصية عبارة عن صفة يحملها ذالك الكائن ( Object
) قد تأخذ متغير أو تعيد لنا قيمة
إذاً ... سيتبادر لذهنك ما لفرق بينها وبين الوظيفة ( Function ) ؟
حسنا دعني أمثل لك الخاصية بالصندوق أو الدرج .. تضع فيه شيء ما ثم
تعود لتفتحه وتقرأ ما فيه ..
إذا فهي قد تستقبل قيمه وتحفظها أو تعيد لنا قيمة محفوظة
بعكس الوظيفة (Function ) التي تعالج متغيرات
وتستدعي إجراءات معينة وتعيد لنا قيمه بعد معالجتها ( Process
) ..
حسنا فهمنا الآن مفهوم الخاصية
قد تتسائل ايضا لماذا لانتعامل مع المتغير بشكل مباشر دون تضمينه فيه
خاصية ( أي نعرف متغير بشكل Public ) ونرسل له القيمة ونقرأها
منه , ما الفائدة من الخاصية اذا ؟؟
الجواب بسيط
الخاصية لها عدة ميزات منها :
1- وضع معالجة بداخلها مثلا عندما نرسل لها رقم تزيده بواحد وتحفظه
لديها
2- امكانية استقبال اكثر من متغير وحفظهم في خاصية واحدة كخاصية الحجم
( طول و عرض )
3- امكانية تقيد نوع المدخلات بمتغيرات ذات نوع محدد مثلا خاصية
تستقبل ( نص ) فقط
أعلم أخي .. أن الخاصية من حيث القيمة ثلاث انواع
1-
خاصية (
تقبل القراءة والكتابة ) Read & Write
سنأتي عليها بالتفصيل بالأسفل
2-
خاصية (
تقبل القراءة فقط )
Read Only Property
كالتالي :
Public
ReadOnly Property
UserAccount() As Double
Get
Return
mUserAccount
End Get
End Property
لاحظ انه تم حذف الجزء الخاص بالكتابة ( Get )
3-
أخيراً
خاصية ( تقبل الكتابة فقط ) Write Only Property
Public WriteOnly Property
UserAccount() As Double
Set(ByVal value As Double)
mUserAccount = value
End Set
End Property
لاحظ انه تم حذف الجزء الخاص بالكتابة (Set )
جميل .. إلى هنا اعتقد أن الامور واضحة ..
الخاصية تنقسم بداخلها لقسمين
Get
و
Set
قد نستغني عن أحدهما حسب نوعها في الأعلى (Get تأخذ و Set تعيد الخاصية )
إذا البناء العام للخاصية كالتالي ( قراءة وكتابة )
Private
isDisigenMode As Boolean
= False
Private Property DisigenMode() As
Boolean
Get
Return
isDisigenMode
End Get
Set(ByVal value As Boolean)
isDisigenMode = value
End Set
End Property
لاحظ أولا أننا نستطيع تغير طريقة الوصول للخاصية (public أو Private )
وبشكل عام فإن Get
و Set يأخذان طريقة الوصول الأساسية للخاصية
بمعنى ابسط
عندما تكون الخاصية public فإن Get و Set
يكونان public
لكن الآن منذ إصدارة .net2 أصبح بإمكانك أن تجعل أحد أقسام الخاصية public والآخر Private أو حتى Protected مثلا..
لتقيد الوصول إليه كالتالي :
Public Property DisigenMode() As
Boolean
Get
Return
isDisigenMode
End Get
Private
Set(ByVal value
As Boolean)
isDisigenMode = value
End Set
End Property
الآن يمكنك تعريف خاصية رقمية تسميها UserAccount
وترسل لها المبلغ وتعيد قيمته في أي وقت
كالتالي:
Private
mUserAccount As Double
Public Property
UserAccount() As Double
Get
Return
mUserAccount
End Get
Set(ByVal value As Double)
mUserAccount = value
End Set
End Property
إذا ويمكننا استدعاء الخاصية كالتالي
Form1.UserAccount = Form1.UserAccount + 5.0
أخيراً أود أن أنبهك أن الخاصية تظل تحتفظ بالقيمة مادام البرنامج
يعمل على ذاكرة الجهاز ولا تحتفظ بالقيمة عند إغلاق البرنامج