【问题标题】:The best way to create the class diagram创建类图的最佳方法
【发布时间】:2023-03-26 20:58:01
【问题描述】:

问题如下:一场比赛有参赛者,比赛有一条起跑线,按照分配给参赛者的编号排序。每个参与者都可以使用车辆,并且需要登记车辆的信息。所以信息是: 种族:名称、地点、时间……汽车:比赛开始编号、制造年份、型号……自行车:比赛开始编号、型号、车轮尺寸……马车:比赛开始数量,马的数量,...

创建类图并使用按比赛开始编号排序的车辆获得起跑线的最佳​​方法是什么?

案例 A:raceStartNumber 分布在不同的实体中。有必要通过raceStartNumber 进行映射并对获得的元素进行排序。

案例 B:所有车辆都将在起跑线上订购,但车辆类别始终有两个关联,例如 null。

那么,你认为哪种情况更好?有没有其他方法可以做到?

【问题讨论】:

  • 我认为您将不得不重新阅读有关继承的章节。
  • 这个。并阅读有关协会课程的信息,这显然也是您的老师也希望您提供的内容。

标签: uml class-diagram


【解决方案1】:

从来没有最佳解决方案。你总是有权衡,只是有些可能不那么重要。

您的第二个示例是错误的,因为您使用复合聚合而不是泛化。您将需要一个开放的三角形而不是菱形并省略多重性。

关于你应该研究的选项Composition over inheritance

正如@Ister 所指出的,您的第一种方法也有一个重大缺陷。这就是raceStartNumber 是每辆车的单独属性。而且没有什么限制它们是独一无二的。

除非您有某些要求,否则您通常不会对这些 id 属性进行建模。对象的 id 是隐含的(在编程语言中,它通常是实例的内存地址)。

由于本网站不用于评论,因此我不会详细说明。

【讨论】:

  • 我要补充一点,第一个解决方案充其量也是一个糟糕的设计,并且不满足所描述的要求。
  • 我又添加了几个 cmets。有人会被引诱去了解更多细节,但这个网站不适合代码审查。所以我会保持原样。
  • 是的。应该有一种简单的方法可以将问题转换为新的论坛主题。
  • 如果我们只在类图中寻求完美,我们在实现控制器时会做很多工作。所以。基于这两个图的想法(即使它们有错误),案例 A 很复杂,因为它没有给我们起点(使用查询),我们必须创建它。案例 B 是为同样的事情创建的。如果我们使用泛化,我们将遇到与开始时相同的问题,我们没有查询的起始行。在案例 B 中,我们有起跑线,但我们必须检查数据有什么关联。我不知道我是对的还是他们理解我。
  • @Philips 老实说,我不完全理解您的评论。但似乎你明白了你必须以任何一种方式处理你的模型:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 2010-11-03
  • 2015-09-09
  • 1970-01-01
  • 2014-09-06
  • 1970-01-01
相关资源
最近更新 更多