C++المتغيرات و الدوال المشتركة
- مفهوم الأشياء المشتركة
- المتغيرات المشتركة
- الدوال المشتركة
مفهوم الأشياء المشتركة
الأشياء المشتركة ( Static Members ) عبارة عن أي شيء يتم تعريفه في الكلاس بشكل يكون موّحداً بالنسبة لجميع الكائنات التي يتم إنشاءها منه.
بشكل عام لجعل الشيئ الذي يتم تعريفه في الكلاس مشترك بين جميع الكائنات التي قد ننشئها منه نستخدم الكلمة static كما سنرى بعد قليل في الأمثلة.
فوائد الأشياء المشتركة
الأشياء المشتركة لها عدة استخدامات و فوائد فعلى سبيل المثال إذا أردت جميع الكائنات التي يتم إنشاءها من كلاس محدد تملك نفس قيمة متغير موجود في هذا الكلاس, يمكنك جعل نوع المتغير static و عندها سيصبج مشترك بين جميع الكائنات.
من ناحية الذاكرة, بما أن المتغير المشترك يكون نفسه موضوع لجميع الكائنات التي يتم إنشاؤها من نفس الكلاس, فهذا يعني أنك لو قمت بإنشاء 50 كائن من الكلاس فإنه لن يتم إنشاء 50 نسخة من المتغير في الذاكرة, بل سيكون هناك نسخة واحدة منه مشتركة بين جميع الكائنات.
في هذا الدرس سنتعرف على كيفية تعريف متغيرات و دوال مشتركة و كيفية التعامل معها.
المتغيرات المشتركة
تعريف المتغير في الكلاس كمتغير مشترك يجعلك قادر على الوصول لقيمة هذا المتغير بشكل مباشر من الكلاس, أي بدون الحاجة لإنشاء كائن منه.
عند تعريف المتغير المشترك, لا يسمح لك بإعطائه قيمة أولية بداخل الكلاس حيث أنك يجب أن تعطيه قيمة أولية خارج الكلاس.
بعد إسناد قيمة أولية للمتغير المشترك, تستطيع تغيير قيمته لاحقاً من خلال أي كائن يمكنه الوصول إليها.
المتغير المشترك يجب تعريفه على مرحتلين:
- يجب تعريفه بداخل الكلاس بدون إعطائه قيمة أولية مع الإشارة إلى أنه يجب تحديد نوعه static.
- يجب إعطاؤه قيمة أولية خارج الكلاس.
في المثال التالي, قمنا بتعريف كلاس إسمه Demo
يحتوي على متغير عادي إسمه x
و متغير مشترك إسمه y
.
المتغير المشترك y
قمنا بإعطائه 0
كقيمة أولية خارج الكلاس كما يفترض.
بعدها قمنا بإنشاء ثلاث كائنات من الكلاس Demo
و إعطاء قيمة مختلفة للمتغير x
الخاص بكل الكائن.
في النهاية قمنا بتغيير قيمة المتغير المشترك y
مرة واحدة حتى نلاحظ كيف أنها تغيرت بالنسبة لجميع الكائنات.
مثال
سنحصل على النتيجة التالية عند التشغيل.
الدوال المشتركة
فكرة الدوال المشتركة ببساطة هي تعريف دالة في كلاس يمكن استدعاءها بشكل مباشر منه بدون الحاجة لإنشاء كائن منه.
الدالة التي يتم تعريفها كدالة مشتركة يمكنها فقط التعامل مع المتغيرات المشتركة, أي التي نوعها static مثلها.
بالنسبة لطريقة تعريف دالة مشتركة فهي نفسها طريقة تعريف دالة عادية مع إضافة الكلمة static إليها.
في المثال التالي, سنستخدم متغير و دالة مشتَركين لمعرفة عدد الكائنات التي يتم إنشاؤها من الكلاس.
في البداية قمنا بتعريف كلاس إسمه Demo
يحتوي على متغير مشترك إسمه counter
و دالة مشتركة إسمها getCounter
عند استدعاءها تقوم بإرجاع قيمة المتغير counter
فقط.
في الكلاس Demo
قمنا بتعديل الكونستركتور الإفتراضي لجعله يقوم بإضافة 1
على قيمة المتغير counter
كلما تم إستدعاؤه.
بمعنى آخر, كلما قمنا بإنشاء كائن - من خلال الكونستركتور الإفتراضي - سيتم إضافة 1
على قيمة المتغير counter
و بالتالي فإن قيمة coutner
ستمثل عدد الكائنات التي يتم إنشاءها من الكلاس Demo
.
في النهاية قمنا بإنشاء ثلاث كائنات من الكلاس Demo
و من ثم إستدعاء الدالة getCounter()
لمعرفة عدد الكائنات التي تم إنشاؤها.
مثال
سنحصل على النتيجة التالية عند التشغيل.