填空题
阅读下列函数说明和C++代码,将应填入 (n) 处的字句写在对应栏内。
[说明]
在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了Decorator(修饰)模式。SalesOrder对象使用一个SalesTicket对象打印销售票据,先打印销售票据内容,然后再打印脚注。图5-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。
[图5-1]
[*]
[C++代码]
class Component
public:
(1) void prtTicket()=0;
;
class SalesTicket:public Component
public:
void prtTicket()
cout<<"Sales Ticket!"<<endl;
;
class Decorator:public Component
public:
virtual void prtTicket();
Decorator(Component *myC);
private:
(2) myComp;
;
Decorator::Decorator(Component *myC)
myComp=myC;
void Decorator::prtTicket()
myComp->prtTicket();
class Footer:public Decorator
public:
Footer(Component *myC);
void prtTicket();
void prtFooter();
;
Footer::Footer(Component *myC): (3)
void Footer::prtFooter()
cout<<"Footer"<<endl;
void Footer::prtTicket()
(4) ;
prtFooter();
class SalesOrder
public:
void prtTicket();
;
void SalesOrder::prtTicket()
Component *myST;
myST=new Footer( (5) );
myST->prtTicket();
【参考答案】
virtual