阅读下列函数说明和C++代码,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式进行组合,将小对象组合成复杂的大对象。以下实例展示了Builder(生成器)模式。该实例用来建立“文件”,文件内容包

admin2014-10-11  35

问题 阅读下列函数说明和C++代码,将应填入(n)处的字句写在答题纸对应栏内。
【说明】
在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式进行组合,将小对象组合成复杂的大对象。以下实例展示了Builder(生成器)模式。该实例用来建立“文件”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。Builder类规定组成文件的方法,Director类利用这个方法产生一份具体的文件。图5—1显示了各个类间的关系。
【图5—1】
以下是C++语言实现,能够正确编译通过。
【C++代码】
ClasS Buiider{
publiC:
    virtual void makeTitle(string title)=0;
    virtual void makeString(string str)=0;
    virtual void makeItems(1)items)=0;
    virtual string getResult()=0;
  };
  ClasS Director{
  private:
    (2)buiider;
public:
    Director(Buiider*buiider){
    thiS一>buiider=buiIder;
    }
    string construct(){
    vector  items;
    items.push—back(“早安”);items.push—back(“午安”);
    buiider一>makeTitle(“Greeting”);
    bui Ider一>makeString(“从早上到白天结束”);
    buiider一>makeItems(items);
    buiIder一>makeString(“到了晚上”);
    (3)//清空items向量
    items.push—back(“晚安”);items.push—back(”好梦”);
    buiIder一>makeItems(items);
    return buiider一>getResult();
    }
};
class TextBuiider:public  (4)  {
private:
    String buffer;
publiC:
    TextBuiider(){
    buffer=**;
    }
    void makeTitle(String title){
    buffer  +=  ”=====:=================================\n”;
    buffer+=“[“+title+”]\n”;
    buffer+=“\n”;
    }
    void makeString(string str)(
    buffer+=”■”  +Str+“\n”;
    buffer+=“\n”:
    }
    void makeItems(vector  items){
    vector::iterator  it;
    for(it=items.begin();it!=items.end();it++){
    buffer+=“.”+‘it+“\n”;
    }
    buffer+=“\n”;
    }
    string getResult(){
    buffer+=  “=====================\n”;
    return buffer;
    }
};
int main()
{
    Director*director=new Director(new TextBuilder());
    string result=(string)director一>(5);
    cout<    return 0;
}

选项

答案(1)vector (2)Builder* (3)items.clear() (4)Builder (5)construct()

解析 首先来看空(2),由名字可猜想builder是一个Builder类对象,由构造函数中的语句this一>builder=builder;及形参声明Builder*builder,可判知空(2)应填Builder*。由注释可知空(3)是用来清空iterns向量的,items是一个vector对象,此处并未提供清空方法,应该是调用库函数,故应调用items.clear()。现在来看空(1),由语句builder一>makeltems(iterns);及vectoritems;可知,空(1)应填vector。继续看空(4),由类图知,TextBuilder是Builder的子类,因此此处应填Builder,声明继承关系。空(5)是真正进行文件的构造,应填construct()。事实上,Director类仅提供了该方法,自然是调用该方法。
转载请注明原文地址:https://kaotiyun.com/show/G4DZ777K
0

相关试题推荐
最新回复(0)