将UML信号及其接收器翻译成C++最常用的方法是什么?在C++中,信号及其接收器的等效物是什么?
归根结底,它只是一个方法调用吗?
来自 Rational UML 文档:
https://www.ibm.com/docs/en/rational-soft-arch/9.7.0?topic=diagrams-signals
在 UML 模型中,信号是独立于处理它们的分类器的模型元素。信号指定了主动对象之间的单向异步通信。信号经常用于事件驱动系统和分布式计算环境中。例如,通信系统可能包含一个 Pager 类,其对象等待并响应页面信号。信号与其他消息类型不同之处在于当对象接收到信号时,对象不需要返回任何东西,而是根据其接收行为指定的行为对接收到的信号做出反应。
所有信号都被认为具有 send() 操作。信号的属性表示其在发送操作中携带的数据。信号不能具有其他操作。
换句话说,UML 中的“信号”(以及“接收器”,“事件”等)是映射到您的应用程序的抽象。它们不是“语言构造”本身。
更具体地说,当您的应用程序实现一个“信号(signal)”时,它可能有一个名为“send()”的C++函数或类方法。Send() 可能会发送一个 Posix 信号(例如 kill()),也可能会将某些内容发布到消息队列(message queue)或其他无数个不同的可能性。因此,在 C++ 中,信号通常会被表示为类。接收将由一个成员函数来表示,该函数带有该类的参数。消息是由一个对象异步发送并由另一个对象接收的命名对象。信号是消息的分类器;它是一种消息类型。(...) 信号与普通类有很多共同之处。(...) 信号的属性用作其参数。
- Booch、Rumbaugh 和 Jacobson 在《UML 用户指南》第二版(第 21 章,事件和信号)中说道。