本文是UML规范2.5.1中接口相关部分中文翻译。原文可从https://www.omg.org/spec/UML/2.5.1下载。

10.4 Interfaces(接口)

10.4.1 Summary(总结)

Interfaces declare coherent services that are implemented by BehavioredClassifiers that implement the Interfaces via InterfaceRealizations.

接口声明由行为类目实现的一致服务,这些服务通过接口实现关系实现接口。

10.4.3 Semantics(语义)

10.4.3.1 Interfaces(接口)

An Interface is a kind of Classifier that represents a declaration of a set of public Features and obligations that together constitute a coherent service. An Interface specifies a contract; any instance of a Classifier that realizes the Interface shall fulfill that contract. The obligations associated with an Interface are in the form of constraints (such as pre- and postconditions) or protocol specifications, which may impose ordering restrictions on interactions through the Interface.

接口是一种类目,表示一组公共特性和义务的声明,这些特性和义务共同构成了一个连贯的服务。一个接口指定一个契约;实现接口的类目的任何实例都应履行该合同。与接口相关联的义务以约束(例如前置条件和后置条件)或协议规范的形式存在,它们可能会对通过接口的交互施加排序限制。

Interfaces may not be instantiated. Instead, an Interface specification is implemented or realized by a BehavioredClassifier, which means that the BehavioredClassifier presents a public facade that conforms to the Interface specification.

接口不能被实例化。相反,接口规范由行为类目实装或实现,这意味着 行为类目呈现符合接口规范的公共外观。

译者注:行为类目包括Actor,UseCase,Class,Collaboration

NOTE. A given BehavioredClassifier may implement more than one Interface and that an Interface may be implemented by a number of different BehavioredClassifiers.

注意:一个给定的行为类目可以实现多个接口,并且一个接口可以由许多不同的行为类目实现。

Interfaces provide a way to partition and characterize groups of public Features and obligations that realizing BehavioredClassifiers shall possess. An Interface does not specify how it is to be implemented, but merely what needs to be supported by realizing BehavioredClassifiers. That is, such BehavioredClassifiers shall provide a public façade consisting of attributes, Operations, and externally observable Behavior that conforms to the Interface.

接口提供了一种划分和表征实现行为类目应拥有的公共特征和义务组的方法。接口不指定它是如何实现的,而只是指定实现行为类目需要支持什么。也就是说,此类行为类目应提供一个公共外观,包括符合接口的属性、操作和外部可观察行为。

NOTE. If an Interface declares an attribute, this does not necessarily mean that the realizing BehavioredClassifier will necessarily have such an attribute in its implementation, but only that it will appear so to external observers.

注意:如果接口声明了一个属性,这并不一定意味着实现的行为类目在其实现中一定会有这样的属性,而只是它会出现在外部观察者面前。

The set of Interfaces realized by a BehavioredClassifier are its provided Interfaces, which represent the services and obligations that instances of that BehavioredClassifier offer to their clients. Interfaces may also be used to specify required Interfaces, which are specified by a Usage dependency between the BehavioredClassifier and the corresponding Interfaces. Required Interfaces specify services that a BehavioredClassifier needs in order to perform its function and fulfill its own obligations to its clients.

由行为类目实现的一组接口是其提供的接口,它们表示该行为类目的实例为其客户提供的服务和义务。接口也可用于指定所需的接口,这些接口由 行为类目相应接口之间的使用依赖项指定。必需的接口指定行为类目需要的服务,以便执行其功能并履行其对客户的义务。

Properties owned by Interfaces (including Association ends) imply that the realizing BehavioredClassifier should maintain information corresponding to the type and multiplicity of the Property and facilitate retrieval and modification of that information. A Property declared on an Interface does not necessarily imply that there will be such a Property on a realizing BehavioredClassifier (e.g., it may be realized by equivalent get and set Operations). Interfaces may also own constraints that impose constraints on the Features of the implementing BehavioredClassifier.

接口拥有的属性(包括关联端)意味着实现的行为类目应该维护与属性的类型和多样性相对应的信息,并促进该信息的检索和修改。在接口上声明的属性不一定意味着在实现行为类目上会有这样的属性(例如,它可以通过等效的 get 和 set 操作实现)。接口也可能拥有对实现行为类目的功能施加约束的约束。

Interfaces may own a ProtocolStateMachine that specifies event sequences and pre/post conditions for the Operations and Receptions described by the Interface. A BehavioredClassifier realizing an Interface shall comply with the ProtocolStateMachine owned by the Interface.

An Interface may be parameterized, bound, and used as TemplateParameters.

