با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش ++C در خدمت شما دوستان هستیم . در بخش قبلی با سربارگذاری عملگر ها در ++C آشنا شدید، در این جلسه قصد داریم به آموزش ارث بری در ++C یا وراثت در ++C بپردازیم.
وراثت (Inheritance) یکی از ویژگی های کلیدی برنامه نویسی شی گرا در ++C است.
این ویژگی این امکان را به ما می دهد تا کلاس جدیدی را بر پایه کلاس های موجود ایجاد کنیم.
کلاس های مشتق شده تمام ویژگی های خود را (متغیر ها و توابع عضو) از کلاس پایه ارث می برد و در عین حال می تواند ویژگی های خود را هم داشته باشد.
فرض کنید که در یک بازی سه شخصیت داریم: یک معلم ریاضی، یک فوتبالیست و یک تاجر.
تمام شخصیت ها یک فرد(انسان) هستند و می توانند راه بروند و صحبت کنند.
با این حال هر کدام مهارت های ویژه خود را دارد.
شما میتوانید به طور جداگانه سه کلاس درست کنید که می توانند راه بروند و صحبت کنند(منظور انجام این اعمال توسط توابع است) و مهارت های خاص خود را انجام دهند. به شکل زیر دقت کنید:
در هر کلاس باید کد های یکسانی را برای راه رفتن و صحبت کردن بنویسید.
همچنین اگر بخواهید ویژگی جدیدی مانند خوردن ()eat را اضافه کنید، باید یک کد را در سه کلاس بنویسید و تکرار کنید که مشکلات خاص خودش را دارد.
کار خیلی راحت تر می شد اگر کلاسی به نام person داشتیم که ویژگی های پایه هر شخص را در خود داشت و می توانستیم برای هر شخص ویژگی های مخصوص خودش را داشته باشیم.
با استفاده از وراثت نیازی به نوشت کد های تکراری برای صحبت کردن و … ندارید. فقط کافیست تا آن ها را ارث ببرید.
بنابراین برای کلاس مشتق شده mathsTeacher تمام ویژگی های یک شخص را (کلاس peson) ارث می برید و ویژگی جدید TexhMaths را اضافه می کنید. برای شخصیت های دیگر نیز کار به همین منوال است.
این کار کدتان را تمیز تر،خوانا تر و توسعه پذیر تر می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Person { ... .. ... }; class MathsTeacher : public Person { ... .. ... }; class Footballer : public Person { .... .. ... }; |
در مثال بالا کلاس person کلاس پایه کلاس های MathsTeacher و Footballer است.
کلاس های مشتق شده با نام کلاس پایه بعد از : و کلمه کلیدی public تعریف شده اند.
بنابراین دو کلاس مشتق شده به تمام متغیر ها و توابع کلاس پایه دسترسی دارند.
در برنامه زیر دو شخصیت بازی را با استفاده از مفهوم وراثت پیاده سازی کرده ایم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <iostream> using namespace std; class Person { public: string profession; int age; Person(): profession("unemployed"), age(16) { } void display() { cout << "My profession is: " << profession << endl; cout << "My age is: " << age << endl; walk(); talk(); } void walk() { cout << "I can walk." << endl; } void talk() { cout << "I can talk." << endl; } }; // MathsTeacher class is derived from base class Person. class MathsTeacher : public Person { public: void teachMaths() { cout << "I can teach Maths." << endl; } }; // Footballer class is derived from base class Person. class Footballer : public Person { public: void playFootball() { cout << "I can play Football." << endl; } }; int main() { MathsTeacher teacher; teacher.profession = "Teacher"; teacher.age = 23; teacher.display(); teacher.teachMaths(); Footballer footballer; footballer.profession = "Footballer"; footballer.age = 19; footballer.display(); footballer.playFootball(); return 0; } |
خروجی به شکل زیر می باشد:
1 2 3 4 5 6 7 8 9 10 | My profession is: Teacher My age is: 23 I can walk. I can talk. I can teach Maths. My profession is: Footballer My age is: 19 I can walk. I can talk. I can play Football. |
هنگام ایجاد یک کلاس مشتق شده از کلاس پایه، می توانید اجازه دسترسی مختلفی را به اعضای ارث برده شده بدهید.
این دسترسی ها می توانند به صورت public, private یا protected باشند.
در مثال بالا کلاس پایه با دسترسی public ارث برده شده است.
در جلسات آینده بیشتر به این موضوع خواهیم پرداخت.
جلسه آموزش وراثت در ++C نیز به پایان رسید.
در جلسه بعد به آموزش کنترل دسترسی در وراثت خواهیم پرداخت. با ما همراه باشید
Iliya
Salam o dorod, besiar mokhtasar o mofid o awli bod
پی وی لرن
خوشحالیم مورد رضایت واقع شده است
برق مخابرات
عالی