当前位置:首页计算机类软件水平考试中级软件设计师->某发票(lnvoice)由抬头(Head)部分、正文部分和脚

某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。

中级软件设计师,历年真题,2016年下半年(下午)《软件设计师》真题

【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参数。

更新时间:2021-11-26 12:53

你可能感兴趣的试题

单选题

(  )is the process of transforming information so it is unintelligible to anyone but the intended recipient.

  • A.Encryption
  • B.Decryption
  • C.Security
  • D.Protection
查看答案
单选题

As each application module is completed,it undergoes(  )to ensure that it operates correctly and reliably.

  • A.unit testing
  • B.integration testing
  • C.system testing
  • D.acceptance testing
查看答案
单选题

(  )algorithm specifies the way to arrange data in a particular order.

  • A.Search
  • B.Random
  • C.Sorting
  • D.Merge
查看答案
单选题

After analyzing the source code,(  )generates machine instructions that will carry out the meaning of the program at a later time.

  • A.an interpreter
  • B.a linker
  • C.a compiler
  • D.a converter
查看答案
单选题

(  )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.

  • A.Data processing system
  • B.Big Data analytics
  • C.Cloud computing
  • D.Database management
查看答案
单选题

浏览器开启无痕浏览模式后,(  )依然会被保存下来。

  • A.浏览历史
  • B.搜索历史
  • C.已下载文件
  • D.临时文件
查看答案
单选题

下列协议中,不属于TCP/IP协议簇的是(  )。

  • A.CSMA/CD
  • B.IP
  • C.TCP
  • D.UDP
查看答案
单选题

下列传输介质中,带宽最宽、抗干扰能力最强的是(  )。

  • A.双绞线
  • B.红外线
  • C.同轴电缆
  • D.光纤
查看答案
单选题

数控编程常需要用参数来描述需要加工的零件的图形。在平面坐标系内,确定一个点需要2个独立的参数,确定一个正方形需要(  )个独立的参数。

  • A.3
  • B.4
  • C.5
  • D.6
查看答案
单选题

某书的页码为1,2,3,...,共用数字900个(一个多位数页码包含多个数字),据此可以推断,该书最大的页码为(  )。

  • A.237
  • B.336
  • C.711
  • D.900
查看答案