【问题标题】:Association, Aggrgation and Composition in UML DiagramUML图中的关联、聚合和组合
【发布时间】:2013-05-14 19:39:40
【问题描述】:

所以我对UML图中的关联、聚合和组合有一些疑问。以下是一些场景:

  1. 产品评论评级组合到产品评论。这意味着对于每个产品评论评级必须有产品评论?如果产品评论不存在,则评论评分没有意义。

  2. 客户 NRIC 关联到购物车和订单。我们不能使用聚合,因为如果客户不存在,购物车和订单也不存在。

有人可以帮我检查我的关系是否正确吗?将所有表与关联联系起来是否很好,因为我对聚合和关联有点困惑。不知道什么时候用。

如果我错了,请纠正我。提前致谢。

【问题讨论】:

    标签: database associations uml aggregation composition


    【解决方案1】:

    看一下这个类图示例进行组合:

    Composition 声明所有权关联。人拥有腿和手。或者反过来说,Hand 属于 Person。

    现在问问自己,您将如何描述模型中的每种关系。如果您说Product review rate owns a Product review 或Product review belongs to a Product review rate,那么您的图表就可以了。如果所有权方向相反(Product review rate belongs to Product review,那么菱形就必须去关联的另一边。

    同样的事情也适用于聚合。如果关联以某种方式声明了所有权,那么钻石必须归到所有者类的一侧。

    聚合和组合之间的区别在于,作为组合拥有的对象不能在没有所有者的情况下创建,因此通常它们是由其所有者创建的。这些对象在其所有者被销毁时被销毁,在其所有者死亡后它们不能被其他所有者使用。聚合关联所拥有的对象可以在没有其所有者的情况下创建,并且可能比他寿命更长并为另一个所有者服务。

    【讨论】:

    • 但我认为从我的图表中,黑色菱形可以理解为:产品评论率必须有产品评论和付款必须有订单。假设产品评论被删除,评论率没有意义。还是我把黑钻石放在相反的方向?
    • 您不应将钻石视为必须拥有,而应将其视为拥有。示例 Leg 必须有 Person,但 Leg 属于 Person。然后您将钻石放在关联的所有者部分。
    • 好的,例如,我的客户拥有购物车和订单。一旦客户被删除,购物车和订单也将消失。所以我必须在客户桌上的黑钻石?
    • 没错。这也意味着,如果您无法删除订单,则无法删除其所有者客户。通常复合是由所有者的构造函数创建的。
    • 哦,我已经知道了。而关联和聚合的区别就在于,聚合有所有权,而关联没有。他们两个只是做同样的事情。对吗?
    猜你喜欢
    • 2017-06-24
    • 2012-03-27
    • 2014-02-08
    • 2010-11-11
    • 2013-01-17
    • 2012-07-01
    • 2013-08-08
    • 2011-05-03
    相关资源
    最近更新 更多