ماهو الفرق بين public و private في C++ oop part 4

الكاتب: Mr.Aziz

تاريخ النشر: 2022-04-13 23:58:04

مساء الخير

 

اليوم راح اشرح لكم  ثلاث أنواع تكون موجوده في الكلاس بشكل عام.

 

أفتراضيآ يصبح private اذا لم تضع كلمة public في الكلاس تمام

 

في ثلاث أنواع

1- public: بأمكانك استدعاء المتغيرات أو الدوال الى خارج الكلاس لامانع به. مثلآ استخدامه في main او اي مكان اخر

2- private: لايمكنك أستدعاء اي متغيرات او الدوال الى خارج كلاس.

3- protected: هذا لايسمح لك او لايمكنك استدعاء اي متغير او دوال الى خارج الكلاس ألا من خلال كلاسات inherited فقط. راح نشرح عنها بالمقال مع inherited

 

خلينا نطبق مع public تمام.

 

تنكتب بهذي طريقة

 

أول شي ننشئ كلاس بأسم myclass

ثم من داخل نكتب public:

بعد كذا نقدر نكتب اي متغيرات او دوال

مثلآ انا كتبت

int number;

كذا كتبت نوع المتغير هو ارقام تمام

 

ألان نجي في main هل يتم استقباله او لا؟

 

خلينا ندخل قيمة ثم نطبع نشوف وش يصير.

 

 

زي ماعملنا أول شي اسم كلاس ثم object

 

بعد كذا  كتبنا اسم object ثم نقطة و بعدها كتبنا اسم المتغير التي متواجد في الكلاس من صف public

و بعد كذا كتبنا طباعة يطبع نفس المتغير.

 

زي ماهو موضح طبع لنا رقم القيمة التي مخزنة بالمتغير نفسه. كذا تمام

 

ألان نجي على private :

 

زي ماكتبنا هنا أول شي كتبنا private

بعدها تحت كتبنا اسم المتغير هو num

كذا تمام

 

ولكن سؤال؟

لما كتبنا في main كذا

theobj.num = 4

هل بتكون صحيح أو لا؟

 

خلينا نجرب

 

ألاجابة: لن تضبط ليش؟ لانه المتغير نفسه موجود في private وليس public حتى في Error وضح هذا الشئ.

وايضآ وجوده في private تعني لايسمح بتواصل معاه او استدعاءه الى خارج الكلاس نهائيآ.

 

ولكن في طريقة نقدر نسويها و تضبط كيف؟

 

أول شي نجي عند public  ونعمل دالة بحيث يتم تمرير المتغير num في برايفت على المتغير التي موجود بالدالة

 

كذا

 

زي ماتلاحظون تحت public

كتبنا أسم الدالة numb1

 

ثم انشأنا اسم المتغير x بحيث يتم تمرير القيمة موجوده من خلال x الى num

 

داخل الدالة كتبنا أول شي المتغير التي موجوده في private

 

بعد كذا يساوي و ثم المتغير التي موجود في parameter تبع الدالة زي ماهو موضح

 

طيب نجي في main كيف نكتبها؟؟

 

كذا

كذا كتبنا في main

 

اسم obj ثم نقطة ثم اسم الدالة التي تم كتابتها في الكلاس

 

theobj.num1(3)

الرقم بين القوسين هذا القيمة التي راح يتم تخزينها في num الموجوده في private

 

هذا map كيف بتكون

 

 

1- أستقبال القيمة من المستخدم هو 4 وبعد كذا يذهب الى parameter المتغير هو x

2- بعد ما x استقبل القيمة و اصبح هو 4. حان الوقت يتم نقل القيمة من x الى num بسبب وجود يساوي  num = x

3- num ألان لديه القيمة رقم 4 ويتم تخزينها و حفظه بالامان في private

 

هذا فكرة private بشكل عام

 

بس لحظة عبدالعزيز باقي الطباعة؟

 

الطباعة ماراح تطبع نفس طريقة الى فوق ليش؟ لانه تحتاج نعمل لها Return يجي شي اسمه Encapsulation راح اشرح عنها بأذن الله لانه مخصص له

 

خلينا نجرب نشوف وش يصير.

 

زي ماتلاحظون ظهر خطأ بسبب الدالة هي أصلآ void وليس int و تحتاج ايضآ نعمل لها Return

 

لهذا سبب قلت لكم هذا جزء مع Encapsulation و راح اشرح عنها بالتفصيل أن شاءالله..

 

أشوفكم بالدرس القادم.