في هذا الموضوع سنشرح مفهوم الوراثة (Inheritance) بالتفصيل في لغة السي بلس بلس…
هل تبحث عن طريقة تسهل عليك إعادة استخدام الشفرة وزيادة كفاءة برامجك في لغة السي بلس بلس؟ هل تود أن تكتشف أداة قوية تسمح لك ببناء هيكلة برمجية تعتمد على العلاقات بين الكائنات؟ إذاً، فإن الوراثة (Inheritance) هي ما تبحث عنه!
في عالم البرمجة الموجهة كائنيًا، يعد الوراثة أحد المفاهيم الأساسية والقوية التي تتيح لك إنشاء تفاعلات مثيرة بين الكائنات وتعزيز إعادة استخدام الشفرة. بفضل الوراثة، يمكنك إنشاء هيكلة تتألف من فئات متعددة، حيث يمكن لفئة واحدة أن ترث السمات والسلوكيات من فئة أخرى.
تخيل أن لديك تطبيقًا يتعامل مع الحيوانات، فمع الوراثة، يمكنك إنشاء فئة أساسية تسمى “الحيوان” تحتوي على سمات وسلوكيات عامة مثل الاسم والعمر والصوت. ثم يمكنك إنشاء فئات مشتقة من “الحيوان” مثل “الكلب” و”القطة” و”الطائر”، حيث يرث كل منها السمات العامة من الفئة الأساسية، وبإمكانها إضافة سمات وسلوكيات خاصة بها.
باستخدام الوراثة، يمكنك أيضًا استدعاء الدوال الموجودة في الفئة الأساسية مباشرة من الفئات المشتقة، مما يوفر لك الوقت والجهد في إعادة كتابة الشفرة المتكررة. يمكنك أيضًا تعديل وتخصيص السلوكيات الموروثة حسب احتياجاتك الخاصة.
باستخدام الوراثة بشكل صحيح، يمكنك بناء هيكلة برمجية قابلة للتوسع والصيانة بسهولة، وتحقيق مفهوم هام في البرمجة الموجهة كائنيًا وهو “التعددية” (Polymorphism).
إذا كنت تبحث عن طريقة لتحسين تنظيم وكفاءة برامجك، فإن الوراثة (Inheritance) في لغة السي بلس بلس هي الأداة التي تحتاجها. استعد لاكتشاف قوة الوراثة وكيف يمكن لها تحويل برامجك إلى مستوى جديد من الابتكار والإنتاجية!
الوراثة (Inheritance) في لغة السي بلس بلس
الوراثة (Inheritance) في لغة السي بلس بلس هي مفهوم يسمح لك بإنشاء فئات جديدة تستند إلى فئات موجودة، مما يسمح بإعادة استخدام الشفرة وبناء هيكلة برمجية مترابطة وهي واحدة من المفاهيم الأساسية في البرمجة الموجهة كائنيًا.
عند استخدام الوراثة، تكون لديك فئة أساسية تُعرف أيضًا بالفئة الأم (Base Class) أو الفئة الفوقية (Super Class)، ويمكنك إنشاء فئات مشتقة (Derived Classes) من هذه الفئة الأساسية. ترث الفئات المشتقة سمات وسلوكيات الفئة الأساسية، مما يعني أنها تحتوي على نفس البيانات العضوية (Member Data) والدوال العضوية (Member Functions). يمكنك أيضًا إضافة سمات ودوال إضافية في الفئات المشتقة وتعديل السلوك الوراثي حسب الحاجة.
لتعريف فئة مشتقة من فئة أساسية في لغة السي بلس بلس، يتم استخدام الكلمة المفتاحية “class” مع اسم الفئة المشتقة، ثم تأتي رمزي القوسين الفتحة والقفلة لتحتوي على السمات والدوال العضوية للفئة المشتقة. يتم استخدام الكلمة المفتاحية “public” أو “private” أو “protected” قبل تعريف الفئة المشتقة لتحديد نطاق وراثة السمات والدوال من الفئة الأساسية. على سبيل المثال:
class BaseClass {
public:
// سمات ودوال الفئة الأساسية
};
class DerivedClass : access-specifier BaseClass {
public:
// سمات ودوال الفئة المشتقة
};
تعزز الوراثة في السي بلس بلس فهمك لمفهوم التعددية (Polymorphism) والتعامل مع الفئات والكائنات بشكل أكثر مرونة. يمكنك استخدام الوراثة لبناء هيكلة برمجية تسهل الصيانة وتوسيع البرامج، حيث يمكنك استخدام الشفرة المشتركة في الفئة الأساسية وتخصيصها في الفئات المشتقة.
تذكر أنه في الوراثة، تكون الفئات المشتقة ترث السمات والدوال العضوية بالكامل من الفئة الأساسية. ويمكن أن يكون لديك أي عدد من الفئات المشتقة من الفئة الأساسية، ويمكن أيضًا للفئة المشتقة أن تكون فئة أساسية لفئات أخرى.
الوراثة في لغةالسي بلس بلس توفر لك قوة ومرونة في بناء برامجك، لذا لا تتردد في استخدام مفهوم الوراثة لتحسين تنظيم الشفرة وزيادة إعادة استخدامها.
مثال توضيحي يطبق مفهوم الوراثة
هذا مثال بسيط يوضح كيفية تطبيق مفهوم الوراثة في لغة السي بلس بلس.
والطيور والزواحف. سنبدأ بإنشاء فئة أساسية تسمى “Animal” تحتوي على سمة عامة لجميع الحيوانات وهي الاسم. ثم سننشئ فئات مشتقة من “Animal” وهي “Mammal” و “Bird” و “Reptile”، حيث سترث كل فئة مشتقة السمة العامة من الفئة الأساسية.
إليك الشفرة التوضيحية:
#include <iostream>
#include <string>
class Animal {
protected:
std::string name;
public:
Animal(const std::string& name) : name(name) {}
void eat() {
std::cout << name << " is eating." << std::endl;
}
};
class Mammal : public Animal {
public:
Mammal(const std::string& name) : Animal(name) {}
void giveBirth() {
std::cout << name << " gives birth to live young." << std::endl;
}
};
class Bird : public Animal {
public:
Bird(const std::string& name) : Animal(name) {}
void layEggs() {
std::cout << name << " lays eggs." << std::endl;
}
};
class Reptile : public Animal {
public:
Reptile(const std::string& name) : Animal(name) {}
void crawl() {
std::cout << name << " is crawling." << std::endl;
}
};
int main() {
Mammal lion("Lion");
Bird eagle("Eagle");
Reptile snake("Snake");
lion.eat(); // Output: Lion is eating.
lion.giveBirth(); // Output: Lion gives birth to live young.
eagle.eat(); // Output: Eagle is eating.
eagle.layEggs(); // Output: Eagle lays eggs.
snake.eat(); // Output: Snake is eating.
snake.crawl(); // Output: Snake is crawling.
return 0;
}
في هذا المثال، قمنا بإنشاء فئة “Animal” التي تحتوي على السمة العامة لجميع الحيوانات وهي الاسم. ثم قمنا بإنشاء فئات مشتقة “Mammal” و “Bird” و “Reptile”، حيث استفدنا من الوراثة لتوريث السمة العامة من الفئة الأساسية “Animal”.
في الدالة الرئيسية، قمنا بإنشاء كائنات “lion” من الفئة “Mammal” و “eagle” من الفئة “Bird” و “snake” من الفئة “Reptile”. ثم استخدمنا الدوال الموروثة من الفئة الأساسية “Animal” مثل “eat()”، بالإضافة إلى دوال مخصصة لكل فئة مشتقة مثل “giveBirth()” للثدييات و”layEggs()” للطيور و”crawl()” للزواحف.
عند تشغيل البرنامج، ستظهر النصوص المطبوعة التي توضح الأنشطة المرتبطة بكل حيوان وفئته.
هذا المثال يوضح كيفية استخدام الوراثة لتجميع السممعلومات المشتركة في فئة أساسية وتوسيعها في فئات مشتقة. بواسطة توريث الفئات المشتقة من الفئة الأساسية، يمكننا إنشاء هيكلة برمجية تسهل إضافة حيوانات جديدة في المستقبل والتعامل معها بطريقة منظمة ومنطقية.
هذا والسلام عليكم ورحمة الله وبركاته…
( لا تنسا مشاركة الموضوع ليستفيد غيرك )