Java交通灯项目一点感悟
1.编程规范
不要在面试时再去注意编程规范的问题,而要在平时练习的细节中就要注意到这一点,按照规范去编程,养成好的习惯。
A:建立包名
在开发中一般用公司的域名的反写作为包名的,例如www.baidu.com,那么包名就为com.baidu,然后再加上开发的项目名等,还有包名为全部小写。
B:定义变量
注意定义变量的用名规范,变量名要做到见名知意,而且如果有多个词汇组成,那么首单词全部小写,第二个单词首字母大写。
2.编程建议
在平时创建对象时一般都直接用类名直接创建对象,然而听张老师的视频的建议是面向接口编程。
A:面向接口编程,多态的前提之一。
B:接口是一组规范,它规定了实现接口的类或接口必须实现拥有的一组规则。
C:面向接口编程可以提高程序的可扩展性。
3.交通项目知识点分析
在我们平时可能并不注意这些现象,所以编写这个程序的前提是要理解现实生活的一些现象,在十字路口,同一个方向的灯是一致的,假如说南面的交通灯是绿的,那么背面的灯也是绿的,在此时南北方向的车都可以通行,由南往西转弯的车和由北往东转弯的车,当然右转的车俩不受交通灯的控制,所以把车辆分类为:
在这里同一中颜色的为可以在直行车辆行驶完后然后再行驶,通俗的说就是属于同一个系列的。
4.项目分析
根据交通灯项目分析定义为四个类,一个是road类,Lamp类,LampController类和MainClass测试类。
A:Road类
结合生活常识,车辆行驶的方向上分类有12个方向,那么对应到Road类上相当于有12条路可以供这些车来行驶,所以创建了12条Road类实例对象。
在每条路上随机产生车辆,然后把这些产生的车辆存储到集合中。
然后检查相应路线上的灯是否是绿灯,如果是,那么车辆放行,并在集合中相应去除这些车辆。
随机睡眠时间代码体现
Thead.sleep((new Random().nextInt(10)+1)*1000)
B:Lamp类
Lamp类表示交通灯,那么有12个方向就对应有12个交通灯,除了右转的灯外别的8个方向上的灯都是成对出现的,那么就可以把这些灯非为4组,让这个组中的一个灯来控制相应的灯,然而也记住下一个灯的变化。
在这里用枚举可以简化了编程的复杂程度。
C:LampController类
在这里用LampController类的构造方法中设定一个绿灯,然后使用一个定时器定义时间来控制灯之间的转换。
D:MainClass类来创建创建路的对象和使用LampController类创建对象控制灯的变化进而控制车辆的通行。
5.关于内部类访问外部类变量解决方法
A:内部类访问外部类的局部变量,那么可以在外部类的局部变量上加上final修饰。
B:也可以使用加上外部类名.this.变量名来访问外部类的变量。