本帖最后由 王永杰 于 2012-9-8 16:42 编辑
下面内容是我对交通灯管理系统的具体实践编辑的代码其中肯定会有很多不足,跟不合理的地方,但是大意是跟张老师的源码一样的。我希望大家看了能提出意见。我一定会及时更正。 ==================================业务需求 ========================================
交通灯管理系统的项目需求: 1. 异步随机生成按照各个路线行驶的车辆。 2. 信号灯忽略黄灯,只考虑红灯和绿灯 3. 应考虑左转车辆控制信号灯,右转车辆不受信号灯的控制 4. 具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑(注:南北向车辆与东西向车辆交替放行,同方向等待车 辆应先放行直行车辆而后放行左转车辆) 5. 每辆车通过路口时间为1秒(提示:可通过线程sleep的方式模拟)。 6. 随机生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置。 7. 不要求实现GUI,只考虑系统逻辑实现,可通过log方式展现程序运行结果。 系统设计思路: 信号灯控制车辆行驶的逻辑顺序。一共有12条路线。同一时刻,相反方向的路线行驶逻辑一模一样的,而右转向不受信号灯的控制,可以假定控制系统中也存在右转向信号灯,只是它的状态一直为绿色。这样一个周期内变换的方向就只有4种情况。假定以南向北(S2N)行驶方向开始,往后依次为:南向西(S2W),东向西(E2W),东向南(E2S)。后面又是南向北,进入下一周期,如此循环。具体如下图: 面向对象的分析与设计: 面向对象设计的一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。 由题面意思,可以看出有车,路线,红绿灯。 车辆根据自己所在路线对应的信号灯状态及前面是否有车确定是否行驶,创建车辆本身并没有什么实际意义,它只是存在路线上的一个标号。为了体现车辆行驶逻辑,还需要一个信号灯控制系统,总结起来,需要灯,路线,信号灯控制器三个对象。 灯(Lamp):每个交通灯都维护一个状态(红或绿),它能够返回当前时刻的显示状态,并且有变红和变绿的方法。相同状态的反向灯。当前灯由绿变红后,下一个变绿的灯。灯的数量与线路的数量是一样的,可以采用枚举来表示,这样就不容易出错。
下面是我帖子的内容,我打包放这里了,希望大家多多下载,多多学习,希望对大家有帮助。 |