在 UML class 图中,在何处显示域 class 的 DAO 方法

In UML class diagram, where to show DAO methods of a domain class

我正在尝试构建 UML class 图。我对 UML 有点陌生,请原谅我的无知。

我有一个域 class User 具有以下属性:

这就是我用 UML 构建它的方式:

现在我想在UMLclass图中定义这个Userclass的这些操作:

  1. 通过提供的标识符从数据库中检索用户对象。
  2. 将检索到的用户对象的密码与提供的匹配 密码。
  3. 检查检索到的用户是否有效。
  4. 检查检索到的用户是否被锁定。
  5. 检查取回的用户密码是否已过期。
  6. 在数据库中插入一个用户对象。
  7. 更新数据库中的用户对象。
  8. 从数据库中删除用户对象。

这就是我用 UML 构建它的方式:

但是我对方法#1 很困惑"Retrieve a User object by a supplied identifier from database"。
所有其他方法都在单个 User 对象上工作,这意味着单个 User 对象已经从数据库或其新对象中检索到。
但是方法 #1 对于处理 User 对象的集合是有意义的,这意味着数据库中已经存在的所有用户对象。

有道理吗?还是不匹配?如果是,我该如何解决?

谢谢


更新

感谢您提到 UML class 图中的 class 级操作。我不知道他们。

所以我进行了更改,这是 User 的最新 UML class 图 class:

现在正确吗?

我想我会将其建模为 staticClass 操作。此类操作不需要 User 实例。

静态方法的 UML 表示法是带下划线的。


O.T。我还将 Add()Update() 合并为一个 Save() 操作。跟踪对象的持久状态不取决于对象的用户。这将避免诸如添加已存在的对象或更新 non-existent 对象等问题。

请注意,这不仅是您的方法 #1,也是您 AddUser 到 "work on a collection of User objects which means all the user objects which already exist in the database" 的方法。事实上,所有 CRUD 方法都是不同的,因为它们适用于相应的数据库 table population.

使用 DAO 方法,您将以 class-level("static")方法的形式定义您的 CRUD 数据访问方法 retrieveUserdeleteUser,因为它们不不要使用上下文对象(正如 Geert Bellekens 所说),而是将对象 ID(在您的情况下 UserName)作为其唯一参数。另外两个 CRUD 方法,createUserupdateUser,通常也不适用于上下文对象(在您的例子中是 User 对象),而是具有通过输入的数据值的参数一个用户界面。在 createUser(您的 AddUser)的情况下,仅当数据值满足模型 class User 中定义的所有约束时,才会创建 User 对象.在 updateUser 的情况下,只有当更改的值不违反任何约束时才会执行更新。