fbpx
维基百科

协议 (面向对象编程)

协议(Protocol)是特定面向对象编程语言使用的术语,具有各种特殊含义,在其他语言中可能称为接口trait

概述

协议指示着在调用者和对象之间的交互链,在其他方面都类同于通信协议。使用术语“协议”的语言包括:

在这些语言中,协议是离散的对象相互通信的常用方式。为了进行协作,将这些对象一致认可的方法和值的定义,作为API的一部份。协议/接口描述了:

  1. 对象所理解的消息。
  2. 这些消息可提供的实际参数。
  3. 这些消息返回的结果的类型。
  4. 不变量英语Class invariant,即使对象状态被修改了而仍然保持。
  5. 异常情况,要求这个对象的客户处理。
  6. (只针对通信风格用途:)方法的调用序列和决定点,这些都会表示在UML交互图中:通信图英语Communication diagram时序图交互概述图/活动图计时图

如果对象是完全封装的,则协议将只描述对象能被其他对象访问的方式。例如Java中的接口Comparable接口指定了一个方法compareTo(),实现类必须实现它。这意味着比如有一个独立的排序方法,可以排序实现了这个可比较接口的任何对象,而不用知道关于这个类的内部性质的任何事情(除了两个这种对象可以通过compareTo()方式进行比较之外)。

一些编程语言提供对协议/接口的显式的语言支持:AdaC#DDartDelphiGoJavaLogtalk英语LogtalkObject PascalObjective-CPHPRacketSeed7英语Seed7Swift。在C++中接口叫做抽象基础类,并被使用纯虚函数实现。Perl中的面向对象特征也支持接口。

非面向对象语言

尽管Go编程语言一般不被认为是面向对象语言,它允许在用户定义类型上定义方法。Go有“接口”类型,兼容于支持给定方法集合的任何类型(这个类型不需要显式的实现这个接口)。空接口interface{}兼容于所有类型。

注意函数式编程分布式编程语言使用术语协议类似于通信用法(比如允许消息交换的规定强调了交换而非消息)。特别是在这些语言中如下这些被认为是协议的一部份:

  1. 允许的消息序列,
  2. 对通信任一参与者施加的限制,
  3. 处理消息时将会发生的预期效果。

在语言如Haskell中的类型类被用来干协议所作的很多事情。

参见

引用

  1. ^ The Objective-C programming Language:Protocols. Apple Inc. [7 October 2012]. (原始内容于2016-04-16). 
  2. ^ Official Python 3 Documentation, Abstract Object Layer. [2021-03-28]. (原始内容于2021-05-18). 

协议, 面向对象编程, 协议, protocol, 是特定面向对象编程语言使用的术语, 具有各种特殊含义, 在其他语言中可能称为接口或trait, 目录, 概述, 非面向对象语言, 参见, 引用概述, 编辑协议指示着在调用者和对象之间的交互链, 在其他方面都类同于通信协议, 使用术语, 协议, 的语言包括, clojure, elixir, java, logtalk, 英语, logtalk, objective, smalltalk, swift, python, 在这些语言中, 协议是离散的对象相互通信的常用. 协议 Protocol 是特定面向对象编程语言使用的术语 具有各种特殊含义 在其他语言中可能称为接口或trait 目录 1 概述 2 非面向对象语言 3 参见 4 引用概述 编辑协议指示着在调用者和对象之间的交互链 在其他方面都类同于通信协议 使用术语 协议 的语言包括 Clojure Elixir Java 8 Logtalk 英语 Logtalk Objective C 1 Smalltalk 80 Swift Python 2 在这些语言中 协议是离散的对象相互通信的常用方式 为了进行协作 将这些对象一致认可的方法和值的定义 作为API的一部份 协议 接口描述了 对象所理解的消息 这些消息可提供的实际参数 这些消息返回的结果的类型 不变量 英语 Class invariant 即使对象状态被修改了而仍然保持 异常情况 要求这个对象的客户处理 只针对通信风格用途 方法的调用序列和决定点 这些都会表示在UML交互图中 通信图 英语 Communication diagram 时序图 交互概述图 活动图 计时图 如果对象是完全封装的 则协议将只描述对象能被其他对象访问的方式 例如Java中的接口 Comparable接口指定了一个方法compareTo 实现类必须实现它 这意味着比如有一个独立的排序方法 可以排序实现了这个可比较接口的任何对象 而不用知道关于这个类的内部性质的任何事情 除了两个这种对象可以通过compareTo 方式进行比较之外 一些编程语言提供对协议 接口的显式的语言支持 Ada C D Dart Delphi Go Java Logtalk 英语 Logtalk Object Pascal Objective C PHP Racket Seed7 英语 Seed7 Swift 在C 中接口叫做抽象基础类 并被使用纯虚函数实现 Perl中的面向对象特征也支持接口 非面向对象语言 编辑尽管Go编程语言一般不被认为是面向对象语言 它允许在用户定义类型上定义方法 Go有 接口 类型 兼容于支持给定方法集合的任何类型 这个类型不需要显式的实现这个接口 空接口interface 兼容于所有类型 注意函数式编程和分布式编程语言使用术语协议类似于通信用法 比如允许消息交换的规定强调了交换而非消息 特别是在这些语言中如下这些被认为是协议的一部份 允许的消息序列 对通信任一参与者施加的限制 处理消息时将会发生的预期效果 在语言如Haskell中的类型类被用来干协议所作的很多事情 参见 编辑概念 泛型编程 英语 Concept generic programming 委托 面向对象编程 Objective C中的协议 公开接口 英语 Public interface 应用编程接口引用 编辑 The Objective C programming Language Protocols Apple Inc 7 October 2012 原始内容存档于2016 04 16 Official Python 3 Documentation Abstract Object Layer 2021 03 28 原始内容存档于2021 05 18 取自 https zh wikipedia org w index php title 协议 面向对象编程 amp oldid 71291209, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。