دروس الوحدة (1/2)
الميراث في C++
الوراثة هي إحدى الركائز الأساسية للبرمجة الشيئية (OOP). فهو يسمح لفئة جديدة (تسمى الفئة المشتقة أو التابعة) بوراثة الأعضاء (السمات والأساليب) من فئة موجودة (تسمى الفئة الأساسية أو الأصل)، مما يعزز إعادة استخدام التعليمات البرمجية.
بناء الجملة الأساسي
في لغة C++، يتم تحديد الوراثة باستخدام عامل التشغيل : بعد اسم الفئة المشتقة، متبوعًا بمحدد الوصول (عادةً public) واسم الفئة الأساسية.
class Shape {
public:
void setColor(std::string c) {
color = c;
}
protected:
std::string color; // Accessible by derived classes
};
// Rectangle inherits publicly from Shape
class Rectangle : public Shape {
public:
double getArea() {
return width * height;
}
private:
double width {0.0};
double height {0.0};
};محدد الوصول: protected
بالإضافة إلى public وprivate، يقدم الوراثة المحدد protected:
privateأعضاء الفئة الأساسية لا يمكن الوصول إليهم مباشرة من الفئة المشتقة.protectedأعضاء الفئة الأساسية لا يمكن الوصول إليهم من الخارج، ولكن يمكن الوصول إليهم مباشرة داخل الفئات المشتقة.
تهيئة الفئة الأساسية
لا يتم توريث المنشئين تلقائيًا. عند إنشاء فئة مشتقة، يتم استدعاء مُنشئ الفئة الأساسية أولاً. إذا كانت الفئة الأساسية تتطلب وسيطات، فيجب علينا استدعاؤها بشكل صريح في قائمة مُهيئات الأعضاء الخاصة بالمُنشئ المشتق.
class Parent {
public:
Parent(int x) {
std::cout << "Parent: " << x << std::endl;
}
};
class Child : public Parent {
public:
// Explicit call to Parent constructor
Child(int x, int y) : Parent(x) {
std::cout << "Child: " << y << std::endl;
}
};جربه بنفسك
قم بإنشاء فئة كلب ترث بشكل علني من فئة الحيوان. يجب أن تتضمن فئة Dog طريقة اللعب العامة () التي تطبع "التشغيل" باستخدام std::cout.
إظهار التلميح
استخدم بناء الجملة `:` متبوعًا بـ`public Animal` لتوسيع الفئة الأساسية، ثم اكتب طريقة `play()`.
الحل متاح بعد 3 من المحاولات
أكمل فئة السيارة عن طريق الوراثة من السيارة. اكتب منشئًا للسيارة يقبل std::string b وقم بتمريره إلى منشئ السيارة عبر قائمة مُهيئات الأعضاء.
إظهار التلميح
في مُنشئ `Car`، استخدم بناء الجملة `: Vehicle(b)` مباشرةً بعد قوسي المعلمة لتفويض تهيئة العلامة التجارية إلى الفئة الأساسية.
الحل متاح بعد 3 من المحاولات