当前位置:首页计算机类软件水平考试中级软件设计师->阅读下列说明和C++代码,将应填入(n)处字句写在答题纸对应

阅读下列说明和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)

试题分析:

策模式结构图如下:

中级软件设计师,章节练习,基础复习,中级软件设计师练习

更新时间:2022-08-01 10:54
纠错

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • 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)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)、P(S1)和V(S2)V(S3)
  • B.P(S1)、V (S1)和V(S2)V(S3)
  • C.V(S1)、V(S2)和P(S1)V(S3)
  • D.P(S1)、V(S2)和V(S1)V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.序列图
  • B.状态图
  • C.通信图
  • D.活动图
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.合并分叉
  • B.分支
  • C.合并汇合
  • D.流
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.产甲2套,乙3套
  • B.生产甲1套,乙4套
  • C.生产甲3套,乙4套
  • D.生产甲4套,乙2套
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案