0

我喜欢用 UML 记录我的信号槽连接(例如特殊情况下的连接)。我正在使用 Enterprise Architect,当每个类有超过 5 个信号和/或插槽时,它变得非常混乱。我尝试了流程图组件图

流程图:我将我的类建模为进程,并将端口用于我的信号/插槽。

组件图:我为我的类使用了组件,为我的信号槽使用了接口

您对信号/插槽建模有什么经验吗?您有什么建议?有没有更适合信号/插槽的解决方案?

查理

4

2 回答 2

1

我一直使用序列图,因为我发现“生命线”系统显示了对象之间的流动转移,自然适合信号/槽模式。引用上面链接的维基百科文章:

序列图以平行的垂直线(生命线)显示同时存在的不同进程或对象,并以水平箭头显示它们之间按发生顺序交换的消息。这允许以图形方式指定简单的运行时场景。

似乎同意这个观点,而且很容易阅读。

至于调用槽的顺序,Qt 文档对此进行了说明

如果多个槽连接到一个信号,则在发出信号时,这些槽将按照它们连接的顺序一个接一个地执行。

时间是一个相对的术语,可以用来指定你想要的任何东西:只要你对你所传达的内容保持一致和清楚,没有人会介意。

于 2012-01-11T13:29:03.643 回答
0

在一个简单的类图中,您将记录类(或接口)和信号之间的关系:

  • 信号用带有关键字的分类器符号表示«signal»。它可能具有用与消息内容相对应的属性表示的参数。
  • 信号通常由操作发送。这表示«send»为相关操作对信号的依赖性
  • 一个类可以表明它可以用一个接收来处理一个给定的信号,即像一个操作,但在信号之前«signal»和命名完全一样,它的属性出现在它的参数列表中。接待处可能在一个单独的隔间中在视觉上分开。这对应于Qt 插槽

在活动图中(从 UML 的角度来看,它比“流程图”更好,因为流程图不是 UML 也不是标准化的),您可以指定信号的动态:

  • 对应于活动流中发出的信号的发送对象节点。
  • 一个接受事件节点,对应于可能接收到的信号以及它发生时的后续操作。
  • 您可以将两者与依赖项联系起来,但您不必这样做(特别是如果在许多对象之间发送/接受了许多信号。

最后,这种建模的优势在于,您可以将信号用作状态图中的事件,并以非常简单、独立于实现的抽象方式表达相当复杂的事物。

于 2021-11-24T19:54:11.840 回答