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

-面向对象分析设计经验:谁用于数据,谁就对外提供操作这些数据的方法。

典型案例:

     人在黑板上画圆。

分析:

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

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

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

列车司机紧急刹车:

分析:

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

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


交通灯管理系统:

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

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

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

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

设计:

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

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

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

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

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

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

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

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

管理灯状态的系统:设计LampController一个类表示:类里有定时让当前绿灯变红的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值