时序图上的所有对象都应该在class图中设计吗?

Are all objects on sequence diagram should be designed in class diagram?

我正在为教育网站制作序列图和 class 图,序列图中的所有对象都应该是 Class 图中的 class 吗?

例如在注册过程的序列图中,我需要一个名为 "Data Base" 的对象来保存用户信息,"Date base" 应该是 class in class图表?它的功能是什么?是否只是加载和保存?

是的,数据库将是 Class 图中的一个 class,其函数可以是 validation() 、 generatingErrorMessage() 等

我认为这取决于正式程度、抽象程度以及您的 UML 模型的用途。

Martin Fowler 谈论 UML 作为草图,UML 作为蓝图,以及 UML 作为编程语言。

术语得到了一些很好的使用;我认为 'UML as Sketch' 已经成为一种流行的模式,其目标是就系统设计进行人与人之间的交流;不一定是正式的工程规范(即蓝图),也不适合作为代码生成器的输入(即编程语言)。

如果您想在完全有效的 Sketch 模式下使用 UML,则不需要您的序列图仅使用 class 图中定义的 classes。事实上,序列图中的某些 objects/lifelines 根本不是 class 实例:

  • 它们可能 "actors" 在用例图中定义(或未定义)。演员通常是人,因此被表示为简笔画。 "End user" 是包含在序列图中的常见角色。很多 examples here.
  • 它们可能是您的 class 模型中未定义的外部系统,例如数据库。您的系统可能有一个 class 或一组 classes 来抽象数据库,即 "data access layer" 或 DAL。但是话又说回来,您的系统可能没有 DAL;即使是这样,您可能仍希望您的序列图显示 DAL 和实际数据库之间跨边界的交互。

以UML为草图,外部参与者或系统组件实现的方法完全由您决定。您可以将数据库查询显示为 execute query,或更具体的内容,例如实际的 SQL 语句。您的图表的 "correctness" 在于它能够以适当的详细程度和正式程度与您的听众进行有效沟通。