您的位置:首页 > 职场人生

黑马程序员_交通灯管理系统

2012-05-03 20:13 246 查看
----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------

面向对象设计把握一个重要经验:

         谁拥有数据,谁就对外提供操作这些数据的方法。

面向对象分析 设计

两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子

stone             material            tree           chair

stoneKnife = KnifeFactory.creatKnife(stone);

material = StoneKnife.cut(tree);

chair = chairFactory.makeChair(material);

模拟实现十字路口的交通灯管理系统

项目分析

通过画图可知十字路口的路线共有十二条。
分析的时候因为路线都是互相对应的,所以只要分析四条线就可以了,只要考虑从南到北,从南向西拐弯的,从东到西,从东向南拐弯的即可;这样就大大简化了路线的分析,让思路变得更清晰;
     本来应该有八个灯,但为了统一编程模型,可以假设每条路线都有一个红绿灯对其进行控制,右转弯的4条路线的控制灯可以假设为常绿,另外,其他八条路线是两辆成对的,可以归为四组,所以通过分析可以知道只需考虑图中标注了数字号的4条路线的控制灯的切换顺序,这四条路线相反方向的灯的切换随着这四条路线切换,不必额外考虑;
  1.灯变红变绿,必须有一个控制器来控制,这一个控制器需要控制所有的红绿灯,所以只需一个控制器对象,这时候想到要用到单例设计模式。
2.路上的车有增有减,路中应该有一个存储车辆的集合,所以把路作为一个对象来考虑,定义一路的类;
3.车是走是停,由灯变红变绿来控制,灯有红,绿的属性,所以把灯也作为对象来考虑;
灯的设计:
因为灯的数量只有12个,所以想到用枚举来控制;
灯要有三个成员变量,第一是下一个灯,第二个是灯的状态,还有就是相反方向的灯
控制把当前灯变绿,然后过规定的时间,把当前灯变红,把下一个灯变绿。
路的设计:
总共有12条路线,也就是要定义12个路的对象,每个对象都要有一个线程在每隔一个随机的时间向路线上增加一辆车,然后在规定的时间检查自己路线上的灯是红是绿,如果是绿灯,就从集合里减去一辆车让他穿过马路;
 

 

----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------

详细请查看:<a href="http://edu.csdn.net/heima"target="blank">http://edu.csdn.net/heima</a>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息