ارث بری در سالیدیتی
ارث بری در سالیدیتی
ارث بری در سالیدیتی ((Solidity به برنامه نویس اجازه میدهد تا ویژگیهای قراردادی را به قراردادهای مشتق شده یا به اصطلاح ارث برده گسترش دهد. اول همین تعریف رو به زبان ساده تری بگیم کلا ارث بری یعنی اینکه مثلا ما یه قراردادی به نام A و یه قرارداد دیگه به نام B داریم، حالا میخوایم تمام خصوصیات و ویژگی قرارداد A مثل پدر و مادر یا والد به قرارداد B هم منتقل کنیم و قرارداد B هم همون ویژگی های قرارداد A رو داشته باشه. البته تو این حالت به قرارداد B هم میگی فرزند یا قرارداد بچه یا مشتق شده.
حالا اگه بخوایم به صورت فنی به قضه نگاه کنیم همچنین توسعهدهندگان یا همان برنامه نویسان میتوانند این جنبهها را در قرارداد مشتقشده نیز از طریق فرآیندی به نام overriding تغییر دهند.
بر خلاف زبانهای برنامه نویسی دیگر مانند جاوا، سالیدیتی اجازه می دهد تا چندین وراثت یا ارث بری داشته باشد. ارث بری چندگانه به توانایی یک قرارداد مشتق برای داشتن بیش از یک قرارداد مادر اشاره دارد. بنابراین، این بدان معنی است که یک قرارداد واحد می تواند از چندین قرارداد به طور همزمان ارث ببرد.
در این بخش توسعه نرم افزار سالیدیتی، برنامه نویسان یاد خواهند گرفت که چگونه به ارث بری در کد سالیدیتی خود دست یابند. برای آسانتر کردن فرآیند یادگیری، نمونههای کد ارائه خواهد شد.
استفاده از کلمه کلیدی “is“ در سالیدیتی
برای ایجاد یک قرارداد مشتق شده، به سادگی از کلمه کلیدی is استفاده کنید، همانطور که در کد مثال زیر نشان داده شده است:
همانطور که قبلا ذکر شد، سالیدیتی امکان ارث بردن چندگانه را فراهم می کند. همانطور که در این کد نمونه نشان داده شده است، می توانید چندین وراثت را در سالیدیتی پیاده سازی کنید:
پیاده سازی فوق با دقت انتخاب شده است تا یک مورد خاص جالب از وراثت های متعدد در سالیدیتی را نشان دهد. توجه داشته باشید که یکی از قراردادهایی که C از آن ناشی می شود نیز یک قرارداد مشتق است. یعنی قرارداد B نیز از قرارداد A مشتق شده است.
این یک خطا نیست، سالیدیتی به این نوع ارث بری های متعدد نیز اجازه می دهد و کد شما باید بدون هیچ خطایی کامپایل شود.
پبشنهاد مقاله کاربرد زبان سالیدیتی
تابع یا فانکشن Overriding در سالیدیتی
سالیدیتی به توسعه دهندگان این امکان را می دهد تا نحوه اجرای یک تابع در قرارداد والد را در کلاس مشتق شده تغییر دهند. این مورد به عنوان overriding تابع شناخته می شود.
تابع در قرارداد والد باید با کلمه کلیدی virtual یا همان به معنی مجازی اعلام شود تا نشان دهد که می تواند در قرارداد مشتق کننده overridden و یا استفاده شود.
علاوه بر این، تابع overriding باید کلمه کلیدی override را داشته باشد. این امکان وجود دارد که بخواهید تابع overriding شما توسط یک تابع دیگر overriding شود. این قابل قبول است و می توان با استفاده از کلمه کلیدی virtual مانند قبل به آن دست یافت. در اینجا مثالی وجود دارد در این خصوص مشاهده میکنید:
در قرارداد مشتق شده بالا، تابع overriding باید همان نام تابع و همان تعداد آرگومان ها و انواع کلاس والد را داشته باشد.
این مورد ممکن است به نظر چیزی بی اهمیت به نظر برسد. با این حال، ممکن است سناریویی داشته باشیم که در آن قرارداد والد چندین روش با نام یکسان و لیست های پارامترهای مختلف داشته باشد. این سناریویی است که به عنوان اضافه بار یا overloading تابع شناخته می شود.
با در نظر گرفتن این موضوع، برای برنامه نویسان مهم است که لیست پارامترهای توابع خود را در نظر بگیرند. در غیر این صورت، ممکن است در صورت overloading بیش از حد تابع در قرارداد مادر، عملکرد اشتباه داشته باشید.
پیشنهاد مقاله سالیدیتی چیست؟
اصلاح کننده یا همان Modifier در سالیدیتی
اصلاح کننده ها ویژگی هایی هستند که برای تغییر رفتار توابع استفاده می شوند. درست مانند توابع، اصلاحکنندهها را فقط در صورتی میتوان در قرارداد مشتق شده لغو کرد که با کلمه کلیدی virtual در کلاس والد علامتگذاری شده باشند.
به طور مشابه، شما باید از کلمه کلیدی override استفاده کنید در حالی که یک اصلاح کننده را در کلاس مشتق شده نادیده می گیرید. اجرای نمونه زیر را بررسی کنید، که نشان می دهد اصلاح کننده در سالیدیتی نادیده گرفته می شود:
نظرات نهایی در مورد وراثت یا ارث بری در سالیدیتی
سالیدیتی به توسعه دهندگان نرم افزار اجازه می دهد تا توابع، متغیرهای حالت و اصلاح کننده های تابع را به ارث ببرند. علاوه بر این، مواردی از ارث چندگانه را امکان پذیر می کند. سالیدیتی همچنین از چندشکلی (polymorphism ) از طریق overriding تابع پشتیبانی می کند. به یاد داشته باشید که هنگام اجرای تابع overriding در برنامه های خود از کلمات کلیدی virtual و override استفاده کنید.
منابع:
دیدگاهتان را بنویسید