在UML类图中,在哪里显示域类的DAO方法

时间:2018-04-04 03:28:25

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

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

我有一个具有以下属性的域类 @Override protected void publishResults(CharSequence constraint, FilterResults results) { filteredItems.clear(); filteredItems.addAll((ArrayList<ProductObject>) results.values); notifyDataSetChanged(); }

  • 用户名;数据类型是字符串;标识符
  • 密码;数据类型是字符串
  • 活跃;数据类型是bool
  • 锁定;数据类型是bool
  • PasswordExpiryDate;数据类型是DateTime

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

enter image description here

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

  1. 通过数据库中提供的标识符检索用户对象。
  2. 将检索到的User对象的密码与提供的密码匹配 密码。
  3. 检查检索到的用户是否处于活动状态。
  4. 检查检索到的用户是否已锁定。
  5. 检查检索到的用户密码是否已过期。
  6. 在数据库中插入用户对象。
  7. 更新数据库中的用户对象。
  8. 从数据库中删除用户对象。
  9. 这就是我在UML中构建它的方式:

    enter image description here

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

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

    由于

    更新

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

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

    enter image description here

    现在是否正确?

2 个答案:

答案 0 :(得分:2)

我认为我会将该模型建模为静态操作。对于此类操作,您不需要User个实例。

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

O.T。我还会将Add()Update()合并到一个Save()操作中。跟踪对象的持久状态不是由对象的用户决定的。这样可以避免添加已存在的对象或更新不存在的对象等问题。

答案 1 :(得分:2)

请注意,它不仅是您的方法#1,而且还是您的AddUser方法,以及#34;处理用户对象的集合,这意味着数据库中已存在的所有用户对象& #34 ;.实际上,所有CRUD方法都是不同的,因为它们可以处理相应的数据库表。

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