实现一个咖啡厅的点单系统
一杯咖啡+各种调料
使用面向对象的方法编程,并遵循开闭原则
//2012.8.1
//咖啡厅点单系统
public abstract class Beverage{ //咖啡的抽象类
String name = "unknow";
String description = "unknow";
public String getDescription(){
return description;
}
public String getName(){
return name;
}
public abstract float cost();
};
class HouseBlend extends Beverage{ //咖啡--实例
public HouseBlend(){
name = "HouseBlend";
description = "HouseBlend Coffee ";
}
public float cost(){
return 4.0f;
}
};
class Espresso extends Beverage{
public Espresso(){
name = "Espresso";
description = "Espresso Coffee ";
}
public float cost(){
return 1.0f;
}
};
class Decaf extends Beverage{
public Decaf(){
name = "Decaf";
description = "Decaf Coffee ";
}
public float cost(){
return 2.0f;
}
};
class DarkRoast extends Beverage{
public DarkRoast(){
name = "DarkRoast";
description = "DarkRoast Coffee ";
}
public float cost(){
return 3.0f;
}
};
、
public abstract class Condiment extends Beverage{ //调料的抽象类 继承咖啡抽象类
public abstract float cost();
};
class Whip extends Condiment{ //调料---实例
private Beverage beverage = null;
private int num = 1;
public Whip(Beverage temp){
String name = "Whip";
this.beverage = temp;
}
public Whip(Beverage temp,int i){
this(temp);
this.num = i;
}
public String getDescription(){
return beverage.getDescription() + " + Whip";
}
public float cost(){
return 0.1f*num + beverage.cost();
}
};
class Mocha extends Condiment{
private Beverage beverage = null;
private int num = 1;
public Mocha(Beverage temp){
String name = "Mocha";
this.beverage = temp;
}
public Mocha(Beverage temp,int i){
this(temp);
this.num = i;
}
public String getDescription(){
return beverage.getDescription() + " + Mocha";
}
public float cost(){
return (0.15f*num + beverage.cost());
}
};
。
public class CoffeeDemo01{
public static void main(String args[]){
Beverage a = new Espresso();
System.out.println("name:" + a.getName());
Condiment b = new Mocha(a);
b = new Whip(b);
System.out.println(b.cost());
System.out.println(b.getDescription());
}
}
由此实现点单系统,返回打印餐品和金额