Peer Programming Project: 4 Elevators Scheduler 附加题 157 165
1.改进电梯调度的interface 设计, 让它更好地反映现实, 更能让学生练习算法, 更好地实现信息隐藏和信息共享。
- 每个电梯增加目标楼层数组,这样可以更好地进行任务的分配,在我们的电梯中,这个数组即是DestinyFloors[]
- 在实际情况中,每个人应该有进入电梯的时间,而不是电梯开门一下子就进去了。因此,电梯应该有开门、关门按钮,当没有人进入之后,在电梯内的人可以摁下关门按钮,同理,若到了5秒人还没有上完,可以摁下开门按钮。这样也更加符合实际情况。
- 我们认为可以删除对最大人数的限制。电梯毕竟没有监控其内部人数的功能,而是通过最大载重判断是否安全。比如10个100kg的人进入一个载重1000kg的电梯是可以接受的,同样20个50kg的人进入电梯也是可行的。人数限制有些累赘。
- 增加电梯闲置时间。有比较极端的情况就是计算后所有任务恰巧都分配给了同一部电梯,显然这样的效率不高。如果给每部电梯增加闲置时间变量,这样就能在一部电梯闲置较长时间后对其进行任务的分配,提高分配算法的效率。
2.目前的这个测试程序只有命令行界面, 请给它设计UI界面, 显示乘客/电梯的运动, 并实现之。
我们设计的UI是从整个大楼角度提供各个电梯的信息,加入了图形界面使电梯状态更加清晰,容易观察电梯的运行情况。
初始化
运行中
结束!
我们编写的GUI暂时还不能识别错误文件输入
3.阅读有关 MVC 和 MVVM 设计模式的文章。说明你写的电梯调度的UI /Algorithm/interface 如何实现了MVC 或MVVM 的算法。
首先对这两个术语进行解释:
- MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
- MVVM是Model-View-ViewModel的简写。MVVM(Model-View-ViewModel)框架的由来是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性揉合进去,以应对客户日益复杂的需求变化。
- ——摘自百度百科
- MVC在我们的代码中体现得比较多。说白了就是为了是各个模块尽量分离,实现低耦合。
- 在我们的程序中,主要就是体现了低耦合高内聚的思想。虽然暂时不是很理解M,V,C之间的协同工作方式,但是我们代码中的Scheduler主要负责任务分配,输出的任务由Passenger完成,而输入的任务完全又Loader负责。这就是我们对MVC以及MVVM的理解。