【问题标题】:UML Class Method From Sequence Diagram来自序列图的 UML 类方法
【发布时间】:2016-04-05 21:20:15
【问题描述】:

消息的方向如何确定(序列图参与者的)类的方法?我会说发送消息的演员是拥有该方法的演员。我说的对吗?

而这些类是

我是对的还是相反?

【问题讨论】:

  • 我不确定您使用的是什么类型的登录系统,但通常您会输入密码和登录凭据。这是一步,而不是两步。
  • @cricket_007 得分。这是正确的。我这样做只是为了吸引更多的信息。不过告诉我一件事,因为 EnterLogin() 和 EnterPassword() 是由 COMPUTER 实现的,所以 LOGIN 和 PASSWORD 属性可以吗?
  • 个人实体不应存储自己的密码,仅存储登录的标识符,例如电子邮件或用户名。此外,Enter 前缀非常冗长,如果您仅使用 login(id, password) 之类的参数实现该方法,则完全没有必要。类图并不总是与序列图匹配。用户看到登录屏幕并输入密码。计算机没有使用AskPassword 函数向用户发送垃圾邮件。当验证不正确时,您也会丢失错误消息响应。
  • 我认为可以帮助您的一件事是更忠实于 UML 规范的工具。例如,MagicDraw 提供了从消息中创建操作的功能,或者相反。这将帮助您了解 UML 中事物的关系。考虑下载副本并申请评估许可证。

标签: uml class-diagram sequence-diagram


【解决方案1】:

“发送消息”在大多数情况下与“调用方法”相同,这意味着如果参与者向计算机发送消息,那么计算机需要理解它/实现一个方法。

有一个区别(见这里1),但本质上你“发送消息”给一个对象,对象决定如何处理它,在大多数情况下它实现了一个适当的方法。

所以要回答你的问题,消息发送的接收者应该为它实现一个方法,而不是发送者。

也许伪代码也可以说明:

class A {
    function hello() {
        b.someMessage();
        c.otherMessage();
    }
}

class B {
    function someMessage() {
        this.selfMessage();
    }
}

【讨论】:

  • 我忘了一件事。在我的图中,假设有一个名为 LOGIN 的属性。你所说的 LOGIN 将是 PERSON 的属性,而 EnterLogin() 是 COMPUTER 的一种方法,对吗??
  • 没有。 Login是一个系统类名Authentication的方法。如果是用户的方法,为什么还要登录呢?
猜你喜欢
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多