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

在UML类图中,在哪里显示域类的DAO方法,uml,dao,visio,class-diagram,domain-model,Uml,Dao,Visio,Class Diagram,Domain Model,我正在尝试构建UML类图。我对UML有点陌生,请原谅我的无知 我有一个域类User,具有以下属性: 用户名;数据类型为字符串;标识符 密码;数据类型为字符串 活跃的;数据类型为bool 锁定;数据类型为bool 密码过期日期;数据类型是DateTime 这就是我在UML中构建它的方式: 现在我想在UML类图中定义这个User类的这些操作: 通过从数据库中提供的标识符检索用户对象 将检索到的用户对象的密码与提供的密码匹配 密码 检查检索到的用户是否处于活动状态 检查检索到的用户是否已锁定 检

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

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

  • 用户名;数据类型为字符串;标识符
  • 密码;数据类型为字符串
  • 活跃的;数据类型为bool
  • 锁定;数据类型为bool
  • 密码过期日期;数据类型是DateTime
这就是我在UML中构建它的方式:

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

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

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

    这有意义吗?还是错配?如果是,我如何修复它

    谢谢


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

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


    现在它是正确的吗?

    我想我应该把它建模为一个静态的类的操作。这种类型的操作不需要
    用户
    实例

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



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

    我想我会将该对象建模为静态操作或类操作。这种类型的操作不需要
    用户
    实例

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



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

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


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

    请注意,“处理用户对象集合,即数据库中已存在的所有用户对象”不仅是您的方法1,也是您的
    AddUser
    方法。事实上,所有CRUD方法在处理相应的数据库表填充时都是不同的


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

    我使用专用的单例类来处理此类静态访问。我已使用类级操作更新了post。现在可以了吗?我正在使用一个专用的单例类来处理这种静态访问。我已经用类级操作更新了帖子。现在可以了吗?我已经用类级操作更新了帖子。现在可以了吗?我已经用类级操作更新了帖子。现在可以了吗?我已经把我的答案精炼了一点。请注意,您应该将属性
    UserName
    指定为