首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。 【说明】 现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL Server和Access两种数据库以及系统中的数据
阅读下列说明和C++代码,将应填入(1)~(6)处的字句写在答题纸的对应栏内。 【说明】 现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以SQL Server和Access两种数据库以及系统中的数据
admin
2013-07-09
113
问题
阅读下列说明和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://kaotiyun.com/show/RiDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
在软件开发过程中,常采用图形表示相关的信息,(28)不用于表示软件模块的执行过程。
由于操作系统升级而对软件进行修改的行为属于________维护。
编译和解释是实现高级程序设计语言的两种基本方式,________是这两种方式的主要区别。
假设系统有n(n≥5)个并发进程,它们竞争互斥资源R。若采用PV操作,当有3个进程同时申请资源R,而系统只能满足其中1个进程的申请时,资源R对应的信号量s的值应为_______。
以下描述中,属于通用操作系统基本功能的是_______。
CPU执行指令时,先要根据程序计数器将指令从内存读取出并送入______,然后译码并执行。
通常VLAN有静态和动态2种实现方式,这2种方式分别是如何实现的?各有什么特点?Switch1采用的是哪种实现方式?填充VLAN信息表如表9-3所示,将答案填写在答题纸相应位置。
双绞线可以制作成直连线和交叉线两种形式。在上图中,两个交换机的UPLINK口相连,使用的双绞线制作成什么形式?连接交换机和计算机的双绞线制作成什么形式?阅读下面的配置信息,解释(7)处的命令。Switch#configtSwitch(
认真阅读下列说明信息,回答问题1至问题5。[说明]在一个基于TCP/IP协议的网络中,每台主机都有一个IP地址,根据获得IP地址的方式不同,可以分为静态IP和动态IP。例如:用宽带入网,会有一个固定的IP地址,每次连入Internet,你的IP地
随机试题
某大学生在校园拍摄了一组校园美景的照片,发表在学校局域网BBS上,该同学所在大学认为该组照片很有特色,未经过该同学同意,将照片印制在学校的宣传册上,同时放在校园网的主页上用于计算机屏幕保护。该同学认为自己对该组照片拥有著作权,学校的使用行为构成侵权,希望学
在湖北随县出土的编钟是【】
鉴别橙皮苷可用鉴别邻二酚羟基可用
物业管理的基本模式()。①物业发展目标②物业管理目标③租赁市场管理④租赁期间管理⑤人事管理⑥建筑物、财务管理
(2007年)销售收入的决定因素不包括()。
关于个人汽车贷款中的汽车价格,下列说法中正确的有()。
根据以下资料。回答下列问题。2016年,全国平均气温10.36℃,较常年平均气温偏高0.81℃,为。1951年以来第三高,仅次于2015年(10.49℃)和2007年(10.45℃)。2016年四季气温均偏高,其中夏季气温为历史最高;除1月偏低、
你的下属在上班时间上网玩游戏。被群众偷拍下来,传到网上曝光,你作为部门领导该怎么办?
Electroniccomputerspeedsarerestrictednotonlybythespeedofelectronsinmatterbutalsobytheescalatingdensity
A、Becausetheclubchargeslessintheevening.B、Becauseitiseasytogatherenoughplayersintheevening.C、Becauseheisfr
最新回复
(
0
)