我正在编写一份求职跟踪应用程序,求职者可以申请工作并跟踪记录。当我尝试使用uml设计模型时,我遇到了一个问题。
Job (class)
---
id:int
position:String
status:String
Comments (Class)
--------
id:int
comment:String
job:Job
我问自己几个问题,以了解这是一个组合还是聚合?
我不知道这是否是一个合适的问题。我非常担心,如果问题不合适,我会在stackoverflow中获得减分。但我真的想要一个答案,因此发布了这个。任何帮助将不胜感激。
谢谢, 阿伦
答案 0 :(得分:2)
在我看来,Job
应该引用Commons
,而不是相反。你的设计更像是ER,然后是UML图。我认为Comment
与Job
共享其生命周期,因为如果Job
消失,则Comment
不再具有上下文。因此,它是一种作文。
我认为UML是:
Job (class)
---
id:int
position:String
status:String
comment:Comment
Comments (Class)
--------
id:int
comment:String
答案 1 :(得分:1)
- 我认为逻辑上,Job应该有评论。这种关系应该是构成。如果乔布斯没有,评论将基于工作 存在,那就没有意义了。
醇>
答案 2 :(得分:1)
多年来我看到了各种语义,用于聚合和组合,但UML已经成为事实上的标准。
UML声明聚合关系表示整个部分关系,即“传递和反对称”。 “传递”部分意味着如果C是B的一部分而B是A的一部分,那么C是A的一部分,这具有直观意义。 “反对称”部分意味着您不能在聚合图中使用循环,这意味着对象可能不是直接或间接的自身的一部分,这也是直观的。
组合(或“复合聚合”,因为它是UML术语)是聚合,具有“强所有权”的附加约束(一部分可能一次只能是一个复合体的一部分)并且“重合”生命周期“(因此,删除时复合材料中包含的部分将被删除)。
对于Job和Comment,我认为这绝对是作文,因为作业之间不会共享评论,当你删除作业时,你会同时删除它的评论。
答案 3 :(得分:0)
聚合是关联的子集。组合是聚合的子集。因此,在它们之间放置OR是不正确的。
删除作业时是否应删除注释?是的,那就是 这个作文?
如果删除它们,它就是一个组合。但是你必须决定如何组织你的课程。您可以使评论不那么依赖,它将是shared
聚合或与none
聚合的关联