以下Java代码实现一个简单客户关系管理系统(CRM)中通过工厂(CustomerFactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(RealCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定

admin2018-04-19  40

问题 以下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://jikaoti.com/ti/MHW7FFFM
0

最新回复(0)