您的位置:首页 > 编程语言

雨刷程序参考代码2

2016-04-12 21:39 676 查看
设计类图:



抽象控制杆类:
public abstract class AbstractLever {

protected int lever = 1;
protected int maxlever = 0;

public AbstractLever()
{
lever = 1;
}

public int getMaxLever()
{
return maxlever;
}

public void setMaxLever(int maxlever)
{
this.maxlever = maxlever;
}

public AbstractLever(int maxlever)
{
this.setMaxLever(maxlever);
}

public abstract int getLever();
public abstract int leverUp();
public abstract int leverDown();
}

抽象刻度盘类:public abstract class AbstractDial {

protected int dial = 1;
protected int maxDial = 1;

public AbstractDial()
{
dial = 1;
}

public AbstractDial(int maxDial)
{
setMaxDial(maxDial);
}

public int getMaxDial()
{
return maxDial;
}

public void setMaxDial(int maxDial)
{
this.maxDial = maxDial;
}

public abstract int getDial();
public abstract int dialUp();
public abstract int dialDown();

}

抽象雨刷类:public abstract class AbstractBrush {

protected int speed = 0;

public AbstractBrush(int speed)
{
this.speed = speed;
}

public AbstractBrush()
{
this.speed = 0;
}

public abstract int getSpeed();

public abstract void setSpeed(int speed);

}

抽象中介类:public abstract class AbstractAgent {

protected AbstractLever l;
protected AbstractDial d;
protected AbstractBrush b;

public AbstractAgent()
{
}

public AbstractAgent(AbstractLever l,AbstractDial d,AbstractBrush b)
{
this.l = l;
this.d = d;
this.b = b;
}

public int getLever()
{
return l.getLever();
}

public int getDial()
{
return d.getDial();
}

public abstract void doSpeed();
public abstract void show();

}

控制杆类:public class Lever extends AbstractLever{

public Lever()
{
super();
}

public Lever(int maxlever)
{
super(maxlever);
}

public int getLever()
{
return lever;
}

public int leverUp()
{
if(lever < maxlever)
lever++;
return lever;
}

public int leverDown()
{
if(lever > 1)
lever --;
return lever;
}
}
刻度盘类:public class Dial extends AbstractDial{

public Dial()
{
super();
}

public Dial(int dial)
{
super(dial);
}

public int getDial()
{
return dial;
}

public int dialUp()
{
if(dial < maxDial)
dial++;
return dial;
}

public int dialDown()
{
if(dial > 1)
dial --;
return dial;
}
}

雨刷类:public class Brush extends AbstractBrush{

public Brush()
{
super();
}

public Brush(int speed)
{
super(speed);
}

public int getSpeed()
{
return speed;
}

public void setSpeed(int speed)
{
this.speed = speed;
}

}

第二种雨刷的中介类:public class AgentNew extends AbstractAgent{

public AgentNew()
{
super();
}

public AgentNew(AbstractLever l,AbstractDial d,AbstractBrush b)
{
super(l,d,b);
}

public void doSpeed()
{
int speed = 0;
switch(getLever())
{
case 1:speed = 0;break;
case 2:
switch(getDial())
{
case 1: speed = 4;break;
case 2: speed = 6;break;
case 3: speed = 12;break;
case 4: speed = 18;break;
}
break;
case 3: speed = 30;break;
case 4: speed = 60;break;
case 5: speed = 90;break;
}
b.setSpeed(speed);
}

public void show()
{
String slever = "";
switch(getLever())
{
case 1: slever = "停止";break;
case 2: slever = "间歇";break;
case 3: slever = "低速";break;
case 4: slever = "高速";break;
case 5: slever = "超高速";break;
}

System.out.println("控制杆的档位为:" + slever );
System.out.println("刻度盘的刻度为:" + getDial());
System.out.println("雨刷的速度为:" + b.getSpeed());
}
}

Client类:import java.util.Scanner;

public class Brush_Test {
public static void menu() {
System.out.println("==================Please choose operation============");
System.out.println("\t==========1:Lever Up===========");
System.out.println("\t==========2:Lever Down=========");
System.out.println("\t==========3:Dial Up============");
System.out.println("\t==========4:Dial Down==========");
System.out.println("\t==========0:Quit===============");
System.out.println("=====================================================");
System.out.println("Input the number(0~4):");
}

/**
* @param args
*/
public static void main(String[] args)
{
//第一种雨刷尝试
//AbstractAgent agent = new Agent();
//agent.l = new Lever(4);
//agent.d = new Dial(3);
//agent.b = new Brush();
//第二种雨刷尝试
AbstractAgent agent = new AgentNew();
agent.l = new Lever(5);
agent.d = new Dial(4);
agent.b = new Brush();
Scanner input = new Scanner(System.in);
int choice = 0;

menu();
try{
while(true)
{
choice = input.nextInt();
if(choice == 0)
break;
switch(choice)
{
case 1:
if(agent.getLever() >= agent.l.getMaxLever())
{
System.out.println("控制杆已经处于高速档位,不能再升档!");
menu();
continue;
}
else
{
agent.l.leverUp();
}
break;
case 2:
if(agent.getLever() <= 1)
{
System.out.println("控制杆已经处于停止档位,不能再降档!");
menu();
continue;
}
else
{
agent.l.leverDown();
}
break;
case 3:
if(agent.getDial() >= agent.d.getMaxDial())
{
System.out.println("刻度盘已经处于最高刻度,不能再升档!");
menu();
continue;
}
else
{
agent.d.dialUp();
}
break;
case 4:
if(agent.getDial() <= 1)
{
System.out.println("刻度盘已经处于最低刻度,不能再降档!");
menu();
continue;
}
else
{
agent.d.dialDown();
}
break;
default:
System.out.println("请输入数字0~4");
menu();
continue;
} //switch

agent.doSpeed();
agent.show();
menu();
} //while

}finally{
input.close();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: