11-10-12, 11:51 PM
منقول من المنتدى القديم
كاتب المقال احمد جمال المشرف العام
قبل ان نواصل درسنا هذا ، اول نقطة لا بد ان تضعها في ذهنك انك مبرمج وهناك مبرمج آخر هو المستخدم ... بمعنى مثلاً انك تقوم ببرمجة كلاس ويقوم زميلك المبرمج باستخدام هذا الكلاس كجزء من المشروع .
استخدام دوال public للوصول إلى متغيرات private .
لنفترض المثال التالي بخصوص ال Person الذي قمنا بانشاءه عدة مرات على مستوى الدروس السابقة :
C#:
VB.net:
ولإن زميلك العزيز في الفريق الخاص بادخال بعض البيانات بشر - وجل من لا يسهو - قام بكتابة الجملة التالية :
C#:
VB.net:
ولو ان السهو في رقم بهذا الحجم يعد شبه مستحيل ، لكننا قد نتعرض لهذه المشكلة في اشياء اقرب للواقع ، وابسط من ذلك لو انه يقوم بقراءة القيمة من المستخدم ليرسلها لك مباشرة ، وفي وجود مستخدم - غلس - فإن مثل هذه المدخلات تعد أمراً طبيعياً .
طبعاً هذا المدخل سيسبب الدمار العاجل للكلاس الذي قمت بعمله ، كما ان زميلك مبرمج شاشات الادخال ربما لن يكلف نفسه عناء برمجة امر التحقق من الادخال ، لذا تأتي النصيحة الدائمة ، امنع متغيراتك من الظهور لمستخدمها - المبرمج الآخر - وضع بدلاً منها دوال لقراءتها او الكتابة إليها بالشكل التالي :
C#:
VB.net:
طبعاً تسمية المتغيرات باسم x هو خطا كما اتفقنا سابقاً ، دالة Set ينبغي ان تأخذ الشكل التالي مثلاً :
C#:
VB.net :
وذلك حسبما تعلمنا من خصائص this أو Me في الدرس السابق ...
ربما يبدو لك الأمر مملاً او طويلاً ، لكنه مثل هذه الأمور في المشاريع الجدية تعد نقاطاً حيوية لا يمكن الاستغناء عنها لإنها قد تتسبب في سقوط للمشروع يكلف عدة ملايين بسبب خطأ بسيط .
تنبيه أخير ، الدالة GetAge يطلق عليها اسم Accessor أما الدالة SetAge فتسمى باسم Mutator .
كاتب المقال احمد جمال المشرف العام
قبل ان نواصل درسنا هذا ، اول نقطة لا بد ان تضعها في ذهنك انك مبرمج وهناك مبرمج آخر هو المستخدم ... بمعنى مثلاً انك تقوم ببرمجة كلاس ويقوم زميلك المبرمج باستخدام هذا الكلاس كجزء من المشروع .
استخدام دوال public للوصول إلى متغيرات private .
لنفترض المثال التالي بخصوص ال Person الذي قمنا بانشاءه عدة مرات على مستوى الدروس السابقة :
C#:
كود :
class Person
{
public int Age;
}كود :
Class Person
Public Age As Integer
End Classولإن زميلك العزيز في الفريق الخاص بادخال بعض البيانات بشر - وجل من لا يسهو - قام بكتابة الجملة التالية :
C#:
كود :
Person Ahmed = new Person();
Ahmed.Age = 999999999999;VB.net:
كود :
Dim Ahmed As New Person()
Ahmed.Age = 999999999999طبعاً هذا المدخل سيسبب الدمار العاجل للكلاس الذي قمت بعمله ، كما ان زميلك مبرمج شاشات الادخال ربما لن يكلف نفسه عناء برمجة امر التحقق من الادخال ، لذا تأتي النصيحة الدائمة ، امنع متغيراتك من الظهور لمستخدمها - المبرمج الآخر - وضع بدلاً منها دوال لقراءتها او الكتابة إليها بالشكل التالي :
C#:
كود :
class person
{
private int Age;
public string SetAge(int x)
{
if(x>100 || x<1)
return "you can't edit age like that";
Age=x;
return "done";
}
public int GetAge()
{
return Age;
}
}VB.net:
كود :
Class person
Private Age As Integer
Public Function SetAge(ByVal x As Integer) As String
If x > 100 OrElse x < 1 Then
Return "you can't edit age like that"
End If
Age = x
Return "done"
End Function
Public Function GetAge() As Integer
Return Age
End Function
End Classطبعاً تسمية المتغيرات باسم x هو خطا كما اتفقنا سابقاً ، دالة Set ينبغي ان تأخذ الشكل التالي مثلاً :
C#:
كود :
public string SetAge(int Age)
{
if(Age>100 || Age<1)
return "you can't edit age like that";
this.Age=Age;
return "done";
}VB.net :
كود :
Public Function SetAge(ByVal Age As Integer) As String
If Age > 100 OrElse Age < 1 Then
Return "you can't edit age like that"
End If
Me.Age = Age
Return "done"
End Functionوذلك حسبما تعلمنا من خصائص this أو Me في الدرس السابق ...
ربما يبدو لك الأمر مملاً او طويلاً ، لكنه مثل هذه الأمور في المشاريع الجدية تعد نقاطاً حيوية لا يمكن الاستغناء عنها لإنها قد تتسبب في سقوط للمشروع يكلف عدة ملايين بسبب خطأ بسيط .
تنبيه أخير ، الدالة GetAge يطلق عليها اسم Accessor أما الدالة SetAge فتسمى باسم Mutator .
