如果我理解信号正确,这是两个或多个对象之间的异步消息。例如,在UML中,我们有一个信号分类器:
-----------------
| << signal >> |
| SomeEvent |
-----------------
|id:Int |
|text:String |
-----------------
|getId() |
|getText() |
-----------------
然后我们可以用Java编写这个信号如下:
class SomeEvent{
private final int id;
private final String text;
//+constructor + getters
}
然而,在Java中我们有一个CLASS,但在UML中我们有一个SIGNAL分类器,但不是CLASS分类器(更新:我的意思是在这个例子中)。怎么解释呢?
答案 0 :(得分:4)
您对UML信号的讨论是正确的。
来自规范:
10.3.3.1信号
信号是对象之间的一种通信的规范,其中反应是异步触发的 在没有回复的接收器中。接收对象按照第13.3节的规定处理信号。由...携带的数据 通信表示为信号的属性。信号的定义与分类器处理无关 它
但是,在Java中我们有一个CLASS,但在UML中我们有一个SIGNAL分类器,但不是CLASS分类器。怎么解释呢?
11.4课程
......类的目的是指定对象的分类并指定表征这些对象的结构和行为的特征。
11.4.4符号
使用分类符号显示类。由于Class是使用最广泛的分类器,无需关键字以指示元类是Class。
UML与编程语言无关。
在Java中,UML类和信号分类器是作为类实现的。
另一个例子:UML有一个接口分类器,但C ++没有 接口。 C ++中的接口是一个抽象(纯虚拟)类。
答案 1 :(得分:2)
事实上,UML比Java更丰富。 在UML中,信号,类,组件和协作分类器概念将对应于Java类。