某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。
【C++代码】
#include
using namespace std;
class Invoice{
public:
(1){
cout<<"This is the content of the invoice!"<<endl;
}
};
class Decorator:public Invoice{
Invoice*ticket;
public:
Decorator(lnvoice*t){ticket=t;}
void printInvoice( ){
if(ticket!=NULL)
(2);
}
};
class HeadDecorator:public Decorator{
public:
HeadDecorator(lnvoice*t):Decorator(t){}
void printInvoice( ){
cout<<"This is the header of the invoice!"<<endl;
(3);
}
};
class FootDecorator:public Decorator{
public:
FootDecorator(Invoice*t):Decorator(t){}
void printlnvoice( ){
(4);
cout<<"This is the footnote of the invoice!"<<endl;
}
};
int main(void){
Invoice t;
FootDecorator f(&t);
HeadDecorator h(&f);
h.printInvoice( );
cout<<”------------------------”<<endl;
FootDecorator a(NULL);
HeadDecorator b((5));
b.printInvoice( );
return 0;
}
程序的输出结果为:
This is the header of the invoice!
This is the content of the invoice!
This is the footnote of the invoice!
----------------------------
This is the header of the invoice!
This is the footnote of the invoice!
(1)virtual void printInvoice()
(2)ticket->printInvoice()
(3)Decorator::printInvoice()
(4)Decorator::printInvoice()
(5)&a
1.Invoice类下,定义虚函数,按类图,函数名是printInvoice。
2.前面定义对象名是ticket,那么在ticket不为空的时候调用函数printInvoice。
3.这部分填写发票的抬头,看类图应该实现函数printInvoice,Decorator装饰模式使用该方法。
4.这部分是发票的脚注,看类图应该实现函数printInvoice,Decorator装饰模式使用该方法。
5.FootDecorator a(NULL);脚步的装饰参数是a,调用a参数。
( )is the process of transforming information so it is unintelligible to anyone but the intended recipient.
As each application module is completed,it undergoes( )to ensure that it operates correctly and reliably.
( )algorithm specifies the way to arrange data in a particular order.
After analyzing the source code,( )generates machine instructions that will carry out the meaning of the program at a later time.
( )can help organizations to better understand the information contained within the data and will also help identify the data that is most important to the business and future business decisions.
浏览器开启无痕浏览模式后,( )依然会被保存下来。
下列协议中,不属于TCP/IP协议簇的是( )。
下列传输介质中,带宽最宽、抗干扰能力最强的是( )。
数控编程常需要用参数来描述需要加工的零件的图形。在平面坐标系内,确定一个点需要2个独立的参数,确定一个正方形需要( )个独立的参数。
某书的页码为1,2,3,...,共用数字900个(一个多位数页码包含多个数字),据此可以推断,该书最大的页码为( )。