Java 关于铁路系统建模的问题

Java 关于铁路系统建模的问题,java,interface,abstract-class,Java,Interface,Abstract Class,我目前正在从事一项任务,我必须在java中构建一个铁路模拟项目(大学项目) 机车车辆有三种类型:货车、机车和动车组 所有类型的机车车辆都有名称和长度 此外,还有三种类型的货车和机车 是我创建的一个简单的UML图 现在,我仍然需要实现这个“功能”: 动车组ID按照与机车相同的规则组成。因此,机车和动车组共享相同的ID空间。动车组具有特殊类型的联轴器,因此只能由相同系列的动车组组成 机车和动车组使用相同ID空间的最佳方式是什么 这是一个好的模型还是我应该使用接口?我希望得到反馈和提示。提前谢谢 机车

我目前正在从事一项任务,我必须在java中构建一个铁路模拟项目(大学项目)

机车车辆有三种类型:货车、机车和动车组

所有类型的机车车辆都有名称和长度

此外,还有三种类型的货车和机车

是我创建的一个简单的UML图

现在,我仍然需要实现这个“功能”:

动车组ID按照与机车相同的规则组成。因此,机车和动车组共享相同的ID空间。动车组具有特殊类型的联轴器,因此只能由相同系列的动车组组成

机车和动车组使用相同ID空间的最佳方式是什么

这是一个好的模型还是我应该使用接口?我希望得到反馈和提示。提前谢谢

机车和动车组使用相同ID空间的最佳方式是什么

没关系,只要它是独一无二的。只需使用一个序列号,或者,如果您想要一个不绑定到单个计数器的序列号,请使用一个完全随机的序列号(128位或更多)。为什么不在你做的时候用一下呢

你应该问自己的一个问题是:这个身份证会被用在马车上吗?如果是这样,一个简短的静态序列号(或字符串)肯定更有意义。可能会有一些注册机构,所以在这种情况下,你有你的集中柜台就在那里永远不要忘记检查您的模型是否与真实世界匹配

在ID前面加上传输类型是有意义的,尽管在这种情况下,我认为它实际上不再使用相同的空间

这是一个好的模型还是我应该使用接口?我希望得到反馈和提示

编辑:错了,我以为所有的机车车辆都会有一个ID

不,这很好,毕竟你对ID有操作。您可能会在rolling stock中添加其他类似于所有子类的功能。请注意,许多环境都有提取接口并替换该接口的现有引用的方法。重构不是你想做的事情,但是当你需要它的时候,它就在那里

编辑:

如果你只有一个机车和车辆的ID,那么有两个选择。最好是插入一个中间抽象类,该类定义一个
identifiableRollingStock
中间类。还有其他选项,比如创建可选ID,或者使用装饰器模式。这是一个有点奇怪,如果货车无法识别,但在NL,我很肯定,所有的机车车辆是可识别的

我只是想知道是否所有的机车车辆都有一个名字。我可以看到一些货车只有一个号码。这是另一个真实世界的检查


OT

动车组具有特殊类型的联轴器,因此只能由相同系列的动车组组成”


写这篇文章的人应该被射入轨道。好吧,把它变成国际空间站。一圈又一圈…

我无法访问你的链接,公司防火墙…但是我建议你创建一个基类,它具有所有类型所需的所有共同特性,然后从eac的基类派生出一个唯一的类型类h、 仅包含唯一属性。但我还没有任何代码,我无法在@codereview中发布没有代码行的代码。感谢您的反馈!此ID不会用于货车。动车组(或火车组)和机车的ID由一个系列和一个名称(-)组成。例如“T30-34K“可能是个名字。我现在如何为这两个类使用相同的ID空间?看起来像一个普通的字符串。如果您将它放在继承字段中,并将其设置为
字符串
,那么如果您问我,您已经在那里了。如果您有其他类型需求,则必须使其明确。您可能需要一个类来生成此类ID。有趣的是,这看起来确实像一个数字,你会放在马车上。但这将严重限制机车车辆的数量。做出了更改,编辑了答案。实际上所有机车车辆都有一个Id。货车有一个唯一的Id(升序为正整数)。机车和动车组共享ID空间,ID结构为“-”。名称由RollingStock继承,我添加了属性“series”“对于机车和多人。是创建另一个在地图中存储id的类的最佳选择,还是我仍然在错误的轨道上?感谢您迄今为止的帮助!我不会过分使用地图。您只需要确保在一个系列中不会获得相同的名称…”。。。