وبلاگ

اینترفیس در برنامه نویسی سالیدیتی

اینترفیس در سالیدیتی
سالیدیتی

اینترفیس در برنامه نویسی سالیدیتی

اگر با Interface در زبان های برنامه نویسی شی گرا آشنایی داشته باشید باید بدانید که interface در سالیدیتی نیز دقیقا مانند رابط Interface در دیگر زبان های برنامه نویسی شی گرا عمل می کند. اگر بخواهیم با یک مثال اینترفیس در سالیدیتی را بیان کنیم می توان گفت :‌ فرض کنید در قصد دارید چراغ های خودرو را روشن کنید، شما با زدن کلید داخل خودرو این کار را انجام می دهید اما در واقع زمانی که شما کلید را فشار می دهید چندین عمل دیگر اتفاق می افتد تا در نهایت چراغ خودرو روشن شود.اینترفیس در solidity معمولا در بالای قرارداد هوشمند اضافه می شوند. شما با کلمه کلیدی “Interface” می توانید آنها را به قرارداد اضافه کنید. شما می توانید از اینترفیس در سالیدیتی برای فراخوانی تابع ها در قرارداد دیگر استفاده کنید. Interface شامل امضاهای تابع بدون اجرای تعریف تابع است.

اینترفیس در solidity چیست؟

رابط در Solidity چیست؟ رابط ها اغلب در بالای قرارداد هوشمند یافت می شوند. آنها با استفاده از کلمه کلیدی “Interface” شناسایی می شوند. اینترفیس شامل امضاهای تابع بدون اجرای تعریف تابع است.

یک اینترفیس در Solidity مشابه قراردادهای رابط در زبان های برنامه نویسی شی گرا سنتی عمل می کند. در برنامه نویسی شی گرا، اینترفیس توصیفی از تمام عملکردهایی است که یک شی باید داشته باشد تا بتواند کار کند. هدف یک اینترفیس اعمال مجموعه ای از خصوصیات تعریف شده و اجرای توابع خاص در یک شی دیگر است. به عنوان مثال، هنگامی که یک سوئیچ چراغ را می چرخانید، چراغ روشن می شود. برای شما مهم نیست که چگونه چراغ روشن می شود.

مشاهده  توسعه قرارداد هوشمند در محیط ریمیکس
اینترفیس در سالیدیتی
اینترفیس در Solidity

اینترفیس صرفاً یک قرارداد و پروتکل هست.اگه چند کلاس مشابه داشته باشیم و بخواهیم کاری کنیم که از آن قرارداد تبعیت کنند، از اینترفیس استفاده می‌کنیم.معنی اینترفیس یعنی مرتبط کننده. وقتی یک کلاس از یک اینترفیس استفاده می‌کند، ما مطمئن میشویم که اون کلاس یک سری ویژگی‌های مورد نظر ما را دارد.​اینترفیس ها در سالیدیتی مشابه contract ها تعریف می شوند. با این تفاوت که در اینترفیس ها فقط می توان امضای فانکشن هارا تعریف کرد. به مثال زیر دقت کنید:

در مثال فوق یک Interface تعریف شده است که شامل تعریف فانکشن getNum می باشد. همانطور که می بینید فقط امضا و تعریف این متد مشخص شده است و بدنه ی فانکشن پیاده سازی نشده.برای اتصال از یک contract به یک contract دیگر در شبکه بلاکچین از اینترفیس ها استفاده می شود. فرض کنید در حال توسعه یک contract هستیم. در بین کار نیاز می شود تا یک فانکشن از یک contract دیگر در بلاکچین را فراخوانی کنیم و از اطلاعات آن استفاده کنیم. برای این کار باید ابتدا یک interface از فانکشنی که قرار است صدا بزنیم بسازیم که در قسمت بعدی به آن می پردازم.

چه محدودیت هایی در اینترفیس وجود دارد؟

  1. آنها نمی توانند از قراردادهای دیگر ارث ببرند، اما می توانند از Interface های دیگر ارث ببرند.
  2. توابع یک Interface فقط می توانند از نوع external باشند.
  3. آنها نمی توانند سازنده (Constructor) را اعلام کنند.
  4. آنها نمی توانند متغیرهای حالت (State Variable) را اعلام کنند.

