ماڈیول اسباق (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;
}
};خود ہی آزمائیں۔
ایک ڈاگ کلاس بنائیں جو عوامی طور پر جانوروں کی کلاس سے وراثت میں ملتی ہے۔ ڈاگ کلاس میں ایک عوامی پلے() طریقہ شامل ہونا چاہیے جو std::cout کا استعمال کرتے ہوئے 'Playing' پرنٹ کرتا ہے۔
اشارہ دکھائیں۔
بیس کلاس کو بڑھانے کے لیے `:` نحو کے بعد `پبلک اینیمل` کا استعمال کریں، پھر `play()` طریقہ لکھیں۔
3 کوششوں کے بعد حل دستیاب ہے۔
گاڑی سے وراثت حاصل کرکے کار کی کلاس مکمل کریں۔ کار کے لیے ایک کنسٹرکٹر لکھیں جو std::string b کو قبول کرے اور اسے ممبر انیشیلائزر لسٹ کے ذریعے وہیکل کنسٹرکٹر کو بھیجے۔
اشارہ دکھائیں۔
'کار' کنسٹرکٹر میں، برانڈ کی ابتداء کو بیس کلاس میں تفویض کرنے کے لیے پیرامیٹر قوسین کے فوراً بعد نحو کا استعمال کریں: گاڑی(b)'۔
3 کوششوں کے بعد حل دستیاب ہے۔