- ————————————————————————路的对象设计:——————————————————————————————
- class Road
- {
- List car= new ArrayList<String>();
- String name=null;路线名
- 1,在构造方法中让单独开一个线程向集合中加入元素,
- 表示此路线随机增加一辆车
- 2,再在构造方法中另开一个线程定义一个定时器定义每隔1秒检查自己的路线的灯是否是绿灯,如果是绿的就将集合的第一个元素删除。
- 表示此路线为绿灯时一秒钟减少一辆车。
- Road(String name)
- {
- this.name=name;
- 单独一个线程让此路线进入车辆随机增加元素
- ———开一个线程,让线程随机休眠几秒钟达到随机增加车辆的效果
- {
- for (int i=1;i<1000 ;i++ )
- {
- 让此线程sleep();时间1到10秒。醒了就在集合中加入字符串。
- car.add(name+"-"+i);//表示某一路线加入了第i辆车。
- }
- }
- ————另开一个线程,定义一个定时器实现线程在规定的时间了循环做某事
- {
-
- 定义一个定时器定义每隔1秒检查自己的路线的灯是否是绿灯,如果是绿的就将集合的第一个元素删除
- }
- }
- }
- }
- ————————————————————————灯面向对象的设计—————————————————————————————
- public enum Lamp()
- {
- 1,12方向的灯的元素;
- S2N("N2S","S2W",false);N2S(null,null,false) ;
- 共12个灯,其他8个灯是两对应的,4个有对应灯和下一个灯传入,这4个灯的对应灯的对应灯和下一个灯为null。
- S2E(null,null,true)
- 4个右转湾的对应灯和下一个灯为null,而且全部长亮。
- 2, boolean lingthed;表示等的亮暗状态
-
- 3, public method1()
- {
- 返回灯的亮暗状态;
- }
- 4,public void light(){
- 4.1,把自己的灯变亮,
- if (有对应的灯?)//把对应的灯变亮
- {
- 4.1.2,通过对应灯对象名的Lamp.ValueOf(String duiyingdeng);获取对应灯的对象
- 4.1.3,让后用对应的灯的对象调用light();这个方法把自己变亮
- }
- 4.2,if (有下一个灯?)//把下一个灯变红
- {
- 4.2.1, 通过下一个灯对象名的Lamp.ValueOf(String duiyingdeng);获取对应灯的对象
- 4.2.2,让后下一个灯的对象调用blackout();这个方法把自己变红
- }
-
- }
- 5,public Lamp blackout()
- {
- 5.1,把自己灯变红
- if (有没对应灯?)
- {
- 5.1.2,通过对应灯对象名的Lamp.ValueOf(String duiyingdeng);获取对应灯的对象
- 5.1.3,让后用对应的灯的对象调用light();这个方法把自己变红
- }
- 5.2,if (有下一个灯?)//把下一个灯变红
- {
- 4.2.1, 通过下一个灯对象名的Lamp.ValueOf(String duiyingdeng);获取对应灯的对象
- 4.2.2,让后下一个灯的对象调用blackout();这个方法把自己变绿
- }
- return 下一个灯;//把自己变红,把下一个灯变绿,然后返回这个变绿的灯。
- }
- 6,String duiyingdeng;定义一个字符串存储对象的名字,将对应灯的对象名传入构造函数
-
- 7,String naxtlamp;定义一个字符变量存储下一个灯的对象名,在自己变暗时把下一个灯变亮;
-
- 8 ,private Lamp(String lampname,String naxtlamp,boolean flag )
- {
- duiyingdeng=lampname;//把对应灯对象名传给当前灯的duiyindeng中
- this.naxtlamp=naxtlamp;
- lingthed=flag;//传入亮暗状态
- }
- }
- ————————————————————灯控制系统的面向对象的设计——————————————————————————————
- 灯控制系统:
- class LampController()
- {
- private Lamp currentlamp;定义一个灯类储存当前灯
-
- public lampyunxing()
- {
- currentlamp=Lemp.S2N;//获取一个灯的对象
- currentlamp.light();让当前灯亮起来
-
- 定义一个计时器让当前灯隔一段时间就变红,把下一个灯变绿
- 这需要用多线程实现;
- 注意:当当前灯变红,下一个灯变绿;然后这个绿灯要变成当前灯,让它循环起来,
- 所以最好的方法是在当前灯变红的方法中返回下一个灯,
-
- }
- }
- ——————————————主函数实现交通系统运行————————————
- 让此系统运转起来的主函数:
- class MainClass()
- {
- public static void main(String[] ages)
- {
- 1,new 出12条路线;让车跑起来
- 2,调用灯控系统;让车有规则的跑
- }
- }
复制代码 |