这个组成或聚合或关联?

时间:2014-03-19 09:02:16

标签: java uml

我正在编写一份求职跟踪应用程序,求职者可以申请工作并跟踪记录。当我尝试使用uml设计模型时,我遇到了一个问题。

Job (class)
---
id:int
position:String
status:String

Comments (Class)
--------
id:int
comment:String
job:Job

我问自己几个问题,以了解这是一个组合还是聚合?

  1. 删除作业时是否应删除注释?是的,那么这是作文吗?
  2. Job有评论吗?人们总是问这个问题,但在这种情况下我们不能确切地问这个问题?因为汽车拥有一个轮子?是的,我们可以问Job有评论吗?
  3. 我不知道这是否是一个合适的问题。我非常担心,如果问题不合适,我会在stackoverflow中获得减分。但我真的想要一个答案,因此发布了这个。任何帮助将不胜感激。

    谢谢, 阿伦

4 个答案:

答案 0 :(得分:2)

在我看来,Job应该引用Commons,而不是相反。你的设计更像是ER,然后是UML图。我认为CommentJob共享其生命周期,因为如果Job消失,则Comment不再具有上下文。因此,它是一种作文。

我认为UML是:

Job (class)
---
id:int
position:String
status:String
comment:Comment

Comments (Class)
--------
id:int
comment:String

答案 1 :(得分:1)

  
      
  1. 我认为逻辑上,Job应该有评论。这种关系应该是构成。如果乔布斯没有,评论将基于工作   存在,那就没有意义了。
  2.   

答案 2 :(得分:1)

多年来我看到了各种语义,用于聚合和组合,但UML已经成为事实上的标准。

UML声明聚合关系表示整个部分关系,即“传递和反对称”。 “传递”部分意味着如果C是B的一部分而B是A的一部分,那么C是A的一部分,这具有直观意义。 “反对称”部分意味着您不能在聚合图中使用循环,这意味着对象可能不是直接或间接的自身的一部分,这也是直观的。

组合(或“复合聚合”,因为它是UML术语)是聚合,具有“强所有权”的附加约束(一部分可能一次只能是一个复合体的一部分)并且“重合”生命周期“(因此,删除时复合材料中包含的部分将被删除)。

对于Job和Comment,我认为这绝对是作文,因为作业之间不会共享评论,当你删除作业时,你会同时删除它的评论。

答案 3 :(得分:0)

聚合是关联的子集。组合是聚合的子集。因此,在它们之间放置OR是不正确的。

  

删除作业时是否应删除注释?是的,那就是   这个作文?

如果删除它们,它就是一个组合。但是你必须决定如何组织你的课程。您可以使评论不那么依赖,它将是shared聚合或与none聚合的关联