任务:为一家饮品店设计、实现饮品结算功能。该店有coffee、tea两种饮品,coffee可添加suger、milk等辅料,tea可以添加lemon、orange等辅料,辅料同样需要计算价格 Java
时间: 2024-10-17 17:05:54 浏览: 8
为一家饮品店设计、实现饮品结算功能,可以通过使用面向对象编程中的多态性和封装来实现。以下是一个简单的Java示例:
```java
// 基础饮品类
abstract class Beverage {
String description;
public Beverage(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public abstract double cost();
}
// Coffee类
class Coffee extends Beverage {
public Coffee() {
super("Coffee");
}
@Override
public double cost() {
return 10.00; // 基本价格
}
}
// Tea类
class Tea extends Beverage {
public Tea() {
super("Tea");
}
@Override
public double cost() {
return 8.00; // 基本价格
}
}
// 辅料类
abstract class CondimentDecorator extends Beverage {
private Beverage beverage;
public CondimentDecorator(Beverage beverage) {
this.beverage = beverage;
}
@Override
public String getDescription() {
return beverage.getDescription();
}
}
// Sugar辅料
class Sugar extends CondimentDecorator {
public Sugar(Beverage beverage) {
super(beverage);
}
@Override
public double cost() {
return beverage.cost() + 0.50; // 加糖的价格
}
@Override
public String getDescription() {
return beverage.getDescription() + ", Sugar";
}
}
// Milk辅料
class Milk extends CondimentDecorator {
public Milk(Beverage beverage) {
super(beverage);
}
@Override
public double cost() {
return beverage.cost() + 0.75; // 加奶的价格
}
@Override
public String getDescription() {
return beverage.getDescription() + ", Milk";
}
}
// Lemon辅料
class Lemon extends CondimentDecorator {
public Lemon(Beverage beverage) {
super(beverage);
}
@Override
public double cost() {
return beverage.cost() + 0.25; // 加柠檬的价格
}
@Override
public String getDescription() {
return beverage.getDescription() + ", Lemon";
}
}
// Orange辅料
class Orange extends CondimentDecorator {
public Orange(Beverage beverage) {
super(beverage);
}
@Override
public double cost() {
return beverage.cost() + 0.35; // 加橙子的价格
}
@Override
public String getDescription() {
return beverage.getDescription() + ", Orange";
}
}
// 测试代码
public class BeverageTest {
public static void main(String[] args) {
Beverage beverage = new Coffee(); // 基本饮品是咖啡
beverage = new Milk(beverage); // 添加牛奶辅料
beverage = new Sugar(beverage); // 添加糖辅料
System.out.println(beverage.getDescription() + ": $" + beverage.cost());
// 输出: Coffee, Milk, Sugar: $11.25
}
}
```
在这个示例中,我们定义了一个基础的`Beverage`类和两个具体的饮品类`Coffee`和`Tea`。我们还定义了一些辅料类,如`Sugar`、`Milk`、`Lemon`和`Orange`,这些辅料类通过继承`CondimentDecorator`类来装饰基础饮品。每个辅料都会增加相应的价格。最后,通过在主函数中组合不同的饮品和辅料,我们可以计算出最终的饮品价格。
阅读全文