刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

试题六(共 15 分)

阅读下列说明和 C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。

【说明】

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


【C++代码】

#include<iostream>

#include<string>

using namespace std;

 

class Customer{

protected:

string name;

public:

(1) boll 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 NullCustomer (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[i].(5) ){

return new realCustomer(name);

return (6);

﹜;

 

class CrM{

public:

void getCustomer(){

Customerfactory*(7);

Customer*customer1=cf->getCustomer(〝rob〞);

Customer*customer2=cf->getCustomer(〝Bob〞);

Customer*customer3=cf->getCustomer(〝Julie〞);

Customer*customer4=cf->getCustomer(〝Laura〞);

 

cout<<〝Customers〞<<endl;

cout<<Customer1->getName() <<endl; delete  customer1;

cout<<Customer2->getName() <<endl; delete customer2;

cout<<Customer3->getName() <<endl; delete  customer3;

cout<<Customer4->getName() <<endl; delete  customer4;

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 Null Customer()

7)cf=New CustomerFactory();


解析:

本题考察的是如何使用C++代码解决实际问题。针对题目中的客户关系管理系统(CrM)的实现,以下是详细的解析:

  1. Customer类中,isNil()getName()函数需要定义为虚函数(virtual),因为这两个函数将在派生类中被重写,并且需要根据对象的实际类型来调用相应的函数。所以,第一和第二个空都填virtual。
  2. realCustomerNullCustomerCustomer类的派生类,因此第三个和第四个空都填public Customer。这意味着它们继承自Customer类。
  3. Customerfactory类中的getCustomer()函数中,需要对比数据库中的名字和传入的参数名字是否匹配。假设存在一个函数compare(name)用于比较名字是否相同,那么第五个空填compare(name)==0。当名字匹配时,返回一个新的realCustomer对象。
  4. 当在getCustomer()函数中循环遍历名字数组后没有找到匹配的名字时,应该返回一个新的空客户对象。因此第六个空填new NullCustomer()
  5. CrM类中,创建了一个Customerfactory对象cf。因此第七个空填对象的创建语句,即cf = new CustomerFactory();

最后的程序输出解释了为什么某些客户返回的是"Not Available in Customer Database",因为当名字不匹配时,返回的是空客户对象,其getName()函数返回的是"Not Available in Customer Database"。

创作类型:
原创

本文链接:试题六(共 15 分) 阅读下列说明和 C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share