摘要:試題七(共15分)閱讀下列說明和Java代碼,將應(yīng)填入(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)?!菊f明】現(xiàn)欲實現(xiàn)一個圖像瀏覽系統(tǒng),要求該系統(tǒng)能夠顯示BMP、JPEG和GIF三種格式的文件,并且能夠在Windows和Linux兩種操作系統(tǒng)上運行。系統(tǒng)首先將BMP、JPEG和GIF三種格式的文件解析為像素矩陣,然后將像素矩陣顯示在屏幕上。系統(tǒng)需
試題七 (共 15 分 )
閱讀下列說明和Java代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
現(xiàn)欲實現(xiàn)一個圖像瀏覽系統(tǒng),要求該系統(tǒng)能夠顯示BMP、JPEG 和GIF三種格式的文件,并且能夠在Windows和Linux兩種操作系統(tǒng)上運行。系統(tǒng)首先將BMP、JPEG 和GIF三種格式的文件解析為像素矩陣,然后將像素矩陣顯示在屏幕上。系統(tǒng)需具有較好的擴展性以支持新的文件格式和操作系統(tǒng)。為滿足上述需求并減少所需生成的子類數(shù)目,采用橋接(Bridge)設(shè)計模式進行設(shè)計所得類圖如圖7-1所示。
采用該設(shè)計模式的原因在于:系統(tǒng)解析BMP、GIF與JPEG文件的代碼僅與文件格式相關(guān),而在屏幕上顯示像素矩陣的代碼則僅與操作系統(tǒng)相關(guān)。
【Java 代碼】
class Matrix{ //各種格式的文件最終都被轉(zhuǎn)化為像素矩陣
//此處代碼省略
};
abstract class ImageImp{
public abstract void doPaint(Matrix m); //顯示像素矩陣m
};
class WinImp extends ImageImp{
public void doPaint(Matrix m){ /*調(diào)用windows系統(tǒng)的繪制函數(shù)繪制像素矩陣*/ }
};
class LinuxImp extends ImageImp{
public void doPaint(Matrix m){/*調(diào)用Linux系統(tǒng)的繪制函數(shù)繪制像素矩陣*/}
};
abstract class Image {
public void setImp(ImageImp imp){
(1) = imp; }
public abstract void parseFile(String fileName);
protected (2) imp;
};
class BMP extends Image{
public void parseFile(String fileName){
//此處解析BMP文件并獲得一個像素矩陣對象m
(3) ;// 顯示像素矩陣m
}
};
class GIF extends Image{
//此處代碼省略
};
class JPEG extends Image{
//此處代碼省略
};
public class javaMain{
public static void main(String[] args){
//在windows操作系統(tǒng)上查看demo.bmp圖像文件
Image image1 = (4) ;
ImageImp imageImp1 = (5) ;
(6) ;
image1.parseFile("demo.bmp");
}
}
現(xiàn)假設(shè)該系統(tǒng)需要支持 10 種格式的圖像文件和 5 種操作系統(tǒng),不考慮類 Matrix 和類javaMain,若采用橋接設(shè)計模式則至少需要設(shè)計(7)個類。
[答案討論]
軟考備考資料免費領(lǐng)取
去領(lǐng)取