首页 > 其他 > 详细

黑马程序员--交通灯管理系统的学习

时间:2014-03-22 21:30:12      阅读:315      评论:0      收藏:0      [点我收藏+]

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

看过了张孝祥老师的交通等管理系统,觉得这个一个很好的实例,通过解决实际问题,从实际问题中抽象出对象和模型,现将自己的学习总结如下:

抽象+建模:解决实际问题,通常都是首先要分析实际问题,从实际问题中抽象出类,并对这些类建立方法。以及一个很好的参考点就是谁拥有数据,谁就需要提供方法。在交通灯管理系统中建立了三个类:

1. Road类:这个类是这个程序的基础,后续两个类觉得都是根据这个的需要来生成的。在这个类中将传统的十字路口抽象细分为12条路,这个设计为后面的分析定下了个基础,然后在Road类中使用ArrayList来组织路上的汽车,路上的汽车必然需要有进入该Road和离开该Road,针对“进入该Road” 创建一个线程来随机产生汽车,并添加到ArrayList中,针对“离开该Road”也创建一个线程来将汽车从ArrayList中remove掉,而这个remove不是随机,需要在该Road对应的灯为绿灯或者亮着的,那么这就自然想到了灯这个类,并且Lamp类至少需要提供亮灯、灭灯和获取灯的状态方法。

2. Lamp类:觉得Lamp类是该题的亮点,为12条Road对象,建立对应的12个Lamp对象,这样每个Road获取自己对应的Lamp数据。在Lamp枚举类中将12个Lamp对象,分析到最后只关注4组Lamp对象,这个大大简化了程序的设计,觉得这个是点睛(另外一个就是LampController中的currentlamp),使用opposite减掉4组,又通过常绿的减掉4组,最后就只是关注4组Lamp对象。而这4组灯的状态的转换通过next完成,这个next也是点睛的一个域,这样就类似创建了一个循环的状态机。关于Lamp类的设计的确是很赞,从实际的交通灯中抽象出Lamp类,并通过opposite和next来简化流程。

3. LampController类:该类是来控制Lamp变化的类,这个类之所以能比较简单,觉得还是因为Lamp类设计的漂亮~。在这个类中使用了一个currentlamp来指向当前亮着的灯,觉得java中没有指针的,但指针的思想一直是存在的,对象的引用嘛~

总结:该实例很有意义,经过这次学习,感觉对面向对象的思想又有了深一步的理解。抽象和建模(算法)需要经过大量的实际练习来提高这方面的能力和意识、感觉!

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

黑马程序员--交通灯管理系统的学习,布布扣,bubuko.com

黑马程序员--交通灯管理系统的学习

原文:http://www.cnblogs.com/zhblucky/p/3617846.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!