问题 问答题

请阅读以下技术说明、类图及C++代码,回答下列问题。
[说明]
已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批。主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。
采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图8-23所示。


[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-> ______;

void SetSuccessor (Approver *aSuccesssor) successor=aSuccesssor;
private:
______ successor;
;
class Congress:public Approver
public:
void ProcessRequest (PurohaseRequest aRequest)
if (aRequest.Amount>:500000) /*决定是否审批的代码省略*/
else ______ 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(______);
Tammy.SetSuccessor(______);
Larry.SetSuccessor(______);
PurchaseRequest aRequest; //构造一采购审批请求
cin >> aRequest.Amount; //输入采购请求的金额
______.ProcessRequest(aRequest); //开始审批
return;

答案

参考答案:ProcessRequest(aRequest)
Approver*
Approver::
&Tammy
&Meeting
&Sam
Larry

单项选择题
多项选择题