Class 图的组成部分及其与 ERD 的不同之处

The components of a Class Diagram and how it differs to ERD

我想更全面地理解 class 图表,但我发现了很多相互矛盾的信息。

我的第一个问题是,class图和ERD有什么区别?不一定是外观,而是 class化。例如我读到 class 图是 ERD 的一种,我读到 class 图和 ERD 是两种不同的东西。


我的第二个问题是关于 class 图应该是什么样子,我得到了一个关于如何创建 class 图的基本教程,我被教导每个 class 应该用一条线连接,箭头看起来像 'Play' 符号(附图中的示例 1)

但是自从对它进行了一些研究后,我发现了很多示例,其中使用不同的连接器来表示关联、聚合、组合、继承等(附图中的示例 2)

因为我的比较简单,只显示关系和多重性,这是否意味着我刚刚学习了更基本版本的 class 图,额外的连接器是高级步骤? 或者两者有什么不同?

感谢您的帮助

冬青

首先,欢迎来到 Stack Overflow!

class图是一种静态结构图,它通过显示系统的classes、它们的属性、操作(或方法)来描述系统的结构,以及对象之间的关系Wiki link

实体关系图 (ERD) 显示了数据库中存储的实体集的关系Link

因此"what is the difference between class diagram and ERD"问题的答案?

class 图与 classes 在数据层中的持久化方式无关。它仅显示classes 和classes 的属性之间的逻辑关系。 ERD图说明了数据库的逻辑结构;数据库 tables、table 列、主键、外键等是什么,最后但并非最不重要的是数据库 tables.

之间的关系

关于问题"Is this just a more advanced version of class diagram? Or a more updated version?":

在某些情况下,ERD 图可能看起来与相应的 class 图相似,但持久性数据模型可能与 class(域)模型有很大不同。此外,class 图没有任何关于 class 如何保存在数据库中的信息 - 正如我已经提到的 - 因此 ERD 具有不同于 class 图的其他类型的信息.

至于您链接的符号: 正确的 class 图包含像 second link 中那样的符号。一个例子是下图:

有关这些箭头含义的更多信息,请单击 here 以获取相应的 SO 答案。

你学到的关于如何制作 class 图表的知识(就像你展示的 the first link 一样)也很有用,但它是一个定制的 class 图表而不是一个遵循 UML 标准和符号的正确 class 图,因为:

  • 奇怪箭头不在直线本身
  • 客户和车辆之间存在共享所有权关系(聚合)。这意味着客户可以拥有(拥有)车辆,但车辆仍然可以在没有客户的情况下作为自己的车辆存在。这种关系可以用聚合符号表示。 (见箭头 5a,或下面的 class 图)
  • 我发现一辆车可以有多个客户也很奇怪,正如您用“0..*”标记的那样。但当然这是可能的,因为我不知道你试图用图表建模什么样的域......我制作了一个带有正确符号的 UML 图,检查一下:

总而言之,遵循 UML 标准和约定是明智的做法,因为它被广泛接受并广为人知,因此信息可以尽可能有效地交换,而不会产生误解。