در این قسمت تیم کدگیت را با آموزش ارث بری در c++ همراهی کنید. ابتدا با توصیف ارثبری آموزش را آغاز میکنیم و سپس با زدن مثال و پیاده سازی آن، آموزش را به اتمام میرسانیم. پیشنهاد میشود آموزشهای ابتدایی سی پلاس پلاس را قبل از ادامه این آموزش، مطالعه کنید.
ارث بری در c++
در آموزش گذشته در مورد شیگرایی در سی پلاس پلاس صحبت کردیم. در این آموزش به ادامه مبحث شی گرایی با عنوان ارثبری میپردازیم. فرض کنید میخواهیم برنامهای بنویسیم که با استفاده از شی گرایی حیوانات مختلفی را در برنامه ایجاد کند. اولین ایده که به ذهن ما میرسد این است که تمام حیوانات را به صورت کلاس توصیف کنیم به عنوان مثال زنبور عسل و ویژگیهای آن یک کلاس و به همین صورت برای گربه و …. .هر حیوان یک نام دارد و یک سن. اگر در کلاس خود این متغیرها را تعریف کنیم باید دقیقا برای تمامی حیوانات این متغیرها را ایجاد کنیم. اگر بخواهیم متغیری مانند رنگ را اضافه کنیم باید دوباره کد رنگ را در تمامی کلاسها بزنیم. این کار احتمال خطا در برنامه را بالا میبرد.
راه حل مشکل بالا استفاده از ارثبری در c++ است. همانطور که از نام ارثبری نیز پیداست دو کلاس میتوانند از یکدیگر ارثبری کنند. قبل از توضیح بیشتر در مورد ارث بری، کلمات کلیدی را معرفی میکنیم.


کلمات کلیدی ارث بری در c++
در ارث بری با یک سری کلمات جدید آشنا میشویم و به همین دلیل یک قسمت جداگانه برای معرفی این کلمات قرار دادیم. کلمات کلیدی به صورت زیر هستند:
- کلاس پدر: اگر کلاس X از کلاس Y ارث بری کند کلاس Y را کلاس پدر میگوییم.
- کلاس فرزند: اگر کلاس X از کلاس Y ارث بری کند کلاس X را کلاس فرزند میگوییم.
مثال ارث بری در سی پلاس پلاس
در قسمت قبل در مورد برنامهای که با استفاده از شی گرایی حیوانات را ایجاد کند صحبت کردیم. در این قسمت این مثال را با استفاده از شیگرایی حل میکنیم. کلاسی به نام Animal میسازیم این کلاس نقش کلاس پدر دارد. کلاسهایی فرزندی که کلاس Animal را ارث بری میکنند شامل Cow، Ant و Dog هستند. کد این مثال به صورت زیر میباشد:
class Animal{
public:
string name;
int age;
};
class Cow:public Animal{
public:
void eat(){
cout<<name<< " is eating"<<endl;
}
};
class Ant:public Animal{
public:
void work(){
cout<<name<< " is Working"<<endl;
}
};
class Dog: public Animal{
public:
void play(){
cout<<name<< " is playing"<<endl;
}
};
int main() {
Dog d;
d.name = "dog";
d.age = 2;
d.play();
Ant a;
a.name = "ant";
a.age = 1;
a.work();
return 0;
}
در کد بالا درون کلاس Animal دو متغیر عمومی به نام name و age معرفی کردیم. همچنین برای معرفی کلاس پدر در هر کلاس بعد از نام کلاس، نام کلاس پدر را نوشتیم. در تابع main نیز دو شی Dog و Ant را ساخته و توابع آن را صدا زدیم. اگر دقت کنید در کلاس Dog و Ant و Cow دیگر نیاز نیست متغیر Name و Age را تعریف کنیم و میتوانیم از آنها در کلاس فرزند استفاده کنیم.
در آموزشهای بعدی مثالهای بیشتری در مورد ارث بری در c++ خواهیم زد.