检查我的UML类图

时间:2011-01-22 14:52:44

标签: uml class-diagram

alt text

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

  1. 用户可以是PersonalUser或BusinessUser
  2. 管理员是一种特殊类型的PersonalUser
  3. PersonalUser或BusinessUser可以创建许多拍卖
  4. 但拍卖只能由一个PersonalUser或仅一个BusinessUser创建
  5. 如果没有PersonalUser或BusinessUser
  6. ,则无法进行竞价
  7. 拍卖只能包含一个项目
  8. 项目只能在一次拍卖中
  9. 没有拍卖项目就不能存在
  10. 没有商品
  11. 就不能存在拍卖
  12. 项目有一个类别
  13. 类别可以包含多个项目
  14. 没有类别
  15. 时,项目不能存在
  16. 类别可以包含父类别,但这不是强制性的
  17. 类别可以包含许多属性
  18. 但属性仅适用于一个类别
  19. 属性不能存在类别
  20. 属性可以包含许多AttributeOption
  21. 但是AttributeOption只链接到一个属性
  22. 没有属性
  23. 时,AttributeOption不能存在
  24. 拍卖可以有很多出价
  25. 出价仅适用于一次拍卖
  26. 没有拍卖和个人用户或商业用户
  27. ,投标就不能存在
  28. 一个项目可以有很多图片
  29. 图片仅适用于一次商品,没有商品
  30. 时图片不能存在
  31. 用户可以创建许多ForumTopics,但只能由一个用户创建ForumTopic
  32. ForumTopics可以包含一个或多个ForumMessage
  33. 没有用户就不能存在ForumTopic而没有ForumTopic就不能存在ForumMessage
  34. BusinessUser可以有多个BusinessContactNumber,但BusinessContactNumber只适用于一个BusinessUser
  35. 没有业务
  36. ,BusinessContactNumber不能存在

2 个答案:

答案 0 :(得分:4)

乍一看,您使用了大量聚合。这种情况非常罕见。我从未见过聚合合理的好例子。它通常是一个普通的关联(没有全部关系)或一个组合(删除整个部分时删除该部分)。

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

  

4但是,只能由一个PersonalUser或仅一个BusinessUser创建拍卖。

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

  

3 PersonalUser或BusinessUser可以创建许多拍卖

这相当于用户可以创建多个拍卖

  

6拍卖只能包含一个项目

     

7项目只能在一次拍卖中

     

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

     

9没有项目

,拍卖就不可能存在

然后在Item和Auction之间存在单个关联,两端的复数为1。不要从中进行聚合,也不要使用两个关联。

  

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

如果您标记关联结束,那将会很清楚。

  

25用户可以创建许多ForumTopics,但只能由一个用户创建ForumTopic

这与拍卖只是模糊相关,也可能与拍卖无关。将论坛内容放入单独的包中。那么拍卖的东西和用户的东西也应该是一个单独的包。

顺便说一句:你没有提到招标服务。似乎只是模仿这些对象的概念并不存在于空气中,它们实际上被某些软件使用。在这种情况下,请将其删除。

答案 1 :(得分:1)

我基本同意之前的受访者,所以我只会提出差异和其他意见。

为了更准确一点,“可以创建......”应该使用依赖关系(而不是使用)来描述。

  1. 如果存在某种区别,则不完全等同。如果由于某种原因想要避免枚举,可以将User类与枚举或UserType类一起使用。
  2. 6.-9。因此,不存在Auction或Item对象。以一种方式放松关系并使用合成或将这两者合并为一个类或创建关联类。

    1. 也许一个类别可以包含多个子类别?如果为true,请编辑相应的多重性。

    2. 与4.相同,查看其他答案。

    3. 还要重新考虑设计中的课程数量。类不只是数据持有者,他们应该有行为。 AttributeOption或Attribute或BusinessContact等的行为是什么? getter和setter不计入某个行为...我猜你计划在BidingService中拥有所有这些行为,所以我建议你删除它并根据哪个类对象应该对通过各自的方法。