检查我的 UML 类图

Noo*_*oor 0 uml class-diagram

替代文字

有人可以检查我的类图,因为我不太擅长绘制这种类型的 uml 图

  1. 用户可以是 PersonalUser 或 BusinessUser
  2. 管理员是一种特殊类型的 PersonalUser
  3. 一个 PersonalUser 或 BusinessUser 可以创建多个 Auction
  4. 但是拍卖只能由一个 PersonalUser 或只有一个 BusinessUser 创建
  5. 没有 PersonalUser 或 BusinessUser 就不能存在拍卖
  6. 一次拍卖只能包含一件物品
  7. 一件物品只能参加一次拍卖
  8. 没有拍卖,物品就不能存在
  9. 没有项目就不能存在拍卖
  10. 一个项目有一个类别
  11. 类别可以有很多项目
  12. 没有类别的项目不能存在
  13. 一个类别可以有一个父类别,但这不是强制性的
  14. 一个类别可以有很多属性
  15. 但一个属性仅适用于一个类别
  16. 一个属性不能存在一个类别
  17. 一个属性可以有多个 AttributeOption
  18. 但是一个 AttributeOption 只链接到一个 Attribute
  19. 没有 Attribute 就不能存在 AttributeOption
  20. 拍卖可以有很多出价
  21. 一次出价仅适用于一次拍卖
  22. 没有拍卖和个人用户或商业用户,出价就不能存在
  23. 一个物品可以有很多图片
  24. 一张图片只有一个 item,没有 Item 的图片就不能存在
  25. 一个用户可以创建多个论坛主题,但一个论坛主题只能由一个用户创建
  26. 一个 ForumTopics 可以包含一个或多个 ForumMessage
  27. 没有用户就不能存在论坛主题,没有论坛主题就不能存在论坛消息
  28. 一个 BusinessUser 可以有多个 BusinessContactNumber 但一个 BusinessContactNumber 只能用于一个 BusinessUser
  29. 没有业务,BusinessContactNumber 就不能存在

Osw*_*ald 5

乍一看,您使用了很多聚合。这是相当罕见的。我从来没有见过什么时候聚合是合理的一个很好的例子。它通常是简单的关联(没有整体与部分的关系)或组合(删除整体时删除部分)。

不能存在并不意味着聚合。适当的多重性就足够了。可以创建并不意味着聚合。创建通常使用适当的原型使用关系(即虚线箭头)建模,除非创建者和创建之间存在关联(在这种情况下无需明确提及创建)。

4 但拍卖只能由一名个人用户或仅一名商业用户创建。

那么 Auction-PersonalUser 关联的多重性在 PersonalUser 端不能为 1(因为 Auction 可能是由 BusinessUser 创建的)并且 Auction-BusinessUser 关联的多重性在 BusinessUser 端不能为 1(出于同样的原因) )。使用 0..1 作为多重性,但请注意我将写的关于 3 的内容。

3 PersonalUser 或 BusinessUser 可以创建多个 Auction

这相当于一个User可以创建很多Auction

6 拍卖只能包含一件物品

7 一件物品只能参加一次拍卖

8 没有拍卖的物品就不能存在

9 没有项目就不能存在拍卖

然后在 Item 和 Auction 之间有一个单一的关联,两端的重数为 1。不要使用它进行聚合,也不要使用两个关联。

13 一个类别可以有一个父类别,但这不是强制性的

如果您标记关联结束,这将变得清楚。

25 一个用户可以创建多个论坛主题,但一个论坛主题只能由一个用户创建

这与拍卖只是模糊地相关,也可能独立于它们而存在。把论坛的东西放到一个单独的包里。那么也许拍卖的东西和用户的东西也应该有一个单独的包。

BTW:你没有提到招标服务。似乎单纯建模这些对象的概念并非凭空存在,它们实际上被某些软件使用。在这种情况下,将其排除在外。