事件驱动的火车模拟,似乎无法绕过它

时间:2014-02-13 14:25:24

标签: c++ inheritance polymorphism containers simulation

我'一直都在做这个项目很长一段时间,我' M伤心地说,我'很快就会放弃它,只是因为我能'吨总结我的头围绕它..每次我尝试编写UML或我遇到的代码时,我都被困了将近八周。所以作为最后的手段,我转向SO寻求帮助。而且我知道我应该为你们提供一个更完整的解决方案来帮助我,但是因为我还没有进一步深入了解我在这个问题中进一步展示的内容,所以没有太多可展示的。

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

要求是:

车辆

  • 所有车辆都有唯一的身份证号码。
  • 一个重要的功能是虚拟功能,可以提供有关给定车辆的详细信息的字符串表示。

  • 不同类型的车辆及其属性是:

      
        
    1. 火车头   
          
      • 内燃机车[最高速度和油耗]
      •   
      • 电力机车[最高速度和效果]
      •   
    2.   
    3. 乘用车   
          
      • 坐车[座位数量,Wifi是/否]
      •   
      • 睡车[床位数]
      •   
    4.   
    5. 货车   
          
      • 打开货车[装载量和装载空间]
      •   
      • 封闭货车[容量]

      •   
    6.   
  • 当涉及到车辆时,我们可以说明某辆车是在车站车辆或火车上。但是不应该移动车辆物体。所有对象都是在启动时动态创建的(车辆数据是从某个文件中读取的),在模拟过程中,您只需通过随机移动指针来转移车辆的所有权。

列车

  • 从一个城镇到另一个城镇的每列火车,或者更确切地说是火车连接,都有一个独特的火车ID。

      

    此ID是一个逻辑ID,具有给定ID的列车每天从相同的出发城镇到同一目的地,同时具有相同的PRINCIPAL组成。即具有给定ID的列车在车辆类型和数量方面始终具有相同的车辆组,但在实际车辆方面则不然。

  • 列车由不同类型的车辆组成。列车也可以由相同类型的车辆组成,例如。 859号列车由两辆电力机车和三辆睡车组成。

  • 火车在火车出发站组装。

      

    根据出发站的可用车辆,车辆每天都不同。   如果列车无法组装,则会延迟直到可以组装。

  • 每列火车都经过六种不同的状态。

      

    未组装 - 火车存在,但仅作为一个逻辑概念,没有连接机车/汽车。
      没准备好 - 火车正在当前车站组装,汽车正在连接。
      准备 - 火车现在准备离开它的车站。
      运行 - 它在移动中并朝着它的目的地前进。
      抵达 - 火车现已到达目的地。
      完成 - 火车正在拆卸,车辆现在进入车站车辆,车辆现在可用于车站的其他列车。

  • 每个车站都有一个可用的车辆池,作为一个提示,我们得到一个车站有一个车辆指针容器作为数据成员。
  • 如果火车不能在车站组装,因为车站的车辆没有列车所需的车辆,它将被延迟,火车仍将留在车站。没有组装" -state。

模拟

  • 简而言之,模拟应该从一个时间点发生到另一个时间点,例如从08.00到16.00。在模拟期间,用户可以始终访问模拟中的任何给定车辆的信息,模拟中的任何火车或火车站。在模拟开始时,最多读取三个文件,并且在这三个文件中存储关于车辆/火车/站的所有信息。
  • 来自文件的起始信息不能包含列车的车辆ID,只能包含其类型(例如" DIESEL_LOCOMOTIVE")。一旦列车正在装配(从#34; NOT READY"状态转到" READY"状态),确定确切的车辆ID
  • 用户通过10分钟的步长逐步完成模拟,模拟会相应地更新所有状态/位置/池等。


我知道一种经典的方法是扫描描述以找到可能是操作的类和动词的名词。快速步行提供了一些中心课程:车辆,火车,车站,连接,TimeTable等。但我完全停止了这项任务。我什么都没做,开始松开它。我已经写了很多UML图来帮助我指导编码,而且我已经编写了很多程序,这些程序具有不同类型的实现,而我正处于放弃的边缘。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:2)

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

  如果火车不能在车站组装,因为车站车辆   游泳池没有火车所需的车辆,将会推迟   火车将仍然处于“未组装”状态。

这是系统要求。用户需求导致必须在车站组装列车,用户需要做什么需要这样做?

我的猜测是你跳得太快了解问题的复杂性。明确定义几个简单的目标,并根据一些用户要求对其进行详细说明,并保持简单。如果您有6种类型的车辆和6种状态等,并且没有明确的顶级用户要求,那么您就过度思考并且过快。一旦你有了一套简单的用户需求,并构建了一个基于DES的解决方案,你就可以快速退一步思考如何修改它,这样你以后可以更加复杂,而不必重做一堆东西但是这可能为时过早。迭代是最好的方法,学习问题领域(关于火车的事情,但具体我不确定),并逐渐学习解决方案技术(DES)。

我同意评论说这太宽泛了,但我希望上面有所帮助,祝你好运。