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

ماهي فائدة Protected في الكلاس من حيث الامان والاشياء الاخرى

بدأه 852147 في 3 يوليو 2008 · 8 رد · 2,908 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تطرقت الى البرمجة الكائنبة حرفا حرفا الا انه واجهني مستوى الحماية المحمي protected

فهل هو نفسه المستوى private

ممكن شرحه بالتفصيل مع الفرق بينه وبين private

شكرا مسبقا

تم تعديل هذه المشاركة بواسطة 852147 في 3 يوليو 2008 في 17:52

#2

الفرق في مستوى الوصول :

public : يمكن الوصول للمتغيرات او الدوال من داخل الصف , من الصفوف المشتقة , من اي مكان بالبرنامج .

Protected : يمكن الوصول للمتغيرات او الدوال من داخل الصف , من الصفوف المشتقة .

Private : يمكن الوصول للمتغيرات او الدوال من داخل الصف .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

شكرا جزيلا ولكن ممكن الشرح أكثر

خاصة private و protected

عذرا اذا كنت ثقيل الظل

#4

راجع اخي هذه الموضوع , ستتضح لك الامور بشكل افضل .

/index.php?showtopic=151459

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#5

إليك هذا المثال :

class A
{
public:
	A(int ,int ,int );
	void Print();
	int x;
private:
	int y;
protected:
	int z;
};
A::A(int a,int b,int c)
{x=a;y=b;z=c;}

void A::Print()
{cout<<"X= "<<x<<"\n Y= "<<y<<"\n Z= "<<z<<endl;}

class B:public A
{
public:
	B(int,int,int);
	void Sum();
};

B::B(int a,int b,int c):A(a,b,c){}

void B::Sum()
{
	cout<<x+z<<endl;
//  cout<<x+y<<endl;   Error
}

main()
{
	A a(1,2,3);
	cout<<a.x<<endl;

//	cout<<a.y<<endl;   Error
//	cout<<a.z<<endl;   Error

	a.Print();

/////////////////////////////////////////////////////
	B b(1,5,3);
	b.Sum();


return 0;
}

اولا : اذا كانت الدالة او المتغير Public او private او Protected جميعها تستيطع الوصول لها من داخل الصف ( Class)

على سبيل المثال الدالة Print استطاعت ان تتعامل مع المتغير x وهو public والمتغير y وهو Private والمتغير z وهو protected .

ثانيا: اذا كانت الدالة او المتغير Public او Protected فقط تستطيع الوصول لها من خلال الصفوف المشتقة اما Private فلا .

على سبيل المثال :

داخل الصف B المشتق من الصف A استطاعت الدالة Sum ان تتعامل مع المتغير X وهو Public والمتغير Z وهو Protected ولكن اذا حاولت ان تتعامل مع المتغير y والذي هو Private فسيحدث خطأ .

ثالثا : اذا كانت الدالة او المتغير Public فقط تستطيع الوصول لها داخل اي مكان في البرنامج اما Private او Protected فلا .

على سبيل المثال :

داخل الدالة Main استطعنا ان نطبع قيمة المتغير x وهو Public اما y وهو Private اوZ وهو Protected فلن تستطيع التعامل معها .

ايضا استطعنا ان نستعدي الدوال Sum و Print وهي جميعها Public .

اذا الخلاصة :

Public : تستطيع الوصول للمتغيرات او الدوال من داخل الصف او من خلال الصفوف المشتقة او من اي مكان بالبرنامج.

Protected: تستطيع الوصول للمتغيرات او الدوال من داخل الصف او من خلال الصفوف المشتقة فقط.

Private: تستطيع الوصول للمتغيرات او الدوال من داخل الصف فقط .

تحياتي .

تم تعديل هذه المشاركة بواسطة time1 في 3 يوليو 2008 في 18:49

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#6

تعرف أن الفئات في c++ يمكن أن تشتق من فئات أخري سابقة لها

بالنسبة ل Public فهي كلمة مفتاحية تشير إلي أن المتغير أو الوظيفة التي تعرفها سوف تكون متاحة لجميع الأجزاء الأخري في البرنامج

أما private فهي تعني أن المتغير أو الوظيفة التي تعرفها لن تكون متاحة سوي داخل الفئة التي تعرفها فيها وفقط ، وإذا اشتققت فئة أخري من هذه الفئة الأم فحتي هذه لن تستطيع الوصول لهذا المتغير ال private

أما protected وهي كلمة بالمناسبة ليس لها أي علاقة بالحماية أو الأمن ، هي مجرد كلمة تعني أن المتغير أو الوظيفة التي تعرفها غير متاحة سوي داخل الفئة التي تعرفها فيها فقط وتكون متاحة أيضًا للفئات المشتقة من هذه الفئة الأم

#7

أولا شكرا جزيلا على توضيح الفرق

ولكن لى تعقيب بسيط وهو : ياريت لو سمحت (أو لأى شخص يريد التعامل فى البرمجة) يكون الشرح على الأقل بمصطلحات اللغة الإنجليزية المتداولة فى البرمجة

مثال بدلا من ان نقول (عضو) نقول (member)

أو بدلا من قول (الكائنات) نقول (objects)

وقس على هذا

حتى لا نتوه وسط الكلام العربى اللى يبرجل ويصيب الشرح بالركاكة وضعف وصعوبة توصيل المعلومة

انا حبيت أنبه على الموضوع ده للفت الانتباه فقط

وشكـــــــــــــــــــــــــــرا جزيـــــــــــــــــــــــــــــــــــــلا

لا إله إلا الله وسبحان الله وبحمده عدد خلقه وزنة عرشه ومداد كلماته وعدد أوراق الشجر وذرات المطر

Our life is a program .. We make Syntax errors

Allah protect us from run time errors

#8

الشرح الإنكليزي تجده في المواقع الإنكليزية

#9

شكرا لكم على المرور

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…