阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现欲实现一个图像浏览系
阅读下列说明和c++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图5—6所示。
采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。
【c++代码】
class Matrix{//各种格式的文件最终都被转化为像素矩阵
//st处代码省略
};
class ImageImp{
public:
virtual void doPaint(Matrix m)=0; //显示像素矩阵m
};
class WinImp:public ImageImp{
public:
void doPaint(Matrix m){/*调用windows系统的绘制函数绘制像素矩阵*/)
);
class LinuxImp:public ImageImp{
public:
void doPaint(Matrix m){/*调用Linux系统的绘制函数绘制像素矩阵*/)
};
class Image{
public;
void setImp(ImageImp*imp){ (1) =imp;)
virtual void parseFile(string fileName)=0 ;
protected:(2) *imp;
};
classBMP:public Image{
public:
void parseFile(string fileName){
//此处解析BMP文件并获得一个像素矩阵对象m(3) ;//显示像素矩阵m
};
classGIF:public Image{
//此处代码省略
};
classJPEG:public Image(
//gh处代码省略
};
void main(){
//在windows操作系统上查看demo.bmp图像文件
Image*imagel= (4) ;
ImageImp*imageImpl= (5) ;(6) ;
imagel->parseFile(“demo.bmp”);
}
现假设该系统需要支持10种格式的图像文件和5种操作系统,不考虑类Matrix,若采用桥接设计模式则至少需要设计 (7) 个类。
(1)this->imp(2)Imagelmp(3)imp->doPaint(m)(4)newBMP()(5)new WinImp()(6)imagel->setImp(imageImpl)(7) 17 解析:根据题目描述,在设计该图像显示系统时主要分为两个步骤:一是读取各种文件并将文件内容转换成像素矩阵,因为各种图片格式不同,因此需要针对每一种图片格式编写文件读取代码,而该代码与操作系统平台无关。将像素矩阵显示到屏幕上时,由于和操作系统相关,因此需要把该代码和读取文件代码相分离。设计巾的Image类表示抽象的图像概念Image类中就包含了读取文件接口和设置实现平台接口。Image的子类BMP、GIP和IPEG分别负责读取各种不同格式的文件;ImageImp的主要任务是将像素矩阵显示在屏幕上,因此,它存在两个子类,分别实现Windows系统和L,inux系统上的图像显示代码。空缺(1)处主要是设置将在哪个平台上进行实现,因此该处应该存储参数所传递的对象,由于该类的、成员变量也是imp,与参数相同,因此需要填写this—wimp,同理,该成员变量的类和参数的类M应该保持相同。空(2)处应该填写Imagelmp,空(3)处需要根据imp成员变量存储的实现对象来显示图像;在空(4)处需要生成一个BMP对象;由于需要在Windows平台上实现,因此空(5)处需要生成一个winImp对象,同时,还需设置该BMlP对象,应采用winImp对象来实现显示。采用桥接模式能够将文件分析代码和图像显示代码分解在不同的类层次结构中,如果不考虑中间使用的Matrix等类,那么最后需要设计的类包括两个父类,对应文件格式子类,对应操作系统平台类,因此10种图像格式和5种操作系统需要17个类。
下列各组词语中划线字的注音完全正确的一项是A.腼腆(diǎn)霎眼(shà)徘徊(páihuái) 其他 2020-04-23 …
将n只球(1至n号)随机地放进n只盒子(1至n号)中去,求E(X)将n只球(1至n号)随机地放进n 数学 2020-05-13 …
M与N有性杂交不亲和,科学家设法获得了两者的杂种植株。可能使用的方法是()。A.将M嫁接到N上,或 政治 2020-05-17 …
下列词语中字的读音,与所给注音全都相同的一项是A.假jiǎ假定假若假期假条B.监jiān监察国子监 其他 2020-07-12 …
园C方程x^2+(y-4)^2=4,直线l:y=kx与圆交与M,N,设Q(m,n)是线段MN上一点 数学 2020-07-24 …
关于比例选段的题,已知mn=ab,将它改写成比例式,使n放在第四比例项是已知a=5m,b=5cm, 数学 2020-08-03 …
关于IE浏览器,下列说法错误的是().A.可以清空保存在“历史记录”列表中的Web页面B.为了提高浏 其他 2020-11-03 …
下列词语中加下划线字的读音,与所给注音全都相同的一项是A.假jiǎ假定假若假期假条B.监jiān监察 其他 2021-01-01 …
求Linux习题答案:在vi中,5G表示()A.将光标移到第n行的行尾B.将光标移到第n行的行首C. 其他 2021-01-02 …
数学方面的.1.将长度为2N(N≥4,N是自然数)的一根铁丝折成各边的长均为整数的三角数,记(A,B 数学 2021-01-22 …