摘要:試題六(共15分)閱讀下列說明和C++代碼,將應填入(n)處的字句寫在答題紙的對應欄內。【說明】現欲實現一個圖像瀏覽系統,要求該系統能夠顯示BMP、JPEG和GIF三種格式的文件,并且能夠在Windows和Linux兩種操作系統上運行。系統首先將BMP、JPEG和GIF三種格式的文件解析為像素矩陣,然后將像素矩陣顯示在屏幕上。系統需具有較
試題六(共15分)
閱讀下列說明和C++代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
現欲實現一個圖像瀏覽系統,要求該系統能夠顯示BMP、JPEG 和GIF三種格式的文件,并且能夠在Windows和Linux兩種操作系統上運行。系統首先將BMP、JPEG 和GIF三種格式的文件解析為像素矩陣,然后將像素矩陣顯示在屏幕上。系統需具有較好的擴展性以支持新的文件格式和操作系統。為滿足上述需求并減少所需生成的子類數目,采用橋接(Bridge)設計模式進行設計所得類圖如圖6-1所示。
采用該設計模式的原因在于:系統解析BMP、GIF與JPEG文件的代碼僅與文件格式相關,而在屏幕上顯示像素矩陣的代碼則僅與操作系統相關。
【C++代碼】
class Matrix{ //各種格式的文件最終都被轉化為像素矩陣
//此處代碼省略
};
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;
};
class BMP : public Image{
public:
void parseFile(string fileName){
//此處解析BMP 文件并獲得一個像素矩陣對象m
(3) ;// 顯示像素矩陣m
}
};
class GIF : public Image{
//此處代碼省略
};
class JPEG : public Image{
//此處代碼省略
};
void main(){
//在windows操作系統上查看demo.bmp圖像文件
Image *image1 = (4) ;
ImageImp *imageImp1 = (5) ;
(6) ;
image1->parseFile("demo.bmp");
}
現假設該系統需要支持10種格式的圖像文件和5種操作系統,不考慮類Matrix,若采用橋接設計模式則至少需要設計(7)個類。
[答案討論]
軟考備考資料免費領取
去領取