首页 > 解决方案 > 类图的组件以及它与 ERD 的区别

问题描述

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

我的第一个问题是,类图和 ERD 有什么区别?不一定是外观,而是分类。例如,我读过类图是 ERD 的一种类型,并且我读过类图和 ERD 是两个不同的东西。


我的第二个问题是关于类图的外观,我得到了一个关于如何创建类图的基本教程,我被告知每个类都应该用一条线连接,并带有一个看起来像“播放”的箭头符号(附图中的示例 1)

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

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

类图示例

谢谢你的帮助

冬青

标签: class-diagramerd

解决方案


首先,欢迎来到 Stack Overflow!

类图是一种静态结构图,通过显示系统的类、它们的属性、操作(或方法)以及对象之间的关系来描述系统的结构。维基链接

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

因此,您的“类图和 ERD 有什么区别”的问题的答案是什么?

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

至于“这只是类图的更高级版本?还是更新版本?”的问题:

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

至于您链接的符号:正确的类图包含第二个链接中的符号。一个例子是下图: 类图

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

您所学到的关于如何制作类图的内容(如您显示的第一个链接)也很有用,但它是一个定制的类图,而不是遵循 UML 标准和符号的正确类图,因为:

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

属性 UML 类图

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


推荐阅读