阅读下列说明和C++代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。 【说明】 现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL Server和Access两种数据库以及系统中的数据

admin2013-07-09  52

问题 阅读下列说明和C++代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。
    【说明】
    现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL Server和Access两种数据库以及系统中的数据库表Department为例,其类图如图5—1所示。
   
【C++代码】
#include<iostream>
using namespace std;
class Department{/*代码省略*/};
class IDepartment{
public:
     (1)   =0;
     (2)   =0;
}
class SqlserVerDepartment:   (3)   {
public:
    void Insert(Department*department){
      cout<<“Insert a record into Department in SQL Server!  n”;
        //其余代码省略
    }
    Department GetDepartment(int id){
        //代码省略
    }
};
class AccessDepartment:   (4)   {
    public:
        void Insert(Department*department){
             cout<<“Insert a record into Department in ACCESS!  n”;
             //其余代码省略
             }
             Department GetDepartment(int id){
                  /*代码省略*/
             }
        };
           (5)   {
        public:
           (6)    =0;
        }
        class sqlserVerFactory:public IFactory{
        public:
            IDepartment*  CreateDepartment(){return new SqlserverDepartment();  }
            //其余代码省略
        };
        class AccessFactory:public IFactory{
        public:
            IDepartment*  CreateDepartment(){return new AccessDepartment();  }
            //其余代码省略
        };

选项

答案(1)virtual void Insert(Department*department) (2)virtual Department GetDepartment(int id) (3)public IDepartment (4)public IDepartment (5)class Ifactory (6)virtual IDepartment*CreateDepartment()

解析 本题考查抽象工厂设计模式的概念及其应用。
    抽象工厂设计模式的意图是:提供一个创建一系列相关或相互依赖的对象,而无须指出它们具体的类。在如下情况下应当考虑使用抽象工厂模式:
    .当一个系统要独立于它的产品的创建、组合和表示时;
    .当一个系统要由多个产品系列中的一个来配置时;
    .当需强调一系列相关的产品对象的设计以便进行联合使用时;
    .想提供一组对象而不显示它们的实现过程,只显示它们的接口时。
    抽象工厂设计模式的类图如图5—2所示,其中:
   
    .AbstractFactory为抽象工厂,声明抽象产品的
方法。
    .ConcreteFactory为具体工厂,执行生成抽象产品的方法,生成一个具体的产品。
    .AbstractProduct为抽象产品,为一种产品声明接口。
    .Product为具体产品,定义具体工厂生成的具体产品的对象,实现产品接口。
    图5-1中的Ifactory对应类图中的AbstractFactory、Sqlserverfactory和Accessfactory对应类图中的Concrete-Factory、SqlserverDepartment和AccessDepartment对应类图中的Product,而IDepartment对应类图中的Abstract-Product。
    由于类IDepartment的作用是为其子类提供接口,所以将其定义为抽象类。在C++中,抽象类中至少包含一个纯虚函数的类,而纯虚函数是没有函数体的函数,其作用是为其子类提供统一的接口。若要使用纯虚函数,必须在子类中进行重置。(1)和(2)考查的是如何定义抽象类IDep-artment。从IDepartment的子类的方法中可以确定(1)处应填入virtual void Insert(Department*department),(2)处应填入virtualDepartment GetDepartment(int id)。
    (3)和(4)考查继承的概念和语法。由于SqlserverDepartment和AccessDepartment均继承IDepartment,因此,(3)和(4)都应填入public IDepartment。
    由于所给程序中缺少有关抽象类Ifactory的定义,因此(5)处应为定义类Ifactory,应填入class Ifactory。抽象类Ifactory中至少需包含一个纯虚函数的类,由其子类Sqlserverfactory和Aecessfactory中方法的定义可知,(6)处应填入virtual IDepartment*CreateDepartment()。
转载请注明原文地址:https://jikaoti.com/ti/fji7FFFM
0

相关试题推荐
最新回复(0)