首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
以下Java代码实现一个简单客户关系管理系统(CRM)中通过工厂(CustomerFactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(RealCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定
以下Java代码实现一个简单客户关系管理系统(CRM)中通过工厂(CustomerFactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(RealCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定
admin
2018-04-19
90
问题
以下Java代码实现一个简单客户关系管理系统(CRM)中通过工厂(CustomerFactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(RealCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定条件时创建或获取的对象。类间关系如图5.1所示。
[Java代码】
abstract class Customer{
protected String name;
(1)__________boolean isNil();
(2)__________String getName();
}
class Realcustomer(3)__________Customer {
public RealCustomer(String name){this.name=name; )
public String getName(){ return name; )
public boolean isNil(){ return false; )
}
class NullCustomer(4) __________Customer{
public String getName(){ return”Not Available in Customer Database”; )
public boolean isNil(){return true; )
}
class CustomerFactory {
public String[]names={“Rob”,”Joe”,”Julie”);
public Customer getCustomer(String name){
for(int i=0;i
if(names
.(5)__________}{
return new RealCustomer(name);
}
}
return (6)__________;
}
}
public class CRM{
publiC Void getCustomer(){
customerFactory(7)__________;
Customer customerl =cf.getCustomer("Rob");
Customer customer2 =cf.getCustomer("Bob");
Customer customer3 =cf.getCustomer("Julie");
Customer CUStomer4 =cf.getCustomer("Laura");
System.out.println("Customers");
System.out.println(customerl.getName());
System.out.println(customer2.getName());
System.out.println(customer3.getName());
System.out.println(customer4.getName());
}
public static void main(String[]args){
CRM crm=new CRM();
crm.getCustomer();
}
}
/*程序输出为:
CuStomers
Rob
Not Available in CuStomer Database
Julie
Not Available in CuStomer Database
*/
选项
答案
(1)public abstract (2)public abstract (3)extends (4)extends (5)equals(name)或其等价形式 (6)new NullCustomer() (7)cf=new CustomerFactory()
解析
本题考查用Java语言进行程序设计的能力,涉及类、对象、方法的定义和使用。要求考生根据给出的案例和代码说明,认真阅读并理清程序思路,然后完成题目。题目所给代码清晰,易于理清思路。
先考查题目说明,实现一个简单的客户关系管理系统(CRM),其中通过工厂(CustomerFactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(RealCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定条件时创建或获取的对象。根据说明进行设计,题目说明中图5.1的类图给出了类CRM、CustomerFactory、Customer、RealCustomer以及NullCustomer及其之间的关系。CRM使用CustomerFactory,CustomerFactory作为创建Customer的工厂类,负责具体类型Customer的创建,即Customer的子类RealCustomer和NullCustomer的创建。
Customer定义为抽象类,定义一个protected String name、两个抽象方法,方法由子类实现。抽象方法的定义采用关键字abstract修饰,且只有方法的声明,而没有方法实现,即: public abstract boolean isNil();
public abstract String getName();
抽象类不可以直接创建对象,需要创建具体子类RealCustomer和NullCustomer的对象。
子类继承抽象父类,并实现所有抽象父类的方法,才能创建对象,即:
class RealCustomer extends Customer{…)
class NuliCustomer extends Customer{…)
在RealCustomer的构造器中,对象的属性与构造器参数用this关键字加以区分。即:
this.name=name;
CustomerFactory中的方法getCustomer()接收参数为所要创建的客户名称,判断已有名称(字符串数组names)中是否存在所接受的客户名称name,此处对字符串数组names中的每个名称与所接受客户名称(name)采用equals方法进行字符串判等,一旦相等,则创建并返回以name为客户名称的RealCustomer对象,否则返回NullCustomer对象。即:
for(int i=0;i
if (names
.equals(name)){
return new RealCustomer(name);
}
}
return new NuliCustomer();
CRM中定义一个getCustomer()方法,该方法通过使用CustomerFactory中的方法getCustomer()来创建Customer对象。其中采用new关键字创建CustomerFactory对象,即:
CustomerFactory cf=new CustomerFactory();
然后调用cf所引用对象中的getCustomer()方法,创建客户名称为Rob、Bob、Julie和Laura的四个对象,然后打印客户名称进行测试。以客户名称Rob和Bob为例,即:
Customer customerl =cf.getCustomer("Rob");
Customer customer2=cf.getCustomer"Bob");
System.out.println(customerl.getName());
System.out.println(customer2.getName());
因为names中有Rob而无Bob,所以对应的输出结果为:
Rob
Not AVailable in Customer Database
整个系统的入口main()方法定义在CRM中,创建CRM对象,并调用getCustomer()创建客户。
综上所述,空(1)和空(2)需要标识抽象方法,并且在子类中方法均为public,所以为public abstract;空(3)和空(4)需要表示RealCustomer和NullCustomer继承抽象类Customer,即extends;空(5)处为采用equals进行字符串判等,即equals(name):空(6)处为客户名称不存在时返回新创建的NullCustomer对象,即new NullCustomer():空(7)处为采用new关键字调用CustomerFactory的缺省构造器来创建对象,通过上下文判断对象引用名称为cf,即cf=new CustomerFactory()。
转载请注明原文地址:https://kaotiyun.com/show/K9jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Word2010“查找和替换”文本框中,输入()符号可以搜索0到9的数字。
设10个数{Xi|i=1,10)的平均值为a,则{10Xi+1|i=1,10)的平均值为(5)。
某个字段的数据是原始数据计算的结果,该字段的宽度和小数位数对数据的精度有影响。一般来说,小数位数的确定需要考虑______。
下列关于操作系统的叙述中,不正确的是______。
在Excel2007中,利用填充柄可以将数据复制到相邻单元格中。若选择含有数值的上下相邻的两个单元格,按住鼠标左键向下拖动填充柄,则数据将以(49)________________填充。
以下关于操作系统中回收站的叙述,不正确的是____________。
在Windows7系统运行时,用户为了获得联机帮助,可以直接按功能键(24)________________。
编译程序的作用是将高级程序语言源程序翻译为(4)。
内存用于存放计算机运行时的指令、程序、需处理的数据和运行结果。但是,存储在(2)中的内容是不能用指令修改的。
综合布线系统由6个子系统组成,将图1-1中(1)~(6)处空缺子系统的名称填写在答题纸对应的解答栏内。为满足公司要求,通常选用什么类型的信息插座?
随机试题
分离弱极性组分适用除去或减弱载体吸附力称为
在观察胸骨旁左室长轴切面心脏结构方面,下列哪一项叙述是错误的
A.杂醇油B.甲醇C.乙醇D.氰化物E.甲醛在酒类加工过程中可以去除的有毒成分是
某造纸厂在未经许可的情况下违法排污,环保部门作出责令其停产停业的处罚决定,并限期治理。但该厂既不履行处罚决定,又不申请复议和向人民法院提起诉讼。对此环保部门应当:
董事会秘书空缺期间(),董事长应当代行董事会秘书职责,直至公司正式聘任董事会秘书。
短期资本流动是指期限为1年或1年以内的资本流动。它主要包括()。Ⅰ.投机性资本流动Ⅱ.贸易资本流动Ⅲ.银行资金调拨Ⅳ.保值性资本流动
甲上市公司自资产负债表日至财务报告批准对外报出日之间发生的下列事项中,属于资产负债表日后非调整事项的有()。
扣缴义务人每次代扣的税款,应当自代扣之日起()内缴入国库。
甲公司是一家移动通讯产品制造企业,主营业务是移动通讯产品的生产和销售,为扩大市场份额,准备投产智能型手机产品(以下简称智能产品),目前,相关技术研发已经完成,正在进行该项目的可行性研究,相关资料如下:(1)如果可行,该项目拟在2016年初投产,预计该智能
如图,在正三棱柱ABC—A1B1C1中,AB=AA1,点D是A1B1的中点,点E在A1C1上,且DE垂直于AE。(1)证明:平面ADE垂直于平面ACC1A1;(2)求直线AD和甲面ABC1所成角(用反二角函数表示)。
最新回复
(
0
)