阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某大型购物中心欲开发一套收银软件,要求其能够支持购物中心在不同时期推出的各
种促销活动,如打折、返利(例如,满300返100)等等。现采用策略(Strategy)模式实现该要求,得到如图5-1所示的类图。

图5-1 策略模式类图
【C++代码】
#include <iostream>
using namespace std;
enum TYPE{NORMAL, CASH_DISCOUNT, CASH_RETURN};
class CashSuper{
public:
(1);
};
class CashNormal : public CashSuper { //正常收费子类
public:
double acceptCash(double money) {
retum money; }
};
class CashDiscount : public CashSuper {
private:
double moneyDiscount; // 折扣率
public:
CashDiscount(double discount) { moneyDiscount=
discount; }
double acceptCash(double money) { retum money *
moneyDiscount; }
};
class CashRetum : public CashSuper { // 满额返利
private:
double moneyCondition; // 满额数额
double moneyReturn; // 返利数额
public:
CashRetnm(double
motieyCondition, double moneyReturn) {
this->moneyCondition=moneyCondition;
this->moneyReturn=moneyRetum;
}
double acceptCash(double
money) {
double result =
money;
if(money>=moneyCondition)
result=money-(int)(money/moneyCondition ) * moneyRetum;
return
result ;
}
};
class CashContext {
private:
CashSuper *cs;
public:
CashContext(int type) {
switch(type) {
case
NORMAL: //正常收费
(2)
;
break;
case CASH_RETURN: //满300返100
(3)
;
break;
case CASH_DISCOUNT: //打八折
(4)
;
break;
}
}
double GetResult(double money) {
(5) ;
}
};
//此处略去main( )函数
正确答案及解析
正确答案
解析
(1)virtual double acceptCash(double money) = 0
(2)cs = new CashNormal()
(3)cs = new CashReturn(300,100)
(4)cs = new CashDiscount(0.8)
(5)return cs->acceptCash(money)
试题分析:
策模式的结构图如下:

你可能感兴趣的试题

-
- A.V(S2)和P(S4)
- B.P(S2)和V(S4)
- C.P(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案

-
- A.V(S1)P(S2)和V(S3)
- B.P(S1)V(S2)和V(S3)
- C.V(S1)V(S2)和V(S3)
- D.P(S1)P(S2)和V(S3)
- 查看答案

-
- A.P(S4)和V(S4)V(S5)
- B.V(S5)和P(S4)P(S5)
- C.V(S3)和V(S4)V(S5)
- D.P(S3)和P(S4)V(P5)
- 查看答案

-
- A.P(S3)和V(S4)V(S5)
- B.V(S3)和P(S4)P(S5)
- C.P(S3)和P(S4)P(S5)
- D.V(S3)和V(S4)V(S5)
- 查看答案

-
- A.P(S2)和P(S4)
- B.P(S2)和V(S4)
- C.V(S2)和P(S4)
- D.V(S2)和V(S4)
- 查看答案