首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件驱动的列车模拟,似乎不能把我的头围绕在它上面。

事件驱动的列车模拟,似乎不能把我的头围绕在它上面。
EN

Stack Overflow用户
提问于 2014-02-13 14:25:23
回答 1查看 821关注 0票数 2

我已经为这个项目工作了很长一段时间,我很难过地说,我很快就会放弃它,因为我不能把我的头围绕在它上面。每次我尝试编写UML或代码时,我都被困了将近八个星期。因此,作为最后的手段,我求助于此寻求帮助。我知道我应该为你们提供一个更完整的解决方案来帮助我,但是由于我还没有得到比我在这个问题上将要进一步展示的更多的东西,所以没有什么可以展示的。

无论如何..。任务是创建一个事件驱动的列车模拟。我先列出要求。

所需经费如下:

车辆

  • 所有车辆都有唯一的身份证号码。
  • 一个重要的特性是一个虚拟函数,它可以提供关于给定车辆的详细信息的字符串表示。
  • 不同类型的车辆及其特性如下:

代码语言:javascript
复制
1. Locomotives   
    - A diesel locomotive  [_Maximum speed and fuel consumption_] 
    - A electric locomotive  [_Maximum speed and effect_] 

代码语言:javascript
复制
1. Passenger Car   
    - Sitting Car  [_Amount of seats and Wifi Yes/No_] 
    - Sleep Car  [_Amount of beds_] 

代码语言:javascript
复制
1. Goods Car   
    - Open Goods Car  [_Loading capacity and loading space_] 
    - Closed Goods Car  [_Capacity_]

  • 当谈到车辆时,我们可以说,给定的车辆要么在车站,要么在车辆池里,要么在火车上。但是任何车辆物体都不应该被移动。所有对象都是在启动时动态创建的(从某个文件读取车辆数据),在模拟过程中,您只需通过对指针周围的指针进行洗牌来传递车辆的所有权。

火车

  • 从一个城镇到另一个城镇的每一列火车,或者更确切地说是火车连接,都有一个独特的列车ID。 这个ID是一个逻辑ID,具有给定ID的列车每天以相同的主成分从同一个出发城镇运行到同一目的地。也就是说,具有给定ID的列车在车辆类型和数量方面总是有相同的车辆,而对于实际车辆则没有。

  • 火车由不同类型的车辆组成。火车也可以由同类型的车辆组成,例如。859号列车由两辆电力机车和三辆卧铺车厢组成。
  • 一列火车在火车发车站集合。 根据出发站的可用车辆,车辆日复一日地不同。如果这列火车不能装配,它就会延迟,直到可以组装为止。

  • 每列火车经过六个不同的州。 没有组装-火车存在,但只是作为一个逻辑的概念,没有机车/汽车连接。 还没有准备好--火车正在它目前的车站组装,汽车正在连接。 准备好了--火车已经准备好离开车站了。 奔跑-它在移动,并向它的目的地。 到达了--火车已经到达目的地了。 完成了--列车正在分离,车辆现在驶往车站的车辆池,车辆现在可以用于车站上的其他列车。

车站

  • 每个站点都有一个可用的车辆池,作为一种提示,我们得到的提示是,一个站点有一个作为数据成员的用于车辆指针的容器。
  • 如果一列火车不能在车站装配,因为车站的车辆池没有列车所需的车辆,那么火车就会延迟,列车仍将停留在“未组装”的-state中。

模拟

  • 简而言之,模拟应该从一个时间点到另一个时间点,例如从08.00到16.00。在仿真过程中,用户可以随时访问仿真中任何给定车辆、列车或火车站的信息。在模拟开始时,最多读取三个文件,并且在这三个文件中存储关于车辆/火车/车站的所有信息。
  • 文件中的开始信息不能包含列车的车辆ID,只能包含它们的类型(例如。"DIESEL_LOCOMOTIVE")。列车装配完毕后,将确定确切的车辆ID (从“未就绪”状态移动到“就绪”状态)
  • 用户以10分钟长的步骤完成仿真,并相应地更新所有的状态/位置/池等。

我知道,一种经典的方法是扫描描述,找出可能是类的名词和可能是操作的动词。一个快速的穿行给了一些中心课程:车辆,火车,车站,连接,TimeTable等等。但是我完全停止了这个任务。我什么都没做就开始放松了。为了帮助我指导编码,我编写了许多UML图,我还编写了许多具有不同类型实现的程序,以至于我快要放弃了。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-13 16:50:05

与用户需求相比,您所拥有的更接近系统需求。这可能是有问题的,因为前者是如何解决问题的,后者是您试图解决的问题。如果这一点不清楚,您的解决方案将是不稳定的。例如,

如果一列火车不能在车站装配,因为车站的车辆池没有列车所需的车辆,那么火车就会延迟,列车仍将停留在“未组装”的-state中。

这是一项系统要求。什么用户需求导致不得不在车站装配火车,用户需要做什么这需要这一点?

我猜你太快就陷入了问题的复杂性。清楚地定义几个简单的目标,并用一些用户需求详细说明它们,并保持简单。如果您有6种类型的车辆和6个州等,没有明确的顶级用户要求,你是过度思考和走得太快。一旦您有了一组简单的用户需求,并且您构建了一个基于DES的解决方案,您可以快速后退一步,并考虑如何修改它,这样您以后就可以将更多的复杂性合并在一起,而不必重新做一堆东西,但这可能为时过早。迭代是最好的方法,学习问题域(一些关于trains的内容,特别是一些我不确定的内容),并逐步学习解决技术(DES)。

我同意这样的评论,这是太宽泛了,但我希望上面的帮助,祝好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21756931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档