接口可能拥有一个协议状态机,它为接口描述的操作和接收指定事件序列和前置/后置条件。实现接口的协议状态机应符合接口拥有的协议状态机。接口可以被参数化、绑定并用作模板参数。

An InterfaceRealization relationship between a BehavioredClassifier and an Interface implies that the BehavioredClassifier conforms to the contract specified by the Interface by supporting the set of Features owned by the Interface, and any of its parent Interfaces. For BehavioralFeatures, the implementing BehavioredClassifier will have an Operation or Reception for every Operation or Reception, respectively, defined by the Interface. For Properties, the realizing BehavioredClassifier will provide functionality that maintains the state represented by the Property. While such may be done by direct mapping to a Property of the realizing BehavioredClassifier, it may also be supported by the StateMachine of the BehavioredClassifier or by a pair of Operations that support the retrieval of the state information and an Operation that changes the state information.

行为类目和接口之间的接口实现关系意味着行为类目通过支持接口拥有的功能集及其任何父接口来符合接口指定的契约。对于行为特征,实现行为类目将分别为每个操作或接收有一个操作或接收,由接口定义。对于属性,实现 行为类目将提供维护由属性表示的状态的功能。虽然这可以通过直接映射到实现行为类目的属性来完成,但也可以由行为类目的状态机或一对支持检索状态信息的操作和更改状态信息的操作来支持。

译者注:和行为特征相对的是结构特征(StructuralFeature)。

The InterfaceRealization dependency from ProximitySensor to ISensor is shown using ball (lollipop) notation (see Figure 10.8).

从 ProximitySensor 到 ISensor 的接口实现依赖性使用球(棒棒糖)表示法显示(请参阅图 10.8)。

译者注:想象成汽车等的档把更容易记住

Figure 10.9 shows the lollipop notation for an inherited provided interface.

图 10.9 显示了继承提供的接口的棒棒糖符号。

The Usage dependency from TheftAlarm to ISensor is shown using socket notation (see Figure 10.10).

从 TheftAlarm 到 ISensor 的 Usage 依赖关系使用套接字表示法显示(见图 10.10)。

译者注:想象成挂档的手更容易记住

Alternatively, in cases where Interfaces are represented using the rectangle notation, InterfaceRealization and Usage dependencies are denoted with appropriate dependency arrows (see Figure 10.11). The Classifier at the tail of the arrow implements the Interface at the head of the arrow or uses that Interface, respectively.

或者,在使用矩形符号表示接口的情况下,接口实现关系和使用依赖项用适当的依赖项箭头表示(见图 10.11)。箭头尾部的分类器分别实现箭头头部的接口或使用该接口。

It is often the case in practice that two or more Interfaces are mutually coupled through application-specific dependencies. In such situations, each Interface represents a specific role in a multi-party “protocol.” These types of protocol role couplings may be captured by Associations between Interfaces as shown in the example in Figure 10.12. This shows the specification of three Interfaces, IAlarm, ISensor, and IBuzzer. IAlarm and ISensor are shown as engaged in a bidirectional protocol, meaning that any implementation of ISensor must maintain the information needed to realize the theAlarm property, and similarly for IAlarm and theSensor. IBuzzer describes an Interface that implementers of IAlarm must be able to access.

实践中经常出现两个或多个接口通过特定于应用程序的依赖项相互耦合的情况。在这种情况下,每个接口代表多方“协议”中的特定角色。这些类型的协议角色耦合可以通过接口之间的关联来捕获,如图 10.12 中的示例所示。这显示了三个接口 IAlarm、ISensor 和 IBuzzer 的规范。IAlarm 和 ISensor 显示为参与双向协议,这意味着 ISensor 的任何实现都必须维护实现 theAlarm 属性所需的信息,对于 IAlarm 和 theSensor 也是如此。IBuzzer 描述了 IAlarm 的实现者必须能够访问的接口。

作者著作介绍

《实战Python设计模式》是作者去年3月份出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

