معدلات الوصول (Access modifiers) في السي بلس بلس
معدلات الوصول (Access modifiers) في CPP
استعد لدخول عالمٍ مليء بالقوة والتحكم والسرية في لغة البرمجة الشهيرة، السي بلس بلس (C++). سنقدم لك اليوم موضوع يدور حول معدلات الوصول (Access modifiers) في لغة السي بلس بلس.
عندما تخوض رحلةً في برمجة السي بلس بلس، ستدرك أن القدرة على التحكم في الوصول إلى الأجزاء المختلفة من برنامجك هي مفتاح النجاح. إن معدلات الوصول تسمح لك بتحديد من يمكنه الوصول إلى المتغيرات والدوال والكلاسات التي تنشئها، ومن يجب أن يظل محظورًا عنها.
تختلف معدلات الوصول (Access modifiers) في لغة السي بلس بلس بين public و private و protected، ولكل منها دورها الخاص في إنشاء برامج قوية وآمنة. ستتعلم كيفية استخدام هذه المعدلات بشكل صحيح لتحقيق أهدافك في البرمجة وتجنب المشاكل المحتملة.
خلال هذه الرحلة المشوقة، ستكتشف أسرار تنظيم الوصول وتأثيرها على التطوير البرمجي. ستتعلم كيفية تحديد معدلات الوصول المناسبة للمتغيرات والدوال والكلاسات، وكيفية الاستفادة منها في تحقيق أداءٍ ممتاز وصيانةٍ سهلة لبرامجك.
معدلات الوصول (Access modifiers) في السي بلس بلس
معدلات الوصول (Access modifiers) هي مفهوم أساسي في لغة البرمجة السي بلس بلس (C++)، وتستخدم لتحديد مدى وصول العناصر المختلفة في البرنامج. تساعد معدلات الوصول على تنظيم وتحكم في الطريقة التي يتم بها الوصول إلى المتغيرات والدوال والكلاسات.
هناك ثلاثة أنواع رئيسية لمعدلات الوصول في السي بلس بلس:
Public:
معدل الوصول public في لغة السي بلس بلس يسمح بالوصول الكامل إلى العنصر من أي مكان في البرنامج، بما في ذلك الكلاس الرئيسي والكلاسات الأخرى والدوال الخارجية. يسمح للمتغيرات العامة (public variables) بأن تكون قابلة للقراءة والكتابة من أي مكان، ويسمح للدوال العامة (public functions) بأن تكون متاحة للاستدعاء والاستخدام بحرية.
لتعريف متغير أو دالة بمعدل الوصول public في السي بلس بلس، يتم وضع الكلمة المفتاحية “public” قبل تعريف العنصر. إليك بعض الأمثلة التوضيحية:
مثال على متغير عام (public variable):
class MyClass {
public:
int publicVariable; // متغير عام
};
int main() {
MyClass obj;
obj.publicVariable = 10; // يمكن الوصول إلى المتغير العام من أي مكان
return 0;
}
في المثال أعلاه، تم تعريف متغير publicVariable
كمتغير عام داخل الكلاس MyClass
. يمكن الووصول إليه وتعديل قيمته من داخل الكلاس الرئيسي أو أي مكان آخر في البرنامج.
مثال على دالة عامة (public function):
class MyClass {
public:
void publicFunction() {
// تنفيذ الكود هنا
}
};
int main() {
MyClass obj;
obj.publicFunction(); // يمكن استدعاء الدالة العامة من أي مكان
return 0;
}
في المثال أعلاه، تم تعريف دالة publicFunction
كدالة عامة داخل الكلاس MyClass
. يمكن استدعاء الدالة واستخدامها من داخل الكلاس الرئيسي أو أي مكان آخر في البرنامج.
مع معدل الوصول public، يتم تحقيق مرونة كبيرة في استخدام العناصر والتعامل معها في السي بلس بلس، حيث يمكن الوصول إليها واستخدامها بسهولة من أي مكان في البرنامج.
private:
معدل الوصول private في السي بلس بلس يحد من الوصول إلى العنصر. يسمح بالوصول إليى من داخل الكلاس نفسه فقط، ولا يسمح بالوصول إليه من خارج الكلاس. يستخدم عادة لحماية التفاصيل الداخلية وضمان عدم الوصول إليها بشكل مباشر. يمكن للمتغيرات الخاصة (private variables) أن تكون قابلة للقراءة والكتابة فقط داخل الكلاس نفسه، ويمكن استدعاء الدوال الخاصة (private functions) فقط من داخل الكلاس.
لتعريف متغير أو دالة بمعدل الوصول private في السي بلس بلس، يتم وضع الكلمة المفتاحية “private” قبل تعريف العنصر. إليك بعض الأمثلة التوضيحية:
مثال على متغير خاص (private variable):
class MyClass {
private:
int privateVariable; // متغير خاص
public:
void setPrivateVariable(int value) {
privateVariable = value;
}
int getPrivateVariable() {
return privateVariable;
}
};
int main() {
MyClass obj;
obj.setPrivateVariable(10); // يمكن تعيين قيمة المتغير الخاص من داخل الكلاس
int value = obj.getPrivateVariable(); // يمكن الحصول على قيمة المتغير الخاص من داخل الكلاس
return 0;
}
في المثال أعلاه، تم تعريف المتغير privateVariable
كمتغير خاص داخل الكلاس MyClass
. يمكن الوصول إلى المتغير وتعديل قيمته من داخل الكلاس باستخدام الدوال setPrivateVariable
و getPrivateVariable
، ولكنه غير قابل للوصول مباشرة من الخارج.
مثال على دالة خاصة (private function):
class MyClass {
private:
void privateFunction() {
// تنفيذ الكود هنا
}
public:
void publicFunction() {
privateFunction(); // يمكن استدعاء الدالة الخاصة من داخل الكلاس
}
};
int main() {
MyClass obj;
obj.publicFunction(); // يمكن استدعاء الدالة العامة التي تقوم بالاستدعاء الداخلي للدالة الخاصة
return 0;
}
في المثال أعلاه، تم تعريف الدالة privateFunction
كدالة خاصة داخل الكلاس MyClass
. يمكن استدعاءها فقط من داخل الكلاس نفسه، ولكنها غير متاحة للاستدعاء من الخارج. يتم استدعاء الدالة الخاصة بواسطة الدالة العامة publicFunction
التي يمكن استدعاؤها من الخارج.
مع معدل الوصول private، يمكنك حماية التفاصيل الداخلية للكلاس والتحكم في كيفية الوصول إليها وتعديلها، مما يسهم في تطوير برامج آمنة وموثوقة.
protected:
معدل الوصول protected في لغة السي بلس بلس معدل الوصول protected يسمح بالوصول إلى الأعضاء (المتغيرات والدوال) من داخل الكلاس نفسه وأيضًا من داخل الكلاسات المشتقة (subclasses). على عكس الوصول العام (public)، لا يُسمح بالوصول إلى الأعضاء المحمية (protected) من خارج الكلاس.
لتعريف متغير أو دالة بمعدل الوصول protected في السي بلس بلس، يتم وضع الكلمة المفتاحية “protected” قبل تعريف العنصر. إليك بعض الأمثلة التوضيحية:
مثال على متغير محمي (protected variable):
class BaseClass {
protected:
int protectedVariable; // متغير محمي
};
class DerivedClass : public BaseClass {
public:
void setProtectedVariable(int value) {
protectedVariable = value; // يمكن الوصول إلى المتغير المحمي من الفصيلة المشتقة
}
int getProtectedVariable() {
return protectedVariable; // يمكن الوصول إلى المتغير المحمي من الفصيلة المشتقة
}
};
int main() {
DerivedClass obj;
obj.setProtectedVariable(10); // يمكن تعيين قيمة المتغير المحمي من الفصيلة المشتقة
int value = obj.getProtectedVariable(); // يمكن الحصول على قيمة المتغير المحمي من الفصيلة المشتقة
return 0;
}
في المثال أعلاه، تم تعريف المتغير protectedVariable
كمتغير محمي داخل الكلاس الأساسي BaseClass
. يمكن الوصول إليه وتعديل قيمته من الفصيلة المشتقة DerivedClass
، ولكنه غير متاح للاستخدام من الخارج.
مثال على دالة محمية (protected function):
class BaseClass {
protected:
void protectedFunction() {
// تنفيذ الكود هنا
}
};
class DerivedClass : public BaseClass {
public:
void callProtectedFunction() {
protectedFunction(); // يمكن استدعاء الدالة المحمية من الفصيلة المشتقة
}
};
int main() {
DerivedClass obj;
obj.callProtectedFunction(); // يمكن استدعاء الدالة المحمية من الفصيلة المشتقة
return 0;
}
في المثال أعلاه، تم تعريف الدالة protectedFunction
كدالة محمية داخل الكلاس الأساسي BaseClass
. يمكن استدعاءها فقط من الفصيلة المشتقة DerivedClass
، ولكنها غير متاحة للاستدعاء من الخارج.
مع معدل الوصول protected، يمكنك توفير وصول محدود للعناصر داخل الهرم التراثي، حيث يكون للكلاس الأساسي والفصائل المشتقة الوصول إلى العناصر المحمية. هذا يسهم في تنظيم الكود في برنامجك وتحقيق مستوى من الحماية والتجربة.
هذا والسلام عليكم ورحمة الله وبركاته…
( لا تنسا مشاركة الموضوع ليستفيد غيرك )