Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на .
|
В об'єктно-орієнтованому програмуванні протокол або інтерфейс є звичайним засобом для незв'язаних об'єктів спілкуватися один з одним. Це визначення методів та цінностей, з яким об'єкти погоджуються для співпраці.
Наприклад, у Java, де протоколи називаються інтерфейсами, інтерфейс Comparable визначає метод compareTo()
, який реалізовані класи повинні виконувати. Це означає, що окремий метод сортування, наприклад, може сортувати будь-який об'єкт, який реалізує інтерфейс Comparable, без необхідності знати будь-що про внутрішню природу класу (крім того, що два з цих об'єктів можна порівняти за допомогою compareTo()
).
Протокол є описом:
- Повідомлень, які розуміються об'єктом.
- Аргументів, якими можуть надаватися ці повідомлення.
- Типів результатів, до яких ці повідомлення повертаються.
- Інваріантів, які зберігаються попри модифікації стану об'єкта.
- Виняткових ситуацій, які вимагатимуть клієнтів обробляти об'єкт.
Якщо об'єкти повністю інкапсульовані, то протокол описує єдиний спосіб доступу до цих об'єктів іншими об'єктами.
Деякі мови програмування забезпечують явну мовну підтримку протоколів або інтерфейсів (Ada, C#, D, Dart, Delphi, Go, Java, , Object Pascal, Objective-C, PHP, Racket, , Swift). У інтерфейси відомі як абстрактні базові класи і реалізовані за допомогою чистих віртуальних функцій. Об'єктно-орієнтовані функції Perl також підтримують інтерфейси.
Попри те, що Go загалом не розглядається як об'єктно-орієнтована мова програмування, вона дозволяє визначати методи на типи, визначені користувачем. Go має типи "інтерфейсу", сумісні з будь-яким типом, який підтримує певний набір методів (для цього типу не потрібно явно вводити інтерфейс). Порожній інтерфейс interface{}
сумісний з усіма типами.
Функціональне програмування та розподілені мови програмування також мають поняття протоколу, значення якого тонко відрізняється (тобто специфікація дозволеного обміну повідомленнями, акцент на обмін, а не на повідомлення). Ця різниця обумовлена дещо різними припущеннями функціонального програмування та парадигмами об'єктно-орієнтованого програмування. Зокрема, наступні також розглядаються як частина протоколу на таких мовах:
- Допустимі послідовності повідомлень;
- Обмеження, що покладаються на одного учасника зв'язку;
- Очікувані ефекти, які відбудуться під час обробки повідомлення.
Класи типу в мовах, таких як Haskell, використовуються для багатьох речей, для яких використовуються і протоколи.
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya maye kilka nedolikiv Bud laska dopomozhit udoskonaliti yiyi abo obgovorit ci problemi na Cya stattya ye sirim perekladom z inshoyi movi Mozhlivo vona stvorena za dopomogoyu mashinnogo perekladu abo perekladachem yakij nedostatno volodiye oboma movami Bud laska dopomozhit polipshiti pereklad listopad 2017 Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno listopad 2017 V ob yektno oriyentovanomu programuvanni protokol abo interfejs ye zvichajnim zasobom dlya nezv yazanih ob yektiv spilkuvatisya odin z odnim Ce viznachennya metodiv ta cinnostej z yakim ob yekti pogodzhuyutsya dlya spivpraci Napriklad u Java de protokoli nazivayutsya interfejsami interfejs Comparable viznachaye metod span class n compareTo span span class p span yakij realizovani klasi povinni vikonuvati Ce oznachaye sho okremij metod sortuvannya napriklad mozhe sortuvati bud yakij ob yekt yakij realizuye interfejs Comparable bez neobhidnosti znati bud sho pro vnutrishnyu prirodu klasu krim togo sho dva z cih ob yektiv mozhna porivnyati za dopomogoyu span class n compareTo span span class p span Protokol ye opisom Povidomlen yaki rozumiyutsya ob yektom Argumentiv yakimi mozhut nadavatisya ci povidomlennya Tipiv rezultativ do yakih ci povidomlennya povertayutsya Invariantiv yaki zberigayutsya popri modifikaciyi stanu ob yekta Vinyatkovih situacij yaki vimagatimut kliyentiv obroblyati ob yekt Yaksho ob yekti povnistyu inkapsulovani to protokol opisuye yedinij sposib dostupu do cih ob yektiv inshimi ob yektami Deyaki movi programuvannya zabezpechuyut yavnu movnu pidtrimku protokoliv abo interfejsiv Ada C D Dart Delphi Go Java Object Pascal Objective C PHP Racket Swift U C interfejsi vidomi yak abstraktni bazovi klasi i realizovani za dopomogoyu chistih virtualnih funkcij Ob yektno oriyentovani funkciyi Perl takozh pidtrimuyut interfejsi Popri te sho Go zagalom ne rozglyadayetsya yak ob yektno oriyentovana mova programuvannya vona dozvolyaye viznachati metodi na tipi viznacheni koristuvachem Go maye tipi interfejsu sumisni z bud yakim tipom yakij pidtrimuye pevnij nabir metodiv dlya cogo tipu ne potribno yavno vvoditi interfejs Porozhnij interfejs span class kd interface span span class p span sumisnij z usima tipami Funkcionalne programuvannya ta rozpodileni movi programuvannya takozh mayut ponyattya protokolu znachennya yakogo tonko vidriznyayetsya tobto specifikaciya dozvolenogo obminu povidomlennyami akcent na obmin a ne na povidomlennya Cya riznicya obumovlena desho riznimi pripushennyami funkcionalnogo programuvannya ta paradigmami ob yektno oriyentovanogo programuvannya Zokrema nastupni takozh rozglyadayutsya yak chastina protokolu na takih movah Dopustimi poslidovnosti povidomlen Obmezhennya sho pokladayutsya na odnogo uchasnika zv yazku Ochikuvani efekti yaki vidbudutsya pid chas obrobki povidomlennya Klasi tipu v movah takih yak Haskell vikoristovuyutsya dlya bagatoh rechej dlya yakih vikoristovuyutsya i protokoli Div takozhProtokoli v Objective C Inkapsulyaciya programuvannya Interfejs Klas programuvannya Porivnyannya mov programuvannya Prikladnij programnij interfejs