黑马程序员2012.6.26.21.43
来源:互联网 发布:淘宝店铺怎么自己装修 编辑:程序博客网 时间:2024/06/05 07:24
---------------------- android培训、java培训、期待与您交流! ---------------------
交通灯管理系统:
今天把交通灯管理系统看了一下,刚开始觉得很难,无从下手,看过老师的视频以后啊,就感觉,思路真的太重要了。
要活学活用,就是先思考会用到哪方面的知识,那个体现出了是对象的特性,那个元素是数据。
同时还要和现实结合起来,就像交通灯,我以前竟然不知道在没有行走箭头表示的时候,路口的右拐不收红绿灯的控制。
又或者,平时根本没有注意过一个十字路口有多少条路线,以及他们的红绿灯变红变绿有什么关系。
现在看了视频,就感觉,其实只要系统逻辑上已经思考的很清楚了,那么这个系统可以用到的技术、知识就可以很快的定下来。
在定义Lamp时,每个Lamp元素代表一个方向上的灯,总共有12个方向,所有总共有12个Lamp元素。
这12Lamp元素中,每两个形成一组,一组灯同时变绿或变红,还有4个右拐的灯,每两个形成一组,一组灯同时变绿或变红,可以假想它们总是绿灯。
因为只有12个方向上的灯,这些方向都是固定的值,在这上面就用到了枚举,S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),
N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),
S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);
每一次除了右拐的4个等全亮外,每次有对应的两个灯绿灯,或者红灯。然后依次4组对应的灯红或者绿。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个。
否则,编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值。
枚举类有value,valueOf,toString,ordinal等方法,她是一种特殊的类,其中的每个元素都是该类的一个实例对象。
每一个枚举的元素都是一个对象。
每个Road对象代表了一条路线,一共有12条路线,系统中要产生12个Road实例对象。
每条对象都会随机增加新的车辆((new Random().nextInt(10) + 1) * 1000),将这些车辆放到一个集合中保存。
每条路线每隔一秒都会检查控制本路线的灯是否为绿,如果是就将本路线保存车的集合中的第一辆车移除,即表示车穿过了路口。
每隔一秒检查对应的灯是否为绿,这个用到了计时器。
ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);
这个是他的scheduleAtFixedRate方法:
ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
long initialDelay,
long period,
TimeUnit unit)
command - 要执行的任务
initialDelay - 首次执行的延迟时间
period - 连续执行之间的周期
unit - initialDelay 和 period 参数的时间单位
创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在 initialDelay 后开始执行,然后在 initialDelay+period 后执行,接着在 initialDelay + 2 * period 后执行,依此类推。
在lamp 的控制方法中,也定义了一个计时器,每个10秒将当前绿灯变为红灯,并让下一个方向的灯变绿
在主函数中产生12个方向的路线,将他们呢放到一个数组中,循环得到当前方向上的路线,LampController灯控制得到这条路线上的灯变绿,Road便开始增加车辆,移除车辆了 。
----------------------- android培训、java培训、期待与您交流! ----------------------
- 黑马程序员2012.6.26.21.43
- 黑马程序员2012.6.10.14.23
- 黑马程序员2012.6.11.20.45
- 黑马程序员2012.6.12.16.34
- 黑马程序员2012.6.13.21.16
- 黑马程序员2012.6.15.20.35
- 黑马程序员2012.6.19.23.46
- 黑马程序员2012.6.21.14.12
- 黑马程序员2012.6.22.22.34
- 黑马程序员2012.6.26.03.45
- 黑马程序员2012.6.27.22.39
- 黑马程序员---------------
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- Oracle多行记录合并/连接/聚合字符串的几种方法(转)
- apache目录的访问控制
- ArcGIS for iOS、Android、Windows新产品全线发布
- java获取当前路径
- percona mysql5.5源码安装过程
- 黑马程序员2012.6.26.21.43
- 锁屏代码位置
- Struts 2框架整合Spring
- HBase专题介绍 1
- NSString简单操作三例
- 异常详细信息: System.InvalidOperationException: 对象的当前状态使该操作无效
- vb 已经关闭进程的自动开启
- 移除django的旧版本
- 一、git工具使用手册--提交代码