Class 迷你 JEE 项目图
Class diagram for a mini JEE project
我想在 JEE 中开始一个项目,我需要确认我的 class 图。我需要知道使用的方法是否正确以及我使用的组合是否正确。
这是我的 class 图:
该项目是关于一个在线销售商店,它想要建立一个管理工具来销售产品,并管理其产品。此工具必须包含以下功能:
- 识别模块:识别客户、经理、主管
- 销售模块:为用户进行购买
- 产品管理模块:添加/删除产品
- 统计模块:销售统计可视化
功能规格
需要对应用程序进行操作,以使用用户 ID 和密码连接到应用程序。为了方便使用,也为了避免以后出现任何误操作,解决方法如下:
用户个人资料:
- 用户将能够看到 My Online Races 销售的产品。用户可以下订单,前提是他已经在我的在线比赛网站上注册。
经理简介:
管理员将能够管理产品:
- 添加/编辑/删除产品
- 添加/编辑/删除类别
可以使用 CSV 或 XML 文件插入这些数据,也可以通过网站上的各种表格插入。
经理将能够查看销售统计数据。
主管简介:
- 主管可以添加以上指定角色的经理。
- 主管将能够查看销售统计数据。
- 主管将能够查看经理执行的所有操作,一种审计跟踪。
好吧,如果您对我的设计有意见,我已经很想知道了。以及我对几种方法感到困惑,例如添加、修改和删除产品。我应该将它们放在经理还是产品 class 中?我放的作文是正确的还是应该删除?
快速查看图表和建议
首先关于 class 命名的一些小评论:Ordered
应该被称为 Order
。
composition between Article
and Order
is just wrong (not from a formal view, but from the meaning it conveys). Use a normal one-to-many association: it would reflect much better the real nature of the relation between the two classes. Please take into account that a new article may exist without having been ordered, so it shoud be 0..*
instead of 1..*
关联中间的 +belongs
和 +do
在句法上是不正确的。您应该改用普通三角形(或什么都不用)。三角形应朝向阅读方向 Person do |> Order
和 Article belongs to |> Category
这些方法似乎还可以。您不需要添加后缀。
如何管理对象 (created/updated/deleted)?
更高级的关注点不是图表,而是您希望如何组织持久性(即数据库存储):
- 您真的希望该对象是一个 active record,即一个添加、更新和删除自身(到数据库)的对象吗?它设置简单,运行良好,但是 class 依赖于底层数据库实现,从而使维护更加困难;
- 或者对每个对象使用 repository 不是更好吗?在这种情况下,存储库充当管理所有数据库操作的集合。域对象(文章、订单、用户……)然后对数据库一无所知,从而导致更易于维护的代码。
但这是一个更广泛的架构问题。如果它只是用于 JEE 的第一个实验项目,您可以很好地使用活动记录。设置起来更简单。但是,在这种情况下,请务必消除 Person
上的 Add/Update/Delete 的歧义,因为它目前可能给人的印象是任何人都可以添加任何人。
模型的改进
最后一点,同样不是关于图表本身,而是关于域。您的模型认为 Order
是关于单个 Article
的。
然而实际上,订单通常是关于一篇或几篇文章:如果这里也是这种情况,那么您的 Order
将成为 OrderItem
而真正的 Order
将插入 Person
和 OrderItem
之间。然后,您可以使 Order
和 OrderItem
之间的关系成为一个组合(即:OrderItem
归 Order
所有,后者负责创建其项,并且项没有没有相关顺序的感觉)。
我想在 JEE 中开始一个项目,我需要确认我的 class 图。我需要知道使用的方法是否正确以及我使用的组合是否正确。
这是我的 class 图:
该项目是关于一个在线销售商店,它想要建立一个管理工具来销售产品,并管理其产品。此工具必须包含以下功能:
- 识别模块:识别客户、经理、主管
- 销售模块:为用户进行购买
- 产品管理模块:添加/删除产品
- 统计模块:销售统计可视化
功能规格
需要对应用程序进行操作,以使用用户 ID 和密码连接到应用程序。为了方便使用,也为了避免以后出现任何误操作,解决方法如下:
用户个人资料:
- 用户将能够看到 My Online Races 销售的产品。用户可以下订单,前提是他已经在我的在线比赛网站上注册。
经理简介:
管理员将能够管理产品:
- 添加/编辑/删除产品
- 添加/编辑/删除类别
可以使用 CSV 或 XML 文件插入这些数据,也可以通过网站上的各种表格插入。
经理将能够查看销售统计数据。
主管简介:
- 主管可以添加以上指定角色的经理。
- 主管将能够查看销售统计数据。
- 主管将能够查看经理执行的所有操作,一种审计跟踪。
好吧,如果您对我的设计有意见,我已经很想知道了。以及我对几种方法感到困惑,例如添加、修改和删除产品。我应该将它们放在经理还是产品 class 中?我放的作文是正确的还是应该删除?
快速查看图表和建议
首先关于 class 命名的一些小评论:Ordered
应该被称为 Order
。
composition between Article
and Order
is just wrong (not from a formal view, but from the meaning it conveys). Use a normal one-to-many association: it would reflect much better the real nature of the relation between the two classes. Please take into account that a new article may exist without having been ordered, so it shoud be 0..*
instead of 1..*
+belongs
和 +do
在句法上是不正确的。您应该改用普通三角形(或什么都不用)。三角形应朝向阅读方向 Person do |> Order
和 Article belongs to |> Category
这些方法似乎还可以。您不需要添加后缀。
如何管理对象 (created/updated/deleted)?
更高级的关注点不是图表,而是您希望如何组织持久性(即数据库存储):
- 您真的希望该对象是一个 active record,即一个添加、更新和删除自身(到数据库)的对象吗?它设置简单,运行良好,但是 class 依赖于底层数据库实现,从而使维护更加困难;
- 或者对每个对象使用 repository 不是更好吗?在这种情况下,存储库充当管理所有数据库操作的集合。域对象(文章、订单、用户……)然后对数据库一无所知,从而导致更易于维护的代码。
但这是一个更广泛的架构问题。如果它只是用于 JEE 的第一个实验项目,您可以很好地使用活动记录。设置起来更简单。但是,在这种情况下,请务必消除 Person
上的 Add/Update/Delete 的歧义,因为它目前可能给人的印象是任何人都可以添加任何人。
模型的改进
最后一点,同样不是关于图表本身,而是关于域。您的模型认为 Order
是关于单个 Article
的。
然而实际上,订单通常是关于一篇或几篇文章:如果这里也是这种情况,那么您的 Order
将成为 OrderItem
而真正的 Order
将插入 Person
和 OrderItem
之间。然后,您可以使 Order
和 OrderItem
之间的关系成为一个组合(即:OrderItem
归 Order
所有,后者负责创建其项,并且项没有没有相关顺序的感觉)。