【问题标题】:What is the correct design for signals in a UML class diagram?UML 类图中信号的正确设计是什么?
【发布时间】:2021-06-12 11:37:32
【问题描述】:

这应该不难找到,但我搜索了几个小时,却找不到明确的答案。

以下问题:

我们有两个班级。一个活动类“传感器”和一个“设备”。

当传感器检测到某些东西时,它应该通知设备。所有这些都必须在类图中定义。

我的想法是传感器发出信号,然后由设备接收。容易,对吧?我找不到明确的正确建模方法!

首先,类图中的类是如何发送信号的?我想到了从传感器到信号与刻板印象“发送”的直接关联。这是建模的正确方法吗?

以及如何表明设备准确接收了该消息?我知道有一个接收信号的隔间,但这很容易被忽视。是否允许在信号和接收器之间创建直接(图形)关联?

【问题讨论】:

  • 您正在混合静态和动态设计。 CD 是静态设计。信号动态。今晚会回答,除非有人插话。

标签: class asynchronous signals uml class-diagram


【解决方案1】:

您现在希望知道,UML 图通常分为两大类:静态和动态。正如名称所暗示的那样,它们分别代表有关元素的信息,例如数据结构、系统组件等(静态)以及交互和系统行为、功能和交互。

类图是静态图之一,因此它不能直接显示两个(或多个)类之间的信号交换。您可以模拟一个特定类发送信号以及接收信号触发类的行为的事实,但这并不表示类之间的直接连接。为此,您必须参考动态图,并且可以描述信号交换,例如关于活动图、序列图和通信图。

在类图中,信号本身被描述为一个分类器,即一个矩形。它必须有一个刻板印象<<signal>>

接收可以在分类器(尤其是类)的 ... 部分中以 Reception 的形式描述,其名称与前面带有 <<signal>> 构造型的信号名称匹配:

我在规范中没有找到任何特定的符号(在类图中)来表明特定类可以发送信号。你总是可以使用依赖关系(即一个开放头部的虚线箭头)——作为最弱的一种关系。在该 Dependency 上使用刻板印象 <<send>> 也不会造成伤害。

我不鼓励将与 Signal 的关系描述为关联,因为这会暗示 Signal 是该类的一个特征(实际上是一个属性)——这是不正确的。

【讨论】:

  • 实际上它是一个关键字(UML 2.5 的第 168 页)。但没关系;-)
  • 谢谢。但我想知道,异步类通常如何在类图中描述?我搜索和搜索,但令人惊讶的是几乎没有可行的结果。您所展示的内容是否有“在现实世界中”的实际示例? (使用 > 构造型和依赖项?)
  • @SomeUserNameForThisWebsite 类是。它是异步的。异步性与行为(“动态”)有关,与结构无关。您可能对显示异步交换和消息交换的序列图感兴趣
  • @qwerty_so 哦,你是对的。我会纠正它。当使用一个实际上是关键字的类似刻板印象的指示符时,总是令人困惑。
  • @SomeUserNameForThisWebsite 就像 Christophe 已经写的那样,同步或异步调用的事实不是模型的静态部分,而是动态的,应该在各自的图表上进行描述。正如我在答案中已经写的那样,主要的图表是活动图、序列图和通信图。一种常见的新手方法是尝试在单个图中同时表示结构和行为。这不是 UML 的工作方式。
猜你喜欢
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 2018-07-10
  • 1970-01-01
相关资源
最近更新 更多