阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。现采用原型模式(

admin2014-11-13  27

问题 阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。现采用原型模式(Prototype)来实现上述要求,得到如图16.1所示的类图。

【C++代码】
#include
Using namespace std;
ClasS Cloneable{
public:
(1)  ;
};
Class workExperience:public Cloneable{    //工作经历
Private:
String workDate;
Str ing  company;
PubliC:
Cloneable’Clone(){
(2);
Obj一>workDate=this一>workDate;
Obj一>company=this一>company;
Return obj;
}
//其余代码省略
};
Class Resume:public Cloneable { //简历
Private:
String name;  string sex;  string age;
WorkExperience。work;
Resume(WorkExperi ence*work)(
This->work:    (3) ;
}
PubliC:
Resume(string name)(/*实现省略*/  )
Void SetPersonalInfo(string sex,string age)(    /*实现省略*/    )
Void setworkExperience(string  workDate,string company)(  /*实现省略*/    )
Cloneable*Clone(){
(4);
Obj一>name:this一>name;
Obj一>sex=this一>sex;
Obj一>age=this一>age;
Return obj;
}
};
Int main(){
Resume*a=new Resume(”张三”);
A一>SetPersonalInfo(”男”,”29”);
A一>setworkExperience(”1998~2000”,“XXX公司”);
Resume*b=(5);
B一>SetWorkExperience(“2001~2006”,“YYY公司”);
Return 0;
}

选项

答案(I)virtual Cloneable*Clone()=0 (2)WorkExperience*obj (3)Work (4)Resume*obj (5)a一>Clone()

解析 本题考查原型模式的概念及应用,原型模型是一种对象创建模型,用原型实体指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模型允许一个对象再创建另一个可订制的对象,无需知道任何创建的细节。Prototype模式其实就是常说的”虚拟构造函数”一个实现,C++的实现机制中并没有支持这个特性,但是通过不同派生类实现的Clone接口函数可以完成与”虚拟构造函数”同样的效果。题中声明一个虚拟基类,所有的原型都从这个基类继承,  (1)所代表的就是这个基类中的纯虚函数,需要供继承者自行实现,即为virtual Cloneable*Clone()=0,首先声明一个抽象基类,并定义clone()函数为纯虚函数。然后根据基类实例化各个子类,并且实现复制构造函数,并实现clone()函数,由此可知(2)处为WorkExperience*obj,(3)处Work,(4)处为Resume*obj。在main函数中实现Resume*b对*am复制,故根据C++语法(5)中为a一>Clone()。
转载请注明原文地址:https://kaotiyun.com/show/A4DZ777K
0

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