系列文章目录
1.【软考之软件设计师】PPT课件
2.【软考之软件设计师】学习笔记
3.【软考之软件设计师】上午题—信管网(每天更新)
4.【软考之软件设计师】上午题—希赛网(每天更新)
5.【软件设计师真题】下午题第一大题—数据流图设计
6.【软件设计师真题】下午题第二大题—数据库设计
7.【软件设计师真题】下午题第三大题—UML 分析与设计
8.【软件设计师真题】下午题第四大题—算法设计
9.【软件设计师真题】下午题第五大题—面向对象程序设计
掌握 C++、Java 中任一种程序设计语言,以便能指导程序员进行编程和测试,并进行必要的优化。
一、真题一
1、题目
阅读下列说明和Java代码,将应填入(n)处的子句写在答题纸的对应栏内。
【说明】(15 分)
现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。
现采用原型模式(Prototype)来实现上述要求,得到如图 6-1 所示的类图。
【Java 代码】
Class WorkExperience (1) Cloneable{ //工作简历
Private String workDate;
Private String company;
Public obiect Clone(){
(2);
obj.workDate=this.workDate;
Obj.company=this.company;
Return obi;
}
}
Class Resume (3) Cloneable{ //简历
Private String name;
Private String sex;
Private String age;
Private WorkExperience work;
Public Resume(string name){
This.name = name;
work=new workExperience();
}
Private Resume(WorkExperience work){
This.woek=(4);
}
Public void SetPersonalInfo(String sex,String age)
{ /*代码省略*/}
Public void SetworkExperience (String workDate,string company)
{/*代码省略*/}
Public Obiect Clone(){
Resume obi= (5) ;
//其余代码省略
Return obi;
}
}
Class WorkResume{
Public static void main(string[]args){
Resume a=new Resume("张三");
a.SetPersonalInfo("男”"29");
a.SetworkExperience("1998~2000","XXX公司");
Resume b=(6);
b.SetworkExperience("2001~2006","YYY公司");
}
}
2、解析
本题考查原型模式的概念及应用。原型模式是一种对象创建模型,用原型实体指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式允许一个对象再创建另一个可定制的对象,无须知道任何创建的细节。
所有的Java类都继承自iava.lang.Object,而obiect类提供一个Clone0)方法,可以将一个Java对象复制一份,因此在Java中可以直接使用Obiect提供的Clone()方法来实现对象的克隆。
能够实现克隆的Java类必须实现一个标识接口Cloneable,表示这个Java类支持复制。
题中WorkExperience类和Resume类需要实现Cloneable接口,故空(1)处和空(3)处应填入implements。WorkExperience中需要实现Clone方法,并将自身复制一份,由下面的代码可知空(2)处应填入WorkExperience obi-new WorkExperience()。Resume类中的私有构造方法实现WorkExperience的深复制,故空(4)处应填入(WorkExperience)work.Clone0)。而Resume类中的Clone方法实现自身的复制,故空(5)处应填入new Resume(this.work)。main中实现Resume b对a的复制,故空(6)处应填入a.Clone()。
3、答案
(1)implements
(3)implements
(5)new Resume(this.work)
(2)WorkExperience objnew WorkExperience()
(4)(WorkExperience)work.Clone()
(6)a.Clone()