黑马程序员-----张孝祥-7K月薪面试题破解之一_交通灯管理系统视频教程观后总结

时间:2023-02-17 18:50:51

------- 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对象

 然后调用红绿灯控制器方法