现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。
现采用原型模式(Prototype)来实现上述要求,得到如图1所示的类图。
[C++代码]
# include<string>
Using namespace std;
Class Clonealole
Public:
______,
Class WorkExperience:public Cloneable //经历
Private:
String workDate;
String company;
Public:
Cloneable*Clone()
______
Obj->workDate=this->workDate;
Obj->company=this->company;
Return obj;
//其余代码省略
;
Class Resume:public Cloneable //简历
Private:
String name; string sex; string age;
WorkExperience*work;
Resume(WorkExperience*work)
This->work=______;
Public:
Resume(string name) /*实现省略*/
Void SetPersonallnfo(string sex, string age) /*实现省略*/
Void setWorkExperience(string workDate,string company) /*实现省略*/
Cloneable*Clone()
______;
Obj->name=this->name;
Obj->sex=this->sex;
Obj->age=this->age;
Return obj;
;
Int main()
Resume*a=new Resrune("张三");
A->SetPersonalInfo("男", "29");
A->SetWorkExperience("1998~2000", "XXX公司");
Resume*b=______;
B->SetWorkExperience("2001~2006","YYY公司");
Return 0;
参考答案:virtual Cloneable*Clone()=0
WorkExperience*obj
Work
Resume*obj
a->Clone()
解析: 本题考查原型模式的概念及应用,原型模型是一种对象创建模型,用原型实体指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模型允许一个对象再创建另一个可定制的对象,无须知道任何创建的细节。
Prototype模式其实就是常说的“虚拟构造函数”一个实现,C++的实现机制中并没有支持这个特性,但是通过不同派生类实现的Clone接口函数可以完成与“虚拟构造函数”同样的效果.