Class 迷你 JEE 项目图

Class diagram for a mini JEE project

我想在 JEE 中开始一个项目,我需要确认我的 class 图。我需要知道使用的方法是否正确以及我使用的组合是否正确。

这是我的 class 图:

该项目是关于一个在线销售商店,它想要建立一个管理工具来销售产品,并管理其产品。此工具必须包含以下功能:

功能规格

需要对应用程序进行操作,以使用用户 ID 和密码连接到应用程序。为了方便使用,也为了避免以后出现任何误操作,解决方法如下:

用户个人资料:

经理简介:

主管简介:

好吧,如果您对我的设计有意见,我已经很想知道了。以及我对几种方法感到困惑,例如添加、修改和删除产品。我应该将它们放在经理还是产品 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 |> OrderArticle belongs to |> Category

这些方法似乎还可以。您不需要添加后缀。

如何管理对象 (created/updated/deleted)?

更高级的关注点不是图表,而是您希望如何组织持久性(即数据库存储):

  • 您真的希望该对象是一个 active record,即一个添加、更新和删除自身(到数据库)的对象吗?它设置简单,运行良好,但是 class 依赖于底层数据库实现,从而使维护更加困难;
  • 或者对每个对象使用 repository 不是更好吗?在这种情况下,存储库充当管理所有数据库操作的集合。域对象(文章、订单、用户……)然后对数据库一无所知,从而导致更易于维护的代码。

但这是一个更广泛的架构问题。如果它只是用于 JEE 的第一个实验项目,您可以很好地使用活动记录。设置起来更简单。但是,在这种情况下,请务必消除 Person 上的 Add/Update/Delete 的歧义,因为它目前可能给人的印象是任何人都可以添加任何人。

模型的改进

最后一点,同样不是关于图表本身,而是关于域。您的模型认为 Order 是关于单个 Article 的。

然而实际上,订单通常是关于一篇或几篇文章:如果这里也是这种情况,那么您的 Order 将成为 OrderItem 而真正的 Order将插入 PersonOrderItem 之间。然后,您可以使 OrderOrderItem 之间的关系成为一个组合(即:OrderItemOrder 所有,后者负责创建其项,并且项没有没有相关顺序的感觉)。