某小区物业为了更好的服务住户,为空巢老人和单亲家庭发放社区购物优惠证。空巢老人优惠证和单亲家庭可以享受购物打折优惠,具体优惠力度视家庭情况而定,空巢老人优惠证在8折的基础上,每多一个老人折扣减1到1.5之间不定(最多两个老人),单亲家庭优惠证在9折的基础上,每多一个孩子,折扣减0.5-1之间不定(最多5个孩子)。持证到物业处,输入家庭单人享受的减少折扣,可以查询优惠证的折扣力度。请依据题目完成下列题目: (1)设计优惠证抽象类Discount,包含家庭类型和享受优惠人数两个封装属性,为属性添加setter
时间: 2023-11-16 10:03:50 浏览: 82
和getter方法。
```
public abstract class Discount {
private String familyType;
private int num;
public String getFamilyType() {
return familyType;
}
public void setFamilyType(String familyType) {
this.familyType = familyType;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public abstract double calculateDiscount();
}
```
(2)设计空巢老人优惠证类ElderDiscount,继承Discount类,实现calculateDiscount()方法,根据老人数量计算折扣力度。
```
public class ElderDiscount extends Discount {
@Override
public double calculateDiscount() {
int num = getNum();
double discount = 0.8;
if (num >= 1 && num <= 2) {
discount -= num * 0.1;
} else if (num > 2) {
discount -= 0.3;
}
return discount;
}
}
```
(3)设计单亲家庭优惠证类SingleParentDiscount,继承Discount类,实现calculateDiscount()方法,根据孩子数量计算折扣力度。
```
public class SingleParentDiscount extends Discount {
@Override
public double calculateDiscount() {
int num = getNum();
double discount = 0.9;
if (num >= 1 && num <= 5) {
discount -= num * 0.05;
} else if (num > 5) {
discount -= 0.25;
}
return discount;
}
}
```
(4)设计物业管理类PropertyManagement,实现查询优惠证折扣力度的方法getDiscount(),根据家庭类型和享受优惠人数创建相应的优惠证对象,并调用对象的calculateDiscount()方法计算折扣力度。
```
public class PropertyManagement {
public double getDiscount(String familyType, int num) {
Discount discount;
if (familyType.equals("空巢老人")) {
discount = new ElderDiscount();
} else if (familyType.equals("单亲家庭")) {
discount = new SingleParentDiscount();
} else {
return 1.0;
}
discount.setNum(num);
return discount.calculateDiscount();
}
}
```
这样,我们就完成了题目要求的类的设计。在实际使用时,可以根据需要进行修改和扩展。
阅读全文