سلام دوستان و همراهان عزیز سالیدیتی کد! امیدواریم حالتون خوب باشه!! در این مقاله قصد داریم تا با وراثت در برنامه نویسی و به صورت اختصاصی وراثت در سالیدیتی آشنا بشیم. البته در دوره آموزش سالیدیتی به صورت کامل و با ذکر مثال این مورد بررسی شده و اگر از دانشجویان دوره هستید پیشنهاد می کنم قسمت مربوط به وراثت در solidity را مشاهده کنید.
قبل از هر چیز اول یک تعریف از وراثت در برنامه نویسی داشته باشیم :
فهرست
وراثت یعنی چه؟
به طور کلی زمانی که یک کلاس در برنامه نویسی از کلاس دیگری ویژگی یا رفتار هایی ارث بری کنه مفهوم وراثت معنی پیدا می کنه. برای درک بهتر این موضوع مثال زیر را ببینید:
نمایش ویدیو درباره وراثت در solidity
در مثال بالا ما یک کلاس به اسم Human داریم که دو کلاس Father و Mother از کلاس Human ویژگی هایی را ارث بری کرده اند در نهایت کلاس Child از دو کلاس Father و Mother ویژگی هایی را ارث بری کرده است. خیلی ساده بود نه؟!
شما با استفاده از وراثت در سالیدیتی نیازی نیست کد ها را مجدد بنویسید و برای هر کلاس مجدد ویژگی ها را تعریف کنید در واقع با استفاده از این روش هم کدهای خوانا تر و تمیز تری دارید و هم از اضافه کاری و پیچیدگی های بی مورد جلوگیری می کنید.
وراثت چند گانه چیست ؟
احتمالا می تونید مفهوم وراثت چندگانه رو حدس بزنید! زمانی که یک کلاس از چند کلاس ارث بری کند وراثت چندگانه اتفاق میافتد مجددا ویدیو بالا را مشاهده کنید، کلاس Child از دو کلاس Mother و Father ارث بری کرده ولی کلاس Mother یا Father صرفا از یک کلاس ارث بری کرده اند
و اما . . .
وراثت در سالیدیتی
سالیدیتی هم از وراثت پیشتیبانی می کند و شما می توانید متغیر ها، توابع، Modifier و رویداد ها را بین قرارداد ها استفاده کنید. وراثت چندگانه در سالیدیتی هم وجود دارد و یک قرارداد می تواند از چند قرارداد دیگر ارث بری کند. در سالیدیتی به قراردادی که دیگر قرارداد ها از آن ارث بری می کنند قرارداد پایه می گویند و به قرارداد هایی که از قرارداد پایه ارث بری م کنند قرارداد مشتق می گویند.
تصویر زیر وراثت در solidity را نمایش می دهد
همانطور که اشاره شد سالیدیتی از وراثت چند گانه هم پشتیبانی می کند. تصویر زیر نمایانگر مفهوم وراثت چند گانه در سالیدیتی است
همانطور که مشاهده می کنید قرارداد D از دو قرارداد B , C مشتق شده است که این حالت اصطلاحا وراثت چند گانه است.
خب بریم سراغ یک مثال از وراثت در solidity، البته قبلش پیشنهاد می کنم شما هم با استفاده از محیط Remix چندباری این کد ها را تمرین کنید تا حسابی ملکه ذهنتون بشه.
مثال وراثت در سالیدیتی
همانطور که گفته شد مثال بالا وراثت چندگانه در سالیدیتی را نشان می دهد.
وراثت در solidity ویژگی هایی دارد که باید به آن ها توجه کنید.
ویژگی های وراثت در سالیدیتی
یک قرارداد مشتق شده می تواند به همه اعضای غیرخصوصی از جمله متغیرهای حالت و روش های داخلی دسترسی داشته باشد
می توان تابع را نادیده گرفت البته به شرط اینکه امضای تابع ثابت بماند در صورتی که پارامترهای خروجی اختلاف داشته باشند برای کامپایل خطا دریافت می کنید
تابع یک قرارداد را می توانید با استفاده از کلمه کلیدی و یا با استفاده از نام قرارداد فراخوانی کنید
انواع وراثت در سالیدیتی Solidity
سالیدیتی از انواع مختلفی از روش های ارث بری پشتیبانی می کند. در ادامه با ذکر مثال این روش ها را توضیح می دهیم
وراثت تک سطحی در سالیدیتی یا Single Inheritance
در این نوع وراثت قرارداد فرزند فقط از قرارداد والد ارث بری می کند. در تکه کد زیر این نوع از وراثت را می توانید مشاهده کنید
اگر نمونه کد وراثت تک سطحی در سالیدیتی که در بالا است را در محیط ریمیکس امتحان کنید خروجی به شکل زیر خواهد بود
وراثت چند سطحی در سالیدیتی MultiLevel Inheritance
همانطور که در شکل بالا مشاهده می کنید این نوع وراثت شباهت بسیار زیادی به وراثت تک سطحی دارد با این تفاوت که قرارداد والد نیز از قرارداد دیگری ارث بری کرده است. در واقع قرارداد C از قرارداد B و قرارداد B از قرارداد A ارث بری کرده است. تکه کد زیر نمونه ای از وراثت چند سطحی در سالیدیتی است
اگر کد بالا را در محیط توسعه اجرا کنید خروجی زیر را دریافت خواهید کرد
وراثت چندگانه در سالیدیتی Multiple inheritance
همانطور که در ابتدای این مقاله اشاره شد وراثت چندگانه زمانی معنی پیدا می کند که یک فرزند بیش از یک والد داشته باشد که در تصویر بالا این مفهوم کاملا مشخص شده است.
تکه کد زیر هم یک نمونه از وراثت چندگانه در solidity است
سخن آخر
امیدواریم این مقاله براتون مفید بوده باشه و در آخر اگر سوال یا نظری دارید در بخش نظرات برامون بنویسید
دیدگاهتان را بنویسید