【问题标题】:Drawing UML Class Diagram with many associations between two classes在两个类之间绘制具有许多关联的 UML 类图
【发布时间】:2016-04-24 15:29:08
【问题描述】:

我正在设计一个在线音乐网站,其中有两个主要对象:用户和音乐。用户可以对音乐进行很多操作,比如上传、收听、收藏、分享和下载音乐。如果我画一个 UML 类图,这个图看起来像

:

所以我的问题是,有这么多关联可以吗?

【问题讨论】:

  • 您可能应该得到一本书并阅读一些有关 UML 的基础知识。您的方法表明您不了解它们。
  • 欢迎来到 StackOverflow,@Ivan。如果您找到了问题的答案,请考虑accepting it(通过单击复选标记),并考虑对其进行投票(通过单击向上箭头)。接受答案向更广泛的社区表明您找到了解决方案,给自己一些声誉积分,并给回答您问题的人一些声誉积分。如果您的问题没有找到满意的答案,请发表评论。
  • @JimL。抱歉稍后回复。我最近太忙了,没时间查看这里的更新。

标签: class uml class-diagram


【解决方案1】:

那些不是关联,而是要在Music 中定义的方法。您可能在两者之间只有一种关联。

您可能想先综合一些用例:

在此基础上你可以创建一个类模型:

并通过行为设计详细说明:

【讨论】:

  • 我觉得你是对的,但是你能解释一下我的例子中如何绘制类图,让我更好地理解类图的概念吗?
  • 问题是,您在图表中混合了很多东西。 SO不是一个教程的地方。所以我建议先读一些书来了解这个概念。当您偶然发现细节时,欢迎您提出详细的问题。
  • 好的,我可以提出两个详细的问题。首先,如果这两个类之间只有一个关联,我该如何命名它来总结我的系统架构中给出的所有方法?
  • 第二,不同的方法可能有不同的多重性。至于用户上传音乐的方法,因为某首音乐只能由一个用户上传,所以User类末尾的多重性应该是1。但是对于像用户下载音乐这样的另一种方法,这可能是从零到多个,因为某个音乐可能不会被任何用户下载,或者可能被一个或多个用户下载。如果我只使用一个关联,如何区分不同的多重性?
  • 我添加了更多解释,但仅此而已。请去读几本书。
【解决方案2】:

UML 标准允许在两个类之间有许多关联。严格来说,您应该在每个关联角色中添加角色名称,以便在从一个类导航到另一个类时区分它们。

【讨论】:

  • 我认为您提到的角色名称在我上面显示的图表中给出。如果不是,具体是什么?
  • @Ivan:您使用的是 association 名称。 Jordi 所指的过去在 UML 1.x 中被称为“角色”。现在它们被称为关联端属性。这些名称中的每一个都写在关联行的末尾,靠近相应的多重性。
  • @Ivan:我刚刚注意到你的多重性写得不正确。每个多重性的最小和最大基数不应分开。它们应该在数字之间写有“..”,例如0..*。您可能错误地输入了一些基数作为关联端名称。
  • @JimL.,我使用 visio 2013 绘制了该图,只是按照this article 中的步骤添加多重性。
  • 那篇文章的多重性建模不正确。
【解决方案3】:

您拥有的模型对于问题域的模型是可以接受的。如果此模型旨在成为解决方案域的模型,您可能与表示可用操作的操作或表示已完成操作的信号有一个关联。

由于您使用类User,但您可能正在尝试对解决方案域进行建模。这表明您应该使用操作或信号。

【讨论】:

  • 我不太明白你提到的操作或信号,请你详细解释一下吗?
  • 您可能会使用从UserMusic 的一个关联。然后User 可以调用Music 上的操作。如果您在 UserMusic 中有交互状态机,或者如果对象在不同的​​机器上运行,则可以发送信号。 Music 可以有所谓的信号接收,看起来几乎与操作相同。 (虽然我刚刚注意到 listenTo()collect() 操作作为操作或信号没有意义。您似乎在分析模型和设计模型之间存在某种东西。)
猜你喜欢
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多