آموزش سالیدیتی برنامه نویسی قرارداد هوشمند

ویژگی های Interface در سالیدیتی :

  1. برای اضافه کردن رابط باید از کلمه کلیدی Interface استفاده کنید
  2. برخی از نام های Interface با یک “I” شروع می شوند تا شناسایی آنها در کد آسان تر شود.
  3. تمام توابع Interface به طور ضمنی مجازی هستند.
  4. می توانید یک تابع Interface را لغو کنید.
  5. قراردادها می توانند Interface ها را به ارث ببرند همانطور که قراردادهای دیگر را به ارث می برند.
  6. همه توابعی که از Interface به ارث می‌برند باید override modifier را روی هر تابعی که یک تابع Interface را overrides می‌کند تنظیم کنند. در غیر این صورت کامپایلر یک خطا ایجاد می کند.
  7. انواع داده های تعریف شده در داخل Interface ها را می توان از قراردادهای دیگر دسترسی داشت. برای مثال، قراردادی که از Interface نمونه زیر استفاده می‌کند، می‌تواند به Iauto.carType و Iauto.vehicle دسترسی داشته باشد.
مشاهده  آموزش نصب ترافل (Truffle)

مثال: در مثال زیر، در قرارداد thisContract یک رابط InterfaceExample را پیاده سازی می کند و تمام توابع رابط را پیاده سازی می کند.

// Solidity program to
// demonstrate the working
// of the interface

pragma solidity 0.4.19;

// A simple interface
interface InterfaceExample{

	// Functions having only
	// declaration not definition
	function getStr(
	) public view returns(string memory);
	function setValue(
	uint _num1, uint _num2) public;
	function add(
	) public view returns(uint);
}

// Contract that implements interface
contract thisContract is InterfaceExample{

	// Private variables
	uint private num1;
	uint private num2;

	// Function definitions of functions
	// declared inside an interface
	function getStr(
	) public view returns(string memory){
		return "GeeksForGeeks";
	}
	
	// Function to set the values
	// of the private variables
	function setValue(
	uint _num1, uint _num2) public{
		num1 = _num1;
		num2 = _num2;
	}
	
	// Function to add 2 numbers
	function add(
	) public view returns(uint){
		return num1 + num2;
	}
	
}

contract call{
	
	//Creating an object
	InterfaceExample obj;

	function call() public{
		obj = new thisContract();
	}
	
	// Function to print string
	// value and the sum value
	function getValue(
	) public returns(uint){
		obj.getStr;
		obj.setValue(10, 16);
		return obj.add();
	}
}
تصویر خروجی کد های بالا

دیدگاه خود را اینجا قرار دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

محبوب ترین دوره ها

برچسب های محبوب

Mapping Solidity Inheritance آموزش برنامه نویسی سالیدیتی آموزش سالیدیتی آموزش قرارداد هوشمند اجزای قرارداد هوشمند ارز دیجیتال اتریوم ارز دیجیتال یونی ارزهای متاورسی الگوریتم اثبات کار الگوریتم اجماع امنیت کیف پول اهمیت قرارداد هوشمند اپلیکیشن متمرکز برنامه نویس سالیدیتی برنامه نویسی اتریوم برنامه نویسی بلاکچین برنامه نویسی ریمیکس برنامه نویسی سالیدیتی برنامه نویسی شی‌ گرا برنامه نویسی قرارداد هوشمند بلاکچین بلاک چین اتریوم بهترین ارزهای دیجیتال ترون چیست توسعه دهنده سالیدیتی صرافی های ارزدیجیتال صرافی‌ غیرمتمرکز قرارداد هوشمند قیمت پولکادات متاورس مزایای قرارداد هوشمند نوشتن سیستم رای گیری با سالیدیتی نوشتن قرارداد هوشمند واقعیت مجازی متاورس ویژگی‌های اتریوم پلتفرم های ارزدیجیتال پیش نیاز قرارداد هوشمند کاربرد قرارداد هوشمند کد نویسی سالیدیتی کسب درآمد با قرارداد هوشمند کسب درآمد در متاورس کیف پول ارزدیجیتال کیف پول الکترونیکی کیف پول نرم‌افزاری