【问题标题】:what could be wrong with this uml relationships这种 uml 关系可能有什么问题
【发布时间】:2017-12-01 21:19:00
【问题描述】:

您好,我正在尝试创建类图,但我不确定我的意见是否良好,您能告诉我应该改变什么吗,谢谢。

不确定也可能是关联?

也许是关联?

【问题讨论】:

  • 你有图表吗?因为这样就不清楚了。
  • 那么新我们得到了架构和一个问题,但是您的上下文和架构的目的是什么?没有它们,它可能非常好或非常糟糕:) 顺便说一句,所有属性都是公开的:这不常见。
  • 所有属性都是公开的,因为我在passenger_train 类中使用了这个类(以访问类的所有字段)
  • 天哪!那应该是什么?你说的是火车还是网络?由passengers 组成的passager_train?它们是由乘客必须转动的踏板操作的吗?
  • 我写这个话题是为了得到你的想法(如果火车被毁,乘客也被毁(像乘客不喜欢人))

标签: uml class-diagram


【解决方案1】:

我想我理解你的问题,尽管评论者试图向你解释你没有问清楚。我相信你在问你应该在你的类之间使用什么类型的关联。

正如您似乎部分理解的那样,组合关联意味着组合关系中对象的生命周期取决于它所属的对象。

那么,你的第一个图表是说你的火车是由火车站组成的,因此如果没有火车,就不会再有任何火车站。这显然不是真的;其他火车可能会停在同一站。此外,您的火车可能会与“路线”对象相关联,该对象将是多个站点的集合。我会让你去解决这个细节。

你的下一张图是说一列火车是由(至少部分)乘客组成的,所以如果火车被毁,就没有更多的乘客了。但是乘客可以换乘火车继续做乘客,所以火车和乘客之间不存在组合关系。乘客乘坐火车,火车可能有乘客,也可能没有乘客,所以你有一个简单的关联(没有任何类型的钻石)。

最后,您的最后一张图表表明可用路线由城市组成。这是有道理的。但是,还有一个问题是,给定的城市可能是不同路线的成员。如果是这样,最好说一个给定的城市“有”许多与之相关的路线。在这种情况下,城市尽头会有一颗白色的钻石。当然,如果你这样做,你将不得不重新考虑你的distance_between 属性。最好创建一个distance 类,它本身与两个且仅两个城市对象相关联。

【讨论】:

  • 鲍勃,我基本同意你的回答,但我认为有一个细节并不完全正确。不是因为乘客可以换乘火车,甚至没有火车就存在,所以它不应该是一个组合。并不是我说它应该,只是那不应该是不使用组合的原因。在汽车车轮的经典案例中,我可以将车轮从一辆车移到另一辆车,也可以卸下一个车轮并存放在没有汽车的其他地方。
  • @GeertBellekens 据我了解车轮示例,这是一个上下文问题。汽车和车轮可能是汽车工厂的组合物,而垃圾场或服务部门的集合体。虽然车轮可以独立于汽车而存在于物理现实中当然是真的,但在汽车工厂中,逻辑车轮在某些流程上下文中不独立于汽车而存在可能具有商业意义。在垃圾场的情况下,这当然不太可能。说了这么多,你认为做什么是火车-乘客协会不应该是组合的原因?
  • 我猜有两个原因。 1. 我看不到火车和乘客之间的语义整体关系。一列火车与许多乘客有关,但我绝不会说一列火车是“由”乘客组成的。 2.根据你的建模方式,一个乘客可能会乘坐多趟火车,所以他会成为多辆火车的一部分,这违反了组合规则(最多可以是一个整体。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多