题目详情

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

相关题库更多 +