【问题标题】:In UML class diagram, where to show DAO methods of a domain class在 UML 类图中,在哪里显示域类的 DAO 方法
【发布时间】:2018-04-04 03:28:25
【问题描述】:

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

我有一个具有以下属性的域类User

  • 用户名;数据类型是字符串;标识符
  • 密码;数据类型为字符串
  • 活动;数据类型为 bool
  • 已锁定;数据类型为 bool
  • 密码过期日期;数据类型为日期时间

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

现在我想在UML类图中定义这个User类的这些操作:

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

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

但我对方法#1“通过数据库中提供的标识符检索用户对象”感到非常困惑。
所有其他方法都在单个 User 对象上工作,这意味着单个 User 对象已经从数据库或其新对象中检索到。
但是方法#1 对User 对象的集合有意义,这意味着数据库中已经存在的所有用户对象。

这有意义吗?还是不匹配?如果是,我该如何解决?

谢谢


更新

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

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

现在正确吗?

【问题讨论】:

  • 我已经稍微完善了我的答案。请注意,您应该通过在string 之后附加{id} 将属性UserName 指定为ID 属性。然后DeleteUser 也应该只有一个userName 参数。我在我的回答中解释说,创建/添加和更新也不会将 User 对象作为参数。

标签: uml dao visio class-diagram domain-model


【解决方案1】:

请注意,这不仅是您的方法 #1,而且您的 AddUser 方法也可以“处理用户对象的集合,这意味着数据库中已经存在的所有用户对象”。事实上,所有 CRUD 方法都是不同的,因为它们适用于相应的数据库表填充。

使用 DAO 方法,您可以以类级别(“静态”)方法的形式定义 CRUD 数据访问方法 retrieveUserdeleteUser,因为它们不能与上下文对象一起使用(如Geert Bellekens),而是将对象 ID(在您的情况下为 UserName)作为它们唯一的参数。其他两个 CRUD 方法 createUserupdateUser 通常也不适用于上下文对象(在您的情况下为 User 对象),而是具有通过用户界面输入的数据值的参数。对于createUser(您的AddUser),只有当数据值满足模型类User 中定义的所有约束时,才会创建User 对象。对于updateUser,只有在更改的值不违反任何约束时才会执行更新。

【讨论】:

  • 我已经用类级操作更新了帖子。现在可以了吗?
【解决方案2】:

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

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


O.T.我还将Add()Update() 组合成一个Save() 操作。跟踪对象的持久状态不取决于对象的用户。这样可以避免添加已经存在的对象或更新不存在的对象等问题。

【讨论】:

  • 我正在使用专用的 Singleton 类来处理这样的静态访问。
  • 我已经用类级操作更新了帖子。现在可以了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多