某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构

admin2022-08-02  17

问题 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。【C++代码】#includeusing 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参数。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2409837.html

最新回复(0)