-------<a href="http://www.itheima.com/"">android培训</a>、<a href="http://www.itheima.com/" ">java培训</a>期待与您交流!----------
黑马程序员_编写交通灯系统思路与感想
编写完面试题交通灯管理系统后,让我更是加深了对面向对象编程思想的认识。
总结一下自己在编写程序的经验。
首先要从现实生活中分析要编写的程序的需求与逻辑。然后根据分析的结果把其中涉及到的事务抽象成程序程序语言中的类。运用面向对象的思想把整个程序涉及的动作行为编写成方法放在与其对应的类中。
编写交通灯系统时,根据现实生活可以发现。每个十字路口都会设有四个方向的红绿灯。在不考虑黄灯的情况下。东西方向与南北方向的灯各为一组,亮灯的颜色依次交替变换、车辆根据红灯停绿灯行的原则通过路口。有一个特例,右转弯的车辆不用管红绿灯直接可以通过路口。
在分析完这些后,我的思路是。从中抽象出四个类
Car:行驶的车辆类
Road:路线类。
Lamp:红绿灯枚举,列出了四个方向的红绿灯
ContralOfTraffic:控制红绿灯类
ContralOfTraffic类控制四个红绿灯颜色的交替变化,car类根据其其前方的红绿灯颜色通过十字路口。
Road类不断增加车辆,并减掉义通过路口的车。
具体代码如下
package com.huawei.ithei.traffic;
/*
* 本枚举根据路上12种不同行车方向的车辆定义的车辆枚举。
* 有关于名字的构造方法。抽象方法,根据自己前方红绿灯是否为绿灯而决定是否
* 通过路口的isGo().
* 覆盖toString().
*/
public enum Car {
N2S("由北向南"){
@Override
public boolean isGo() {
// TODO Auto-generated method stub
return Lamp.S.lighted;
}
},
S2N("由南向北"){
@Override
public boolean isGo() {
// TODO Auto-generated method stub
return Lamp.N.lighted;
}},
W2E("由西向东"){
@Override
public boolean isGo() {
// TODO Auto-generated method stub
return Lamp.E.lighted;
}},
E2W("由东向西"){
@Override
public boolean isGo() {
// TODO Auto-generated method stub
return Lamp.W.lighted;
}},
N2E("由北向东"){
@Override
public boolean isGo() {
// TODO Auto-generated method stub
return Lamp.E.lighted;
}},
N2W("由北向西,右转弯"){
@Override
public boolean