填空题
[说明]
已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。
采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图5-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 *aSuccessor) successor=aSuccessor; )
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 ;