端口指定了一个交互点,通过该交互点,分类器可以与环境、其他分类器或其内部部件进行通信。在UML中,封装分类器被定义为能够拥有端口的结构化分类器,因此端口是封装分类器的一个属性。默认情况下,端口具有公共可见性。
端口显示为一个小正方形,放置在表示封装分类器的矩形的边界上,或者显示在该矩形符号内。端口名称放在小方块附近。

图书馆服务类具有端口searchPort。
虽然UML并未规定端口的命名约定,但常识是从小写字母开始的端口名称,例如“ p ”,“ port12 ”,“ searchPort ”。不清楚是否每个端口都必须有一个名称。如果端口确实有名称,则可能在图表上将其隐藏。UML 2.5规范提供了一些奇怪的说明,“对一个未命名端口的每一个描述都表示一个不同于任何其他端口的端口。”如果只是简单地取消一个端口的名称,则该端口的每个描述都应仍为同一端口。
端口 的类型可以显示在端口名称之后,并用冒号“:”分隔。

Library Services类具有SearchBooks类型的端口searchPort。
端口的多样性(如果有的话)显示在方括号中的端口名称之后。端口的名称和多样性都是可选的。

Library Services类具有SearchBooks类型的端口searchPort。
所提供的接口可以使用附在端口上的“棒棒糖”符号来显示。可以使用附加到端口的“套接字”符号来显示所需的接口。

端口searchPort提供SearchBooks和SearchVideo
接口,并且需要Inventory接口。
在search 端口,Library Services类是完全封装的——它可以在不了解类将嵌入的环境的情况下实现。
如果有多个接口与一个端口关联,则这些接口可以在单个接口图标附近用逗号“,”分隔。

几个searchPort端口提供SearchBooks和SearchVideo
接口,并需要Inventory接口。
端口也可以表示为一个小的正方形符号,它与矩形符号的边界重叠,矩形符号表示由该分类器输入的部分。
简单的端口(Simple Port)
简单端口是具有一个必需或提供的接口的端口。一个复杂的端口有几个提供或必需的接口。

SearchEngine组件具有简单的端口searchPort,
其中包含一个单独提供的ProductSearch接口。
在一个结构化的分类器中,UML允许一些替代符号来连接部件和角色上的简单端口。
在内部结构中连接端口的唯一强制符号是当连接器直接连接到端口时。可选的棒棒糖和插座可以显示所连接端口提供的和所需的接口。

通过连接器直接连接的简单端口(强制性UML表示法)。
客户组件部分提供“订单”部分的“帐户”界面。
作为一种选择,UML允许将连接器线连接到球形插座,而不是端口,如下所示。

由连接器连接的球和插座,可选的UML符号。
客户组件部分为订单部分提供帐户接口。
作为一种选择,UML允许将连接器线连接到球形插座,而不是端口,如下所示。

由连接器连接的球和插座,可选的UML符号。
客户组件部分为订单部分提供帐户接口。
组装连接器不是用另一种可选的“球-插座”符号表示的简单端口。此符号不应用于连接复杂的端口或不带端口的的部件。

简单端口的“Ball and socket”程序集连接,可选的UML符号。
客户组件部分为订单部分提供帐户接口。
服务端口(Service Port)
端口可以指定封装分类器向其环境提供的服务,也可以指定封装分类器对其环境要求的服务。任何端口在默认情况下都是服务端口,默认情况下端口的isService属性值为true。
端口提供的接口描述其他分类器可能通过该端口向分类器发出的请求。端口所需的接口描述了分类器可能通过端口向其环境发出的请求。
当端口的isService属性设置为false时,这意味着该端口属于封装分类器的实现,它不是服务契约的一部分,也不是必要的外部可见功能。这种非服务端口可以在不影响服务合同的情况下修改或删除。UML规范没有解释为什么需要这个属性,如果我们可以改变端口的默认公共可见性,例如私有可见性。私有属性不是任何外部可见功能的一部分。
ML没有提供特定的符号来直观地区分服务端口与非服务端口,尽管它有一些约定可以将布尔属性呈现为属性修饰符。例如,{ordered}表示'isOrdered'属性为true,而{unordered} 表示相应的属性未排序。我们可能可以对port的isService属性使用相同的约定,将其呈现为{service}或{nonservice}。

端口actPort默认为提供订单和
客户接口和需要库存接口。
行为端口(Behavior Port)
行为端口是一个端口,这样到达该端口的请求将发送到 拥有该端口的分类器的行为,而不是转发到某些包含的实例。如果没有为此分类器定义任何行为,则到达该行为端口的所有通信都将丢失。默认情况下,端口不是行为端口。
行为端口被呈现为一个由实线连接到一个小状态符号的端口,该状态符号绘制在包含该端口的分类器中。小状态符号表示包含分类器的行为。

端口searchPort是具有SearchBooks提供的界面的行为端口。
|