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

黑马程序员_7K面试题_交通灯管理系统

2014-02-06 00:45 232 查看
-面向对象分析设计经验:谁用于数据,谁就对外提供操作这些数据的方法。

典型案例:

     人在黑板上画圆。

分析:

共有三个对象:人、黑板、圆。动作:画

画圆需要圆心和半径,圆心和半径都是圆的属性上,圆拥有数据,所以圆对象提供画圆的方法

圆在黑板上,黑板拥有数据,搜易对外提供访问圆的方法。

列车司机紧急刹车:

分析:

共有两个对象:车、司机。动作:刹车

刹车需要摩擦车轮使车轮停转,抱死,车轮和抱死系统都在车上,车拥有数据,所以车对象提供刹车的方法。

交通灯管理系统:

需求:交通灯灯需要红、绿,需要红的时候下一个灯绿,有间隔时间控制等转换。车在路口上有左转、右转、直行,通过路口,有通过路口的时间。对象:

交通灯:有红绿、下一个灯的数据,考虑现实情况,相反方向的灯一样,所以还有相反方向的灯的数据。

控制系统:间隔时间控制灯转换,控制系统中有灯数据,以及转换的时间。

路:左转、右转、直行。由于车没有自己的数据。只有通过路口的时间,所以把通过路口的时间放在路对象上,路上有车数据,绿灯时间隔一秒通过前面的第一辆车

设计:

路:设计一个表示路线的类:Road。

路口的一个方向,有三个路线(左转、右转、前行),共有四个路口,所以有十二条路线,十二个Road对象。

每条路线都有车辆,用集合存储,随机往路线上增加车辆,添加到集合中,当本路线的灯为绿时每秒通过一辆车,从集合中删除。

所以Road类中要定义灯的对象、一个集合用于存放车辆、随机增加车辆的功能、每秒判断一次等是否为绿,为绿时从集合中删除一辆车

交通灯:设计一个表示交通灯的类:Lamp。

每个交通灯都有两个状态:亮(绿)或不亮(红),需要有变亮的方法,下一个灯的数据,当前灯变黑下一个灯变亮的方法,并且能返回当前状态。

总共有十二条路线,每条路线有一个灯,所以有十二个灯,右转的路线不受等的控制,但为了采用统一的处理方式,设置四个右转的灯,设置为常亮(绿)。

除了右转的四个灯外,相反方向的路线灯状态是一样的,所以其他八个灯两两成对,可以分为四组,在编程处理时,只要从这4组中各取出一个灯,对这4个灯依次轮询变亮,与这4个灯方向对应的灯则随之一同变化。所以需要一个变量记录相反方向的灯。

管理灯状态的系统:设计LampController一个类表示:类里有定时让当前绿灯变红的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: