我正在尝试构建UML类图。我对UML有点新意,所以原谅我的无知。
我有一个具有以下属性的域类 @Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredItems.clear();
filteredItems.addAll((ArrayList<ProductObject>) results.values);
notifyDataSetChanged();
}
:
这就是我在UML中构建它的方式:
现在我想在UML类图中定义这个User
类的这些操作:
这就是我在UML中构建它的方式:
但我对方法#1&#34;通过数据库提供的标识符&#34;检索用户对象感到非常困惑。
所有其他方法都在处理单个User
对象,这意味着已经从数据库或其新对象中检索到单个User
对象。
但是方法#1对于User
对象的集合起作用是有意义的,这意味着数据库中已存在的所有用户对象。
有意义吗?还是不匹配?如果是,我该如何解决?
由于
感谢您提及UML类图中的类级操作。我不知道他们。
所以我做了更改,这是User
类的最新UML类图:
现在是否正确?
答案 0 :(得分:2)
我认为我会将该模型建模为静态或类操作。对于此类操作,您不需要User
个实例。
静态方法的UML表示法是用它加下划线。
O.T。我还会将Add()
和Update()
合并到一个Save()
操作中。跟踪对象的持久状态不是由对象的用户决定的。这样可以避免添加已存在的对象或更新不存在的对象等问题。
答案 1 :(得分:2)
请注意,它不仅是您的方法#1,而且还是您的AddUser
方法,以及#34;处理用户对象的集合,这意味着数据库中已存在的所有用户对象& #34 ;.实际上,所有CRUD方法都是不同的,因为它们可以处理相应的数据库表。
使用DAO方法,您可以采用类级别(&#34;静态&#34;)方法的形式定义CRUD数据访问方法retrieveUser
和deleteUser
,因为它们不会#39 ; t使用上下文对象(由Geert Bellekens评论),而是将对象ID(在您的情况下为UserName
)作为唯一参数。另外两个CRUD方法createUser
和updateUser
通常也不适用于上下文对象(在您的情况下为User
对象),而是通过参数输入的数据值用户界面。对于createUser
(您的AddUser
),只有在数据值满足模型类User
中定义的所有约束时,才会创建User
对象。在updateUser
的情况下,只有在更改的值不违反任何约束时才会执行更新。