UML2.51边译边学-接口相关推荐

  1. UML2.51边译边学-组件

    本文是UML规范2.5.1中组件相关部分中文翻译.原文可从https://www.omg.org/spec/UML/2.5.1下载. 11.6.1 Summary(总结) This sub claus ...

  2. 基于高速51单片机的模拟USB接口设计

    基于高速51单片机的模拟USB接口设计 作者:廖颂文 摘要:参照AVRUSB技术给出了51单片机通过模拟USB通信的实现方法.用VC编写了上位机软件,通过libusb驱动实现了PC与ST12LE560 ...

  3. 使用51单片机+lcd1602转接板-iic接口进行显示

    使用51单片机+lcd1602转接板-iic接口进行显示 某宝上有卖lcd1602与iic芯片pcf8574的整合,虽然lcd1602能直接用51单片机使用,不过经过整合之后只需要对SCL和SDA两个 ...

  4. 跳过51单片机,直接学STM32有什么严重后果?

    STM32现在之所以这么普及,主要是教程资料非常丰富,一些卖开发板做教程的至少有50%的功劳. 再价格也算合理,导致很多企业用这个单片机去做产品,初学者也更渴望掌握这款芯片. 不过STM32这两年涨价 ...

  5. 放弃51单片机,直接学STM32开发会有什么严重的问题?

    本人从事单片机开发10年,我一直认为只有起点和你差不多的人,经历过的路,才具备参考的价值. 别人开局就是一套终极装,在各种资源背景加持下经历像开挂一样,你参考个锤子啊. 我当初是电气工程转行到嵌入式单 ...

  6. 51单片机控制系统的人机交互接口设计【51单片机与LED数码管的动态显示接口案例分析】

    本章节利用Keil uVision5和ISIS 7 Professional两个软件来进行仿真实验. [例]运用51单片机实现8位8段数码管的动态显示,LED数码管的段选数据由51单片机的P0口控制, ...

  7. stm32难不难学,没学51单片机可以直接学STM32吗?

    10年前,我是跨行自学进入嵌入式单片机开发这个行业. 学习的过程很枯燥,当初差点放弃,但是后面我通过一些技巧顺利进入这个行业并以此为生. 结合自己的经验,我先给大家总结原因,再给出解决办法: 1. 学 ...

  8. C++核心准则边译边学-I.6 表达前提条件最好使用Expects()

    I.6: Prefer Expects() for expressing preconditions 表达前提条件最好使用Expects() Reason(原因) To make it clear t ...

  9. C++核心准则边译边学-I.27 考虑使用指向实现的指针技术获得稳定的ABI

    I.27: For stable library ABI, consider the Pimpl idiom(考虑使用指向实现的指针技术获得稳定的ABI) Reason(原因) Because pri ...

  10. 按照我的方式、一步步学接口自动化测试,不可能学不会!!

    企业要求.接口测试流程.如何做.企业接口管理工具介绍 企业测试级别要求: 企业测试招聘要求: 企业接口如何做: 接口自动化测试体系流程: 企业接口管理用到最多工具[可以自己搭建哟]: enlinker ...

最新文章

  1. SQL判断是否存在,还在用 count 操作?试试这条 SQL 语句,性能杠杠的!
  2. python 统计单词个数---不去重
  3. 2021年春季学期-信号与系统-第十二次作业参考答案-第四小题
  4. pytorch加载预训练模型_Pytorch-Transformers 1.0发布,支持六个预训练框架,含27个预训练模型...
  5. Exchange2003中实现两个邮件系统收发邮件配置实例
  6. iOS 百度地图使用详解
  7. 无法读取源文件或磁盘_禁用格式化磁盘操作 保护电脑文件安全防止删除
  8. shell的单引号与双引号
  9. 计算机毕业设计中基于python的快递查询系统
  10. 2月第3周业务风控关注|上海网信办复测23个被约谈APP 涉及1号店、小红书等
  11. Python-运算符和其优先级
  12. 智能信息处理专业是干嘛的?
  13. win10下Cmake(make-gui)下载与安装【详细】
  14. 计算机网络纠错码,纠错码
  15. 发送导频信号用到的 matlab function
  16. 通过Matlab或python调用ABAQUS
  17. WEBSHELL 提权方法总结
  18. 网上商城项目(购物车下单、支付)
  19. 垂直领域知识图谱_垂直知识图谱的构建与应用研究
  20. Kali 2021 设置中文输入法

热门文章

  1. 优知学院创始人陈睿:怎样做好一个创业公司CTO?
  2. 中证500-小盘股预警2015.4.2
  3. vsual studio 如何关闭禁止mscorsvw.exe (转)
  4. EasyPlayer-Android互联网直播视频播放器是如何实现播放器退到后台后再回到前台时,播放画面无缝衔接?
  5. 极狐Gitlab操作手册
  6. 聪明的猴子 黑暗爆炸 - 2429
  7. 计算机系统结构层次划分,网络的体系结构及其划分所遵循的原则
  8. 淘宝/天猫按关键字搜索淘宝商品 API 返回值说明
  9. 然而大部分工程师的期权并没有什么用
  10. 【以太网交换安全】---端口安全及MAC地址飘移防止与检测