交通灯管理系统

1,想法(有了工具,要学会偷懒,要学会学习)
2,设计(面向对象,封装数据)
3,技术(用新技术,简单安全高效)
4,总结(在设计上精准地找到对象,对象之间的合作形成系统;在编程上尽量使用新技术,新技术是对老技术的升级;)

设计前:

事物简介:路向按不交叉原则同行,车从某条路向(灯绿时)经过,路灯控制器控制当前路向灯的亮灭;
1,画图的意义
      视觉化有助于想象力的扩展,加快捕捉事物规律规则的速度;
2,分析的结果
    路线枚举:     
    S2N,S2W,E2W,E2S,//南直行和左拐;东直行和左拐
    N2S,N2E,W2E,W2N,//北执行和左拐;西直行和左拐,与上对应;
    S2E,E2N,N2W,W2S;//右拐常绿,没有对应灯,也没有下一个灯;

设计时:
      
 复杂的事情,可以细化分工,让对象负责相关环节:
  
    1,路线的属性和功能:让汽车经过,也就是来到路口,过马路,出下一个路口;是一进一出的过程;集合
    2,路灯的属性和功能:对应路线的路灯,下一个路线的路灯,路灯的亮灭情况,亮灯功能和灭灯功能;亮灯时,
    把对应的路灯亮起;当被灭灯时,把下一个方向的路灯亮起,并把对应的灯灭掉;
    3,路灯控制器的属性和功能:当前所控制的等,定时连环灭掉当前的路灯;
    
     找到关系:控制器控制灯,灯限制车行,车从十字路口的路线经过;
     找到对象:Road,Lamp,LampController
 
 
  车上路——集合add & remove
  灯控车——12盏灯,4盏常绿,8栈分四对,成对亮或灭,四对连环切换;
  控制器控制灯——调度执行线程,预定连环执行关掉当前灯的关闭任务,四对灯的轮流亮灯;

编程时:
    要学会提高技术含量
    1,(匿名)内部类访问外部类的同名变量时怎么写?Road.this.name;
    2, 如何体现面向接口编程思想?声明接口,建立类对象 List<String> vechicles = new ArrayList<String>();
    3, java5的新技术,线程池,java.util.concurrent.Executors.newScheduledThreadPool(int corePoolSize)
    4, 随机数生成器:java.util.Random.nextInt(int n)
    5, 连环执行控制器与匿名内部类的结合运用:scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
   

参考面试题,学会寻找规律:
      
        两块石头磨成刀,用刀砍树得木材,用木材加工成椅子,强调刀被使用,所以刀是参数,不对,还是
        两块石头磨成刀,刀能砍树,砍成木材,用木材加工成椅子强调刀的功能,所以刀是对象!
       
        数据与数据的关系:常规的运算
        数据与对象的关系:两块石头磨成刀
        对象与对象的关系:用刀砍树得木材:木材是对象,构造函数接收树(变量)和刀(对象);
       
        参数是材料,返回值是成品;方法是对象的功能;
       
        老师的方法
        StoneKnife = KnifeFactory.createKnife(stone1,stone2)
        meteial = StoneKnife.cut(tree) (内部也调用cut方法)
        chair = ChairFactory.makeChair(meteial)
       
        我的方法有点麻烦
        StoneKnife = KnifeFactory.createKnife(stone1,stone2)
        meteial = MeteialFactory.createMeteial(StoneKnife,tree) (内部也调用cut方法)
        chair = ChairFactory.makeChair(meteial)

总结:       
 
  面向对象编程:主函数面向对象,主函数建立Road对象和LampController对象 寻找对象思路:“的”字诀,是你的数据就封装到你身上;(路上的车)(灯上的颜色)(控制器上的时间)                 车是不是对象?以上对象是否需要知道汽车的属性和功能?颜色类型和马力以及速度?不需要,所以不封装这些数据!              汽车不是对象,那么汽车是什么呢?不是对象就是数据,用字符串和变量表示就可以了(不是基本数据类型,就是引用类型)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值