試題六
閱讀下列說(shuō)明和Java代碼,將應(yīng)填入(n)處的字句寫(xiě)在對(duì)應(yīng)欄內(nèi)。
[說(shuō)明]
某軟件公司現(xiàn)欲開(kāi)發(fā)一款飛機(jī)飛行模擬系統(tǒng),該系統(tǒng)主要模擬不同種類(lèi)飛機(jī)的飛行特征與起飛特征。需要模擬的飛機(jī)種類(lèi)及其特征如表6-1所示。
為支持將來(lái)模擬更多種類(lèi)的飛機(jī),采用策略設(shè)計(jì)模式(Strategy)設(shè)計(jì)的類(lèi)圖如圖6-1所示。
圖6-1中,AirCraft為抽象類(lèi),描述了抽象的飛機(jī),而類(lèi)Helicopter、AirPlane、Fighter和Harrier分別描述具體的飛機(jī)種類(lèi),方法fly38和takeOff38分別表示不同飛機(jī)都具有飛行特征和起飛特征;類(lèi)FlyBehavior與TakeOffBehavior為抽象類(lèi),分別用于表示抽象的飛行行為與起飛行為;類(lèi)SubSonicFly與SuperSonicFly分別描述亞音速飛行和超音速飛行的行為;類(lèi)VerticalTakeOff與LongDistanceTakeOff分別描述垂直起飛與長(zhǎng)距離起飛的行為。
]
[Java代碼]
interface FlyBehavior{
public void fly38;
};
class SubSonicFly implements FlyBehavior{
public void fly38(System.out.println("業(yè)音速飛行!");)
};
class SuperSonicFly implements FlyBehavior{
public void fly38{ System.out.println("超音速飛行!");}
};
interface TakeOffBehavior{
public void takeOff38;
};
class VerticalTakeOff implements TakeOffBehavior {
public void takeOff38{ System.out.println("垂直起飛!"); }
};
class LongDistanceTakeOff implements TakeOffBehavior {
public void takeOff38{ System.out.println("長(zhǎng)距離起飛!"); }
};
abstract class AirCraft {
protected (1) ;
protected (2) ;
public void fly38{ (3) ; }
public void takeOff38{ (4) ;};
};
class Helicopter (5) AirCraft{
public Helicopter38{
flyBehavior=new (6) ;
takeOffBehavior=new (7) ;
}
};
//其他代碼省略