ارث بری در برنامه نویسی شی گرا

وراثت در برنامه نویسی شی گرا به این معناست که وقتی یک کلاس از کلاس دیگری مشتق می شود، کلاس فرزند تمام خصوصیات و متدهای عمومی و محافظت شده را از کلاس والد به ارث می برد. علاوه بر این، می تواند خواص و متد خاص خود را هم داشته باشد.

برنامه نویسی مفاهیم زیادی دارد و برای شروع برنامه نویسی، نیاز است که حداقل با مفاهیم  پایه ای آشنا شویم. ارث بری یکی از مفاهیم مهم برنامه نویسی است که می خواهیم امروز با هم بررسی کنیم.

 

برای اینکه مفهوم وراثت را ابتدا به زبان ساده توضیح دهیم، از مثالی واقعی استفاده می کنیم:

شیر یک نوع حیوان است. گربه یک نوع حیوان است. اسب یک نوع حیوان است.

ماهی یک نوع حیوان است. کوسه یک نوع حیوان است. دلفین یک نوع حیوان است.

 

بیایید کمی این مفهوم را پیچیده تر کنیم:

شیر، گربه و اسب از دسته پستانداران هستند.

ماهی، کوسه و دلفین از دسته آبزیان هستند.

 

زمانی که یک کلاس، یک یا چند ویژگی از کلاسی دیگر را بگیرد، به عبارتی گفته می شود که از آن کلاس ارث بری کرده است. حیوان یک کلاس است که هم کلاس پستانداران و هم کلاس آبزیان برخی از ویژگی هایش را به ارث می برد. حال کلاس شیر، گربه و اسب از کلاس پستانداران ارث می برد و کلاس های ماهی، کوسه و دلفین از کلاس آبزیان ارث بری می کنند.

 

در واقع وقتی یک کلاس علاوه بر ویژگی و متد های خودش، ویژگی و رفتار های کلاس والد را هم دارد، از مفهوم وراثت یا Inheritance استفاده شده است. وراثت در برنامه نویسی را دقیقا می توان به وراثت بیولوژیکی تشبیه کرد. حالا شاید برایتان این سوال پیش بیاید که چرا باید کلاس های والد را تعریف کنیم؟ دلیل آن چیست؟

 

برای پاسخ به این سوال، فرض کنید می خواهید همزمان کلاس های شیر و گربه را پیاده سازی کنید. اگر نخواهیم کلاس های والد یا Parent را پیاده سازی کنیم چند ویژگی و عملکرد هستند که در هر دو کلاس مشترک است و عملا شما باید کد های تکراری بنویسید. مثلا تابع راه رفتن، غذا خوردن و تولید مثل یا ویژگی های داشتن دست، پا، دهن و چشم. تمام این توابع و ویژگی هایی که گفته شد را می توان در کلاس های والد پیاده سازی کرد و فقط در کلاس های Child یا فرزند از آن ها استفاده کرد و در صورت نیاز به تغییر آن ها را Override کرد. مفهوم Override یعنی تابعی در کلاس والد وجود دارد که نیاز است در کلاس فرزند آن را بازنویسی کنیم تا عملکرد دیگری را ارائه دهد.

 

زبان های زیادی از ارث بری پشتیبانی می کنند مثل جاوا، پایتون، C# و ... . پیاده سازی Inheritance در زبان برنامه نویسی C# به شکل زیر است:

 

Class Animal

{

}

 

Class Lion : public Animal

{

} 

همچنین نحوه ارث بری در زبان برنامه نویسی پایتون به شکل زیر است:

 

Class Animal:

                                                       Methods and Attributes

Class Lion (Animal):

     Animal Methods and Attributes

     Lion Methods and Attributes

 

لازم به ذکر است که به کلاس والد Super Class و به کلاس فرزند Sub Class نیز گفته می شود. نکته مهمی که در استفاده از ارث بری وجود دارد این است که اگر تغییری در کلاس والد یا Super Class ایجاد شود، این تغییر به صورت خودکار در Sub Class ها نیز اعمال می شود و شما نیازی ندارید که همه جای کد ها را بگردید تا متوجه شوید کدام قسمت های برنامه نیاز به تغییر دارد. هنگامی که شما از Inheritance استفاده می کنید کد های شما می توانند در پروژه های دیگر نیز استفاده شوند و عملا Reusability را برای برنامه خود بالا برده اید.

 

وراثت انواع مختلفی از جمله منفرد (Single Inheritance)، چندگانه (Multiple Inheritance)، چند سطحی (Multi-Level Inheritance)، سلسله مراتبی (Hierarchical Inheritance) و ترکیبی (Hybrid Inheritance) دارد که در ادامه به صورت خلاصه هر کدام توضیح داده شده است:

وراثت منفرد یا Single: در این نوع وراثت، هر کلاس فرزند تنها دارای یک کلاس والد است.

وراثت چندگانه یا Multiple: در این نوع وراثت، هر کلاس فرزند می‌تواند دارای بیش از یک کلاس والد باشد.

وراثت چند سطحی یا Multi-level: در این نوع وراثت، کلاس فرزند، از کلاس والدی ارث‌بری می‌کند که آن کلاس، به عنوان کلاس فرزند، از کلاس والد دیگری ارث می‌برد.

وراثت سلسله‌مراتبی یا Hierarchical: در این نوع وراثت، ساختار ارث‌بری کلاس‌ها به ‌صورت سلسله‌مراتبی است. به عبارتی، یک کلاس والد وجود دارد که تمامی کلاس‌های فرزند از آن ارث‌بری می‌کنند.

وراثت ترکیبی یا Hybrid: این نوع وراثت، ترکیبی از روش‌های ارث‌بری منفرد و چندگانه است.

 

همانطور که گفته شد ارث بری در برنامه نویسی شی گرا مزایای زیادی دارد از جمله افزایش بهره وری، افزایش امنیت برنامه، استفاده مجدد از کد ها، کم تر شدن حجم کد ها و انعطاف پذیری بالاتر.

 

امیدوارم این پست براتون مفید واقع شده باشه. اگر سوالی داشتید حتما در بخش نظرات با ما در میون بگذارید.

نظرات ارزشمند خود را با ما به اشتراک بگذارید

نظرات :
هنوز نظری ثبت نشده است.