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

admin2018-04-19  82

问题 以下C++代码实现一个简单客户关系管理系统(CRM)中通过工厂(CustomerFactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(RealCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定条件时创建或获取的对象。类间关系如图6.1所示。

【C++代码】
    #include
    #include
    using namespace std;
    clasS Customer{
    protected:
    string name;   
    public:
   (1)__________bool isNil()=0;
   (2)__________string getName()=0;
    };
    clasS RealCustomer (3)__________{   
    public:
    RealCustomer(string name){this一>name=name;)
    bool isNil()  {  return falSe;    )
    string getName(){  return name;)
    },
    class NuliCustomer(4)__________{
    public:   
    bool isNil(){    return true;    )
    string getName(){  return"Not Available in Customer Database";  )
    );
    class  CustomerFactory  {
    public:
    string names[3]={"Rob","Joe","Julie");
    public:
    Customer~getCustomer(string name){
    for(int i=0;i<3 ;i++)  {
    if(names.(5)__________ ){
    return new RealCustomer(name);
           }
         }
    return (6)__________;
       }
};
Class CRM{
public:
    void getCustomer()  {
    CustomerFactory*(7)__________;
    Customer*  customerl  =cf一>ge七Customer("Rob");
    Customer*  customer2  =cf一>getCustomer("Bob");
    Customer*customer3=cf一>getCustomer("Julie”);
    Customer*customer4=cf一>getCustomer("Laura");
    cout<<  "Customers"  <    cout<getName()<    cout<getName()<    cout<getName()<    cout<getName()<    delete Cf;
    }
};
int main()  {
    CRM*crs=new CRM();
    crs一>getCustomer();
    delete crs;
    return 0;   
}
/*程序输出为:
CuStomers
Rob
Not Available in CuStomer Database
Julie
Not Available in Customer Database
*/

选项

答案(1)virtual (2)virtual (3):public Customer (4):public Customer (5)compare(name)=0或其等价形式 (6)new NullCustomer() (7)cf=new CustomerFactory()

解析  本题考查用C++语言进行程序设计的能力,涉及类、对象、函数的定义和使用。要求考生根据给出的案例和代码说明,认真阅读以理清程序思路,然后完成题目。题目所给代码清晰,易于理清思路。
    先考查题目说明,实现一个简单的客户关系管理系统(CRM),其中通过工厂(CustomerFactory)对象来创建客户(Customer)对象的功能。客户分为创建成功的客户(RealCustomer)和空客户(NullCustomer)。空客户对象是当不满足特定条件时创建或获名称Rob和Bob为例,即:
    Customer*customerl=cf一>getCustomer("Rob");
    Customer* customer2  =  cf一>getCustomer("Bob");
    cout<getName()<    cout<getName()<    因为names中有Rob而无Bob,所以对应的输出结果为:
    Rob
    Not Available in Customer DatabaSe
    整个系统的入口main()函数中,创建CRM对象,并调用getCustomer()创建客户。
    综上所述,空(1)和空(2)需要标识虚拟函数,并且在子类中方法均为public,所以为virtual;空(3)和空(4)需要表示RealCustomer和NullCustomer继承抽象类Customer,即:public Customer;空(5)处为进行字符串判等,即compare(name)=0;
空(6)处为客户名称不存在时返回新创建的NullCustomer对象,即new NullCustomer();
空(7)处为采用new关键字调用CustomerFactory的缺省构造器来创建对象,通过上下文判断对象引用名称为cf,即cf=new CustomerFactory()。
转载请注明原文地址:https://jikaoti.com/ti/FHW7FFFM
0

最新回复(0)