niusouti.com

阅读下列函数说明和C++代码,将应填入(n)处的字句写在对应栏内。[说明]在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(包括不用的功能)都要全面初始化的话,会导致应用软件要花很多时间才能启动。因此常将程序设计成到了实际要使用某种功能的阶段才初始化该功能。以下示例展示了Proxy(代理)模式,PrinterProxy类执行一些比较“轻”的方法,需要真正执行“重”的方法时才初始化Print类。图5-1显示了各个类间的关系。[图5-1][C++代码]class Printa

题目

阅读下列函数说明和C++代码,将应填入(n)处的字句写在对应栏内。

[说明]

在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(包括不用的功能)都要全面初始化的话,会导致应用软件要花很多时间才能启动。因此常将程序设计成到了实际要使用某种功能的阶段才初始化该功能。

以下示例展示了Proxy(代理)模式,PrinterProxy类执行一些比较“轻”的方法,需要真正执行“重”的方法时才初始化Print类。图5-1显示了各个类间的关系。

[图5-1]

[C++代码]

class Printable{

public:

virtual void setPrinterName(string name)=0;

virtual string getprinterName()=0;

virtual void print(string name)=0;

};

class Printer:public Printable{

private:

string name;

public:

Printer(string name){

cout<<"正在产生Printer的对象实例"<<endl;

this->name=name;

}

void setPrinterName(string name){

this->name=name;

}

string getPrinterName(){

return name;

}

void print(string msg){

cout<<"======="<<name<<"==========="<<endl;

cout<<msg<<endl;

}

};

class printerproxy :public (1) {

private:

String name;

Printer *real;

public:

PrinterProxy(string name){

(2)=NULL;

this->name=name;

}

void setPrinterName(string name){

if((3))real->setPrinterName(name);

this->name=name;

}

string getPrinterName(){

return name;

}

void print(string msg){

(4);

real->print(msg);

}

void realize(){

if(real==NULL)real=(5);

}

};

(1)


相似考题
更多“ 阅读下列函数说明和C++代码,将应填入(n)处的字句写在对应栏内。[说明]在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(包括不用的功能)都要全面初始化的话,会导致应用软件要花”相关问题
  • 第1题:

    试题三(共 15 分)

    阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。


    正确答案:

  • 第2题:

    阅读下列说明和C++-代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图5-1所示的类图。

    【C++代码】 #include using namespace std; class invoice{ public: (1){ cout<<"This is the content 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.这部分是发票的脚注,看类图应该实现函数printlnvoice,Decorator装饰模式使用该方法
    5.FootDecorator a(NULL) ;脚步的装饰参数是a,调用a参数,

  • 第3题:

    阅读下列说明和?C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
    【说明】
    阅读下列说明和?Java代码,将应填入?(n)?处的字句写在答题纸的对应栏内。
    【说明】
    某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种
    类可能不同,但其制作过程相同。前台服务员?(Waiter)?调度厨师制作套餐。现采用生成器?(Builder)?模式实现制作过程,得到如图?6-1?所示的类图。






    答案:
    解析:

  • 第4题:

    阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。

    [说明]

    在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(连不用的功能)都要全面初始化的话,会连带影响到应用软件要花很多时间才能启动。因此常将程序设计成到了实际要使用某种功能的阶段才初始化该功能。

    以下示例展示了Proxy(代理)模式,PrinterProxy类执行一些比较“轻”的方法——设置名称和取得名称,需要真正执行“重”的方法——真正打印——时才初始Print类。图6-1显示了各个类间的关系。

    [图6-1]

    [Java代码]

    //Printable.Java

    publiC (1) Printable{

    public abstract void setPrinterName(String name);

    public abstract String getprinterName();

    public abstract void print(String string);

    }

    //Printer.Java

    public class Printer implements Printable{

    private String name;

    public Printer(){

    System.out.println("正在产生Printer的对象实例");

    }

    public Printer(String name){

    this.name=name;

    heavyJob("正在产生Printer的对象实例("+name+")");

    public void setPrinterName(String name){

    this.name=name;

    public String getPrinterName(){

    return name;

    public void print(String string){

    System.out.println("===" +name+" ====");

    System.out.println(string);

    }

    }

    //PrinterProxy.Java

    public class PrinterProxy (2) Printable{

    private String name;

    private Printer real;

    public PrinterProxy(){}

    public PrinterProxy(String name){

    this.name=name;

    }

    public gynchronized void setPrinterName(String name){

    if( (3) ){

    real.setPrinterName(name);

    }

    this.name=name;

    }

    public String getprinterName(){

    return name;

    }

    public void print(String string){

    (4);

    real.print(string);

    }

    private synchronized void realize(){//产生真正的Printer对象

    if(real==null){

    real=(5);

    }

    }

    }

    (1)


    正确答案:interface
    interface

  • 第5题:

    阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 某文件管理系统中定义了类OfficeDoc和DocExplorer,当类OfficeDoc发生变化时,类DocExplorer的所有对象都要更新其自身的状态,现采用观察者(Observer)设计模式来实现该需求,所设计的类图如图6-1所示。



    答案:
    解析:
    1: void update()2: Observer3: obs.update()4: Subject5: Attach(this)