پرش به محتوا

پیش‌نویس:رابط (برنامه نویسی شی گرا)

از ویکی‌پدیا، دانشنامهٔ آزاد

در برنامه‌نویسی شی‌گرا، رابط یا یک نوع پروتکل ، یک (نوع داده) است که به عنوان انتزاع از یک کلاس عمل می‌کند. که شامل مجموعه‌ای از امضای متد ها است که پیاده‌سازی آن‌ها ممکن است که توسط چندین کلاس باشد که به یکدیگر مرتبط نباشند. کلاسی که شامل لیست متدها در یک پروتکل است، درواقع میگوید که پروتکل را می پذیرد ، یا رابط را پیاده سازی می کند .

اگر اشیا ساخته شده از کلاس ها به طور کامل محافظت شده باشند، پروتکل تنها راهی است که از آن طریق امکان دسترسی توسط اشیاء دیگر فراهم میشود. به عنوان مثال، در java ، رابط Comparable متد ()compareTo را دارا است که همه ی کلاس های پیاده سازی شده باید آن را داشته باشند. به این معناست که برای مثال، یک متد sort (مرتب‌سازی) می تواند مجموعه ای از هر نوع شی را که رابط Comparable را پیاده سازی می کند مرتب کند، بدون انکه نیاز به دانستن چیزی در مورد ماهیت داخلی کلاس باشد. (با این تفاوت که دو مورد از این اشیاء را می توان با استفاده ازتابع ()compareTo مقایسه کرد ).

بعضی از زبان های برنامه نویسی از پروتکل ها پشتیبانی صریحی می کنند. ( Ada ، C# ، D ، Dart ، Delphi ، Go ، Java ، Logtalk ، Object Pascal ، Objective-C ، OCaml ، PHP ، Racket ، Seed7 ، Swift ، Python 3.8). در زبان هایی که از وراثت چندگانه پشتیبانی می کنند، مانند C++ ،رابط ها به عنوان کلاس های انتزاعی بکار میروند.

در زبان‌هایی که پشتیبانی صریحی ندارند ، پروتکل‌ها اغلب به صورت قراردادی وجود دارند. که عنوان duck typing. شناخته می شود. برای مثال، در پایتون ، هر کلاسی می‌تواند متد __iter__ پیاده‌سازی کند و به‌ عنوان یک مجموعه استفاده شود.

کلاس‌های نوع در زبان‌هایی مانند Haskell یاmodule signatures در ML و OCaml برای بسیاری از مواردی که از پروتکل ها استفاده می شود، استفاده می شود.[ توضیح لازم است ]

در Rust ، رابط ها traits نامیده می‌شوند.

[۱] [۲]

  1. { "Interfaces - define behavior for multiple types". learn.microsoft.com. Retrieved 16 November 2022.}
  2. { Miller, BJ (2015). Sams Teach Yourself Swift in 24 hours. Indianapolis, Indiana. p. 263. ISBN 978-0-672-33724-6. Any type can adopt a protocol to help give it extra functionality to accomplish a particular set of tasks.}