------- android培训、java培训、期待与您交流! ----------
交通灯管理系统视频教程,学完视频后我总结了思路和流程
路线逻辑
以南北方向代表垂直路线
以东西方向代表水平路线首先以南北方向开始
先直行,直行结束后再左转,右转常亮
左转完后,切换到东西方向东西方向也是先直行,再左转,右转常亮
左转结束后,换南北方向
如此循环
面向对象的分析与设计
面向对象设计把握一个重要的经验: 谁拥有数据,谁就对外提供操作这些数据的方法
例子:
人在黑板上画圆 调用圆的方法
列车司机紧急刹车 调用车
人把门关上 调用人两块石头磨成一把石刀,石刀砍树,树变成木材,木材做成椅子
刀工厂接收石头,做出石刀,石刀有砍树方法,得到木材,椅子工厂接收木材,返回椅子
交通灯管理系统的主要对象有: 红绿灯,红绿灯的控制系统,路线
思路:
路线(Road)
每个Road对象代表一条路线,总共有12条路线,即系统中总共要产生12个Road实例对象
每条路线上随机增加新的车辆,增加到一个集合中保存
创建一个线程池,把执行的命令交给线程池中空闲的线程来执行
ExecutorService pool = Executors.newSingleThreadExecutor();
pool.execute(Runnable command)//执行的命令,执行增加车辆每条路线每隔1秒都会检查控制本路线的灯是否为绿
是则将本路线保存的车的集合中的第一辆车移除,看作是车通过十字路口
此线程循环执行
ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
timer.scheduleAtFixedRate(//创建一个定时器
Runnable command,//时间到了执行的任务
long initialDelay,//过多长时间之后去执行任务
long period,//过多长时间再去执行任务
TimeUnit unit) //时间的单位
灯(Lamp):枚举类
创建12个Lamp元素,每个元素代表一个方向上的灯
除了4个右转的路线,绿灯常亮
剩下8个路线,两两成对,可以归为4组
从4组中各取1个灯,对这4个灯依次轮询变亮,与这4个灯方向对应的灯则随之一同变化
所以以这4个路线为主要对象来操作,这4个对象有对应的路线,和下一个路线
其他8个对应路线都为null,下一个路线也为null变量: String 对应路线的名字
String 下一个路线的名字
boolean 灯的情况构造方法(接收对应的路线,下一个路线的,灯的初始情况)
方法:
返回灯情况的方法绿灯的方法
要判断是否有对应的灯,如果有则一起亮绿灯红灯的方法
要判断是否有对应的灯,如果有则一起亮红灯创建一个灯变量,指向下一个灯
判断是否有下一个灯,如果有,则下一个灯变绿
返回下一个灯
灯的控制器(LampController)
创建变量 当前的灯构造方法: 指定一个当前的,并且让当前的灯是绿着
创建一个定时器,每隔10秒钟把当前的灯变红
主函数(main)
创建数组,装好12条路线的名称用for循环,创建12条路线的Road对象
然后调用红绿灯控制器方法