如果我创建一个概念类图,使得每个类都捕获“名称”和“属性”而不是“操作”,那么我基本上没有创建否则会被视为 ERD 的东西吗?我试图了解创建我所描述的概念类图与将其称为 ERD 之间的区别是什么?如果这些仍然是两种不同的动物,有人可以解释一下有什么区别吗?
6 回答
类图仅包含对象模型中的类,最终链接/关系连接图元素。然而,这些链接不一定对应于 ERD 图中的物理关系,而是它们代表逻辑连接。
类图只是应用程序的对象模型,不包含任何特定于持久性的信息。当您考虑类图时,请忘记数据库或您可能使用的任何其他存储。
另一方面,ERD 图是一个特定于持久性的图,它显示(最常见的)关系数据库中存在的实体(表)。它还显示这些表和所有其他特定于数据库的信息之间的物理关系(和基数)。ERD 图有时看起来类似于类图,但这并不意味着与类图相同。
如果您使用扩展实体关系图(当今最常见的情况),两者的表达能力几乎没有区别(如果我们只关注属性、类和关联部分)
的确,它们在图形级别看起来非常不同,因为它们对元素使用不同的符号,但“语义”非常相似。它们都允许继承(再次,我说的是 EER)、n 元关联、关联类……
这取决于您可能不喜欢做 ER-D 的情况。但是想象一下,如果您有一个单独的数据层来处理数据逻辑。在这种情况下,许多数据细节不应与应用层共享。而且你的类图不能超出应用层。我必须强调这两个图表是不相等的。并且有些情况你需要两者都做,主要是在多层架构中,有些情况你可能只使用类图;例如单层应用程序。
我强烈主张类图不会废除 ER 图的观点。
设计类图由概念模型和协作图组成。设计类图包括:
- 类、关联和属性
- 方法
- 属性类型
- 可导航性
- 依赖项
我见过的 ER 图(最常见的 ERWin IE 表示法)集中在数据库的设计上。它们与主键、外键有关,具有未命名的关系,并且通常没有泛化/特化。
另一方面,一个好的 UML 概念类图不关心键,反映了问题域,并且具有关联端属性,至少暗示了事物为何相关的语义。这有助于将域传达给更多初级开发人员,因此他们不必猜测。
IMO 简单来说
类图描述了系统如何工作的细节。
ER 图描绘了系统如何将“状态”保持为蓝图。
目标: 详细说明系统组件(类)的状态和行为。使用 Solid 原则设计“高效”、灵活的系统(更少的耦合和更多的内聚)。
目标: 设计如何“有效”保持系统状态的蓝图。考虑将进行哪种查询(读取与写入),是否需要任何连接,从而找出索引列使用规范化,ACID 属性。
PS:请注意两个图表都试图在他们的方面有效地做事。