Interface UML2:组件图中的端口和接口

Interface UML2:组件图中的端口和接口,interface,uml,components,port,Interface,Uml,Components,Port,由于我尚未完全理解组件图中端口和接口符号的正确用法,因此有几个问题: I。 想象一下,有一款软件想要通过网络(TCP)使用非常特殊的远程记录器服务。这些消息可能是一些XML。因此,记录器公开了一个接口,该接口指定了握手、XML结构、XML元素等内容,以便记录器接受消息 a) 这个接口可以称为“ILogger协议”,端口可以以它提供的服务(“日志”)命名,对吗 b) 那么,我的应用程序中的组件实现了该接口,以便为服务器生成符合要求的消息 c) 现在有一件有趣的事情:对于通信,有一个额外的库“Ne

由于我尚未完全理解组件图中端口和接口符号的正确用法,因此有几个问题:

I。 想象一下,有一款软件想要通过网络(TCP)使用非常特殊的远程记录器服务。这些消息可能是一些XML。因此,记录器公开了一个接口,该接口指定了握手、XML结构、XML元素等内容,以便记录器接受消息

a) 这个接口可以称为“ILogger协议”,端口可以以它提供的服务(“日志”)命名,对吗

b) 那么,我的应用程序中的组件实现了该接口,以便为服务器生成符合要求的消息

c) 现在有一件有趣的事情:对于通信,有一个额外的库“Networking”,它提供简单的TCP内容,所以它进行TCP连接、发送消息、处理错误等。当我只想强调从生成的消息到服务器的方式时,我需要这个类吗?那么我的端口是TCP接口吗

d) 当我想画出完整的图时,我如何才能正确地将网络组件添加到图中,指出使用了iLogger协议,并且它通过网络组件通过TCP传输

II。我的应用程序中的端口:现在有两个库,其中一个库只使用另一个库;基本上,在C/C++中,它将#包括另一个的头文件:

e) 那是正确的图表吗

f) 这里需要端口吗?如果是,它们在现实中实际代表什么?你会给他们起什么名字

g) 或者没有端口符号的棒棒糖就足够了

III.关于棒棒糖:

h) 这两种符号基本相同且可互换吗?我已经找到了组合版本的名称“assembly”,因此可能有区别…

首先是一个简短的回答(稍后尝试删除其余部分):端口是一个嵌入式元素,允许对多个接口进行分组。举个例子,我能想到的最好的例子是一个复杂的插座(端口),它捆绑了电源、通信线路等东西(接口)

现在了解详情

a) 是的,没错。您通常会使用一个
原型关联来显示外部接口是在内部某处使用的(如果是棒棒糖,则实现)

b) 否。这是必需的接口。它在内部使用,但在外部实现(棒棒糖所在的位置)

c&d)我会使用一个从
MyApplication
Networking
来说明这一点。通常情况下,你不会涉及太多细节(除非是必要的)。像TCP这样明显的东西在

e) 您可以(/应该)使用

f&g)见上面的一般答案

h) 对。第一个是第二个的灵活表示法


顺便说一句,再看一遍,我注意到在上图中,内部定向关联应该指向另一个方向,并被定型为

托马斯,非常感谢。b) 使用“implements”我的意思是我的应用程序为iLogger协议构建对应的程序,当然。。。f) 因此,我从您的陈述中得出结论,在我的示例中,作为一名程序员思考:当一个类出于一个简单目的包含另一个头文件时,我不一定需要端口。当我包含另一个组件的头文件以使用更复杂的服务或甚至不同的服务时,我需要端口,对吗?也谢谢你关于刻板印象的提示。一张图片可以表达一千个单词,但有时一个单词会让图片更清晰…注册。b) 实现意味着您实现了一个已定义的接口。这是显示一个棒棒糖(意味着你提供它)。如果使用接口(aka.import something),则将其显示为套接字(必需接口)。端口是一个虚拟构造,用于捆绑东西。在编程术语中:如果你导入一个完整的库,那么这个库就是port.Thx,两个细节:你说“…应该使用或替代”,所以你建议在两个组件之间建立依赖关系,而不是棒棒糖?有或没有端口盒?到目前为止,在我的书中,我只看到组件和接口之间使用依赖关系(框表示法,而不是棒棒糖)--reg-ports:我在提供接口端得到了port=lib的概念。然而在我的第一张图中,MsgGenerator有一个端口,然后是需要的接口,然后是委托,然后是另一个端口,然后是接口。那么这个外部端口实际上是什么呢?用过的lib?一点也不介意。
依赖关系更为非正式。如果显示界面关系很重要,请使用棒棒糖符号。但要显示简单的依赖项,请使用
。这取决于读者是谁以及你想表达什么。请不要在这里开始长时间的讨论。相反,在适当的地方开始一个新问题。谢谢。我对我的答案做了一个简短的编辑。