早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。 【说明】 已知某企业的采购审批是分级进

题目

阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。

【说明】

已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。

采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图6-1所示。

【C++代码】

include <string>

include <iostream>

using namespace std;

class PurchaseRequest {

public:

double Amount; /*一个采购的金额*/

int Number; /*采购单编号*/

string Purpose; /*采购目的*/

};

class Approver { /*审批者类*/

public:

Approver() { successor = NULL; }

virtual void ProcessRequest(PurchaseRequest aRequest){

if (successor != NULL){ successor-> (1) ; }

}

void SetSuccessor(Approver *aSuccesssor) { successor = aSuccesssor; } private:

(2) successor; };

class Congress : public Approver {

public:

void ProcessRequest(PurchaseRequest aRequest) {

if(aRequest.Amount >= 500000){ /*决定是否审批的代码少略*/ }

else (3) ProcessRequest(aRequest);

}

class Director : public Approver {

public:

void ProcessRequest(PurchaseRequest aRequest){ /*此处代码省略*/

}

};

class President : public Approver {

public:

void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ }

};

class VicePresident : public Approver {

public:

void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ }

};

void main(){

Congress Meeting; VicePresident Sam; Director Larry ; President

Tammy;

Meeting. SetSuccessor(NULL); Sam. SetSuccessor( (4) );

Tammy. SetSuccessor( (5) ); Larry. SetSuccessor( (6) );

PurchaseRequest aRequest; /*构造一采购审批请求*/

cin >> aRequest.Amount; /*输入采购请求的金额*/

(7) .ProcessRequest(aRequest); /*开始审批*/

return ;

}

参考答案
正确答案:(1)ProcessRequest(aRequest) (2)Approver* (3)Approver:: (4)&Tammy (5)&Meeting (6)&Sam (7)Larry
(1)ProcessRequest(aRequest) (2)Approver* (3)Approver:: (4)&Tammy (5)&Meeting (6)&Sam (7)Larry 解析:本题考查的是设计模式的应用,属于比较传统的题目。责任链设计模式属于常用的 23种没计模式之一,其目的是为了将一个请求发送给一个对象集合,对象被组织成一条链,而负责处理该请求的对象将获取请求消息并加以处理,其余对象则仅仅负责将该请求消息按照责任链的顺序传递到下一个对象。因此责任人链模式的关键在于组织不同的对象成为一条链并传递消息。
代码中空(1)处位于条件判断if(successor!=NULL)内,因此其含义是判断当前对象是否存在后继对象,如果存在,按照责任链设计模式,可以把请求消息进行传递,也就是调用后继对象的ProcessRequest方法。空(2)处要求填写successor的类型,因为责任链模式中的每一个对象都继承自同一个父类,在本题中,就是Approver类型。空(3)处位于Congress类中的ProcessRequest方法中,该方法表示处理外界的请求,else块的含义表明Congress对象不处理审批金额大于50万元的请求,因此,Congress对象应该将该请求转发到下一个对象进行处理,可以直接调用父类的ProcessRequest方法。空(4)、 (5)、(6)则主要用来将各种对象串接成一个链,根据题目的要求,对象在责任链中的顺序应该为Director Larry:VicePresident Sam;President Tammy:Congress Meeting,而审批的请求应该从Larry开始。
看了阅读下列说明和C++代码,将应...的网友还看了以下:

英语翻译本文主要讨论赛音蒙古文编码和蒙古文国际标准编码的转换问题.这里提到的蒙古文特指传统蒙古文, 英语 2020-05-13 …

浮点数的表示范围和精度取决于______。A.阶码的位数和尾数的位数B.阶码采用的编码和尾数的位数C 计算机类考试 2020-05-26 …

常用的统计编码方法包括哈夫曼编码和算术编码,其中(41)。A.算术编码需要传送码表,哈夫曼编码采用0 计算机类考试 2020-05-26 …

MPEG视频编码中使用了帧内压缩编码和帧间压缩编码。其中帧间压缩编码采用的图像序列分为内帧(1图 计算机类考试 2020-05-26 …

机内码(采用GB2312-80)编码为B5C83041BFBC8C9A这串编码中有几个汉字?看了你 数学 2020-07-01 …

--.-.--...---.----.--..-.提示:此则密码采用了多种加密方式,首先这是一段摩 语文 2020-07-23 …

好的电视栏目标语,可以起到强化栏目形象的作用。它可将宗旨、特色、功能等各要素融为一体,通过有创意的口 语文 2020-11-04 …

电视栏目解释语电视栏目的解释语,可将栏目宗旨、特色、功能等各要素融为一体,通过有创意的口号,凸现栏目 其他 2020-11-23 …

好的电视栏目宣传语,不仅能向观众介绍栏目宗旨、特色和功能,还能凸现栏目形象,展示栏目风采,增强贴近感 语文 2020-11-23 …

计算机办公软件二级的word题目的疑问。(1)正文前的节,页码采用“I,II,III,…”格式,页码 其他 2021-01-01 …