Протокол (объектно-ориентированное программирование) - Protocol (object-oriented programming)

Протокол это термин, используемый отдельными объектно-ориентированного программирования языки с различными специфическими значениями, которые другие языки могут обозначать интерфейс или черта характера.

Протокол когда используется иначе, сродни Протокол связи, указывающий на цепочку взаимодействий между вызывающим абонентом и объектом.

Языки, в которых используется термин Протокол, включают:

В этих языках протокол является обычным средством для дискретных объекты общаться друг с другом. Это определения методы и ценности, которые объекты согласовывают, чтобы сотрудничать, как часть API.

Протокол / интерфейс представляет собой описание:

  1. Сообщения, которые понимает объект.
  2. Аргументы, которыми могут быть предоставлены эти сообщения.
  3. Типы результатов, возвращаемых этими сообщениями.
  4. В инварианты которые сохраняются, несмотря на изменения состояния объекта.
  5. Исключительные ситуации, которые потребуются для обработки клиентами объекта.
  6. (Только для использования в стиле коммуникации :) Последовательность вызовов и точки принятия решений методов, например, которые будут представлены в диаграммах взаимодействия UML: Схема связи, Схема последовательности, Обзорная диаграмма взаимодействия /Диаграмма деятельности, Временная диаграмма.

Если объекты полностью инкапсулированный тогда протокол будет описывать единственный способ, которым объекты могут быть доступны другим объектам. Например, в Ява интерфейсы, то Сопоставимый интерфейс определяет метод сравнить с() какие реализующие классы должны реализовывать. Это означает, что, например, отдельный метод сортировки может сортировать любой объект, реализующий интерфейс Comparable, без необходимости знать что-либо о внутренней природе класса (за исключением того, что два из этих объектов можно сравнить с помощью сравнить с()).

Немного языки программирования обеспечить явную языковую поддержку для протоколов / интерфейсов (Ада, C #, D, Дротик, Delphi, Идти, Ява, Logtalk, Object Pascal, Цель-C, PHP, Ракетка, Семя7, Swift ). В C ++ интерфейсы известны как абстрактные базовые классы и реализуются с использованием чистые виртуальные функции. Объектно-ориентированные функции в Perl также поддерживают интерфейсы.

Не объектно-ориентированные языки

Несмотря на то что язык программирования Go обычно не считается объектно-ориентированным языком, он позволяет определять методы для пользовательских типов. В Go есть «интерфейсные» типы, совместимые с любым типом, поддерживающим данный набор методов (тип не обязательно должен явно реализовывать интерфейс). Пустой интерфейс, интерфейс{}, совместим со всеми типами.

Обратите внимание, что функциональное программирование и распределенное программирование языки используют термин протокол сродни использованию средств связи (т.е. спецификация разрешенных обмены сообщений, акцент на обмены, а не в сообщениях)[нужна цитата ]. В частности, следующие элементы также считаются частью протокола на этих языках:

  1. Разрешенные последовательности сообщений,
  2. Ограничения, налагаемые на любого из участников общения,
  3. Ожидаемые эффекты, которые произойдут при обработке сообщения.

Типовые классы на таких языках, как Haskell используются для многих вещей, для которых используются протоколы.

Смотрите также

использованная литература

  1. ^ «Язык программирования Objective-C: протоколы». Apple Inc.. Получено 7 октября 2012.
  2. ^ Официальная документация Python 3, Слой абстрактного объекта