الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مافائدة ال Property فى الClass مع وجود ال variable

مغلق
بدأه AHMAD FATHY في 26 أغسطس 2005 · 4 رد · 516 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

من المعروف ان الخاصية Property توضع فى ال Class ،، و تنحصر وظيفتها فى نقطتين:

1- استقبال القيم من خلال Set

2- إرجاع القيم من خلال Get

كلام جميل حتى الآن :rolleyes:

لكن نفرض اننى قمت بتعريف متغيرMember Variable فى الClass بحيث يكون ال Access Modifier الخاص به من النوع Public كالتالى

Public Name As String

الأن اذا استدعينا الclass من form عاديه

Dim X as new Class1
X.Name = "Ahmad"
Messagebox.Show (X.Name)

بذلك نجد أن ال Member Variable المسمى Name قد قام بالوظيفتين و هما : استقبال القيمه ، إرجاع القيمه

إذا ليه عاملوا لنا ال Property ?? هل هى من باب التسليه أم خفه الظل :lol:

AlexCard.gif

Business Card

Ahmad Fathy Ahmad

Computer and Systems Department

Faculty of Engineering, Alexandria University

Cellular: +2 010 1461154

E-mail: midoalx@hotmail.com

ICQ: 148481391

#2

السلام عليكم

في برمجة كائنية التوجه , و بالتحديد في منطق الكبسولة Encapsulation

هو حماية الـ member data وهو المتغير المحلي Private

من القراءة أو الكتابة بشكل مباشر و إنما يوضع تحت رقابة الخاصية المسؤولة عنه

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

إلا بخاصية, فالخاصية صممت لاجل ذلك

والتحقق غالباً ما يكون في الكتابة Set ومنهنا تختبر القيمة قبل وضعها في المتغير المحلي

فإن كانت صالحه كتبت , و إن كانت غير ذلك رفضت.

فهذه الحكمة من وجود الخاصية , والله أعلم.

في المثال يتضح المقال

#3

كما قال أخي الغملاسي، افرض أن لدي شخص عنده رقمان .. كل منها يجب أن يكون صفرا أو أكثر!

class Person{
public int publicID;
private int privateID;
public Person(int id1, int id2){
publicID=id1;
privateID=id2;
if(publicID<0) publicID = 0;
if(privateID<0)privateID=0;
}
public void setPrivateID(int id){
if(id>=0)privateID=id
}
public int getPrivateID(){
return privateID;
}
}

لاحظ أني أستطيع أن أجعل الرقم العام أقل من صفر هكذا:

Person p=new Person(30, 40);
p.publicID = -12

لكني لن أستطيع أبدا أن أفعل هذا بالثاني:

Person p =new Person(30,40);
p.privateID = -20;// لا أستطيع الدخول من هنا لأنها خاصة
p.setPrivateID(-10);
//اطبع نتيجة الخاص:
Console.Write(p.getPrivateID());

لاحظ أن القيمة الخاصة لم تتغير إلى السالب!!

بالتوفيق!

#4

نعم سؤالك قد يتبادر الى ذهن أي شخص يرى الخصائص يعني امر محير (طبعا ذا لم تكن قد قرأت حول ال OOP من قبل) كيف يعملون لنا ال Get و ال Set في حين متغير عام واحد في سطر واحد يمكن يعمل لنا كل هذا !!!! لكن و كما تفضل الاخوة البرمجة بال OOP تعطيك تحكم أكبر في معلوماتك و الكلاس الخاص بك لدرجة تحكمك في المدخلات بطريقة بسيطة كاللتي تفضل بذكرها الاخوة

و انا احيلك الى كتاب جميل في تعريفه لل OOP اقرأه و ان شاء الله تستفيد منه

MS Press - OOP with Microsoft VB.NET and C# Step By Step.pdf

/index.ph...topic=70127&hl=

و السلام عليكم

تم تعديل هذه المشاركة بواسطة crazy-man في 27 أغسطس 2005 في 06:07

#5

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

جزاكم الله خيراً أخوانى شرح ممتاز و معلومات قيمه..

إذن نخلص من ذلك بالقول ان استخدام الProperty يمنحنا القدرة فى التحكم فى المدخلات ،، بمعنى قبول قيم اذا كانت صالحه و رفض الغير صالحة و ذلك داخل جمله SET و بكل صراحه هذا فرق هام جدا جدا للاسف لم الأحظه

و جزاكم الله خيراً

AlexCard.gif

Business Card

Ahmad Fathy Ahmad

Computer and Systems Department

Faculty of Engineering, Alexandria University

Cellular: +2 010 1461154

E-mail: midoalx@hotmail.com

ICQ: 148481391

هذا الموضوع مغلق.

مواضيع مشابهة