午夜无码中文字幕影院,国产自产第一区c国产,久久久久久夜精品精品免费,国产99久久,夜夜夜夜曰天天天天拍国产,欧美日韩亚洲另类专区,国产精品区一区二区免费

軟題庫 學習課程
試卷年份2010年上半年
試題題型【分析簡答題】
試題內容

閱讀下列說明和Java代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
某軟件公司現(xiàn)欲開發(fā)一款飛機飛行模擬系統(tǒng),該系統(tǒng)主要模擬不同種類飛機的飛行特征與起飛特征。需要模擬的飛機種類及其特征如表6-1所示。

為支持將來模擬更多種類的飛機,采用策略設計模式(Strategy)設計的類圖如圖6-1所示。

圖6-1中,AirCraft為抽象類,描述了抽象的飛機,而類Helicopter、AirPlane、Fighter和Harrier分別描述具體的飛機種類,方法fly()和takeOff()分別表示不同飛機都具有飛行特征和起飛特征類FlyBehavior與TakeOffBehavior為抽象類,分別用于表示抽象的飛行為與起飛行為;類SubSonicFly與SuperSonicFly分別描述亞音速飛行和超音速飛行的行為;類VerticalTakeOff與LongDistanceTakeOff分別描述垂直起飛與長距離起飛的行為。
【Java 代碼】
interface FlyBehavior {
public void fly();
};
class SubSonicFly implements FlyBehavior{
public void fly(){ System.out.println("亞音速飛行!"); }
};
class SuperSonicFly implements FlyBehavior{
public void fly(){ System.out.println("超音速飛行!" ); }
};
interface TakeOffBehavior {
public void takeOff();
};
class VerticalTakeOff implements TakeOffBehavior {
public void takeOff (){ System.out.println("垂直起飛!" ); }
};
class LongDistanceTakeOff implements TakeOffBehavior {
public void takeOff(){ System.out.println("長距離起飛!"); }
};
abstract class AirCraft {
protected  (1)  ;
protected  (2)  ;
public void fly(){  (3)  ; }
public void takeOff() {   (4)   ; };
};
class Helicopter(5)AirCraft{
public Helicopter (){
flyBehavior = new  (6)  ;
takeOffBehavior = new  (7)  ;
}
};
//其它代碼省略

查看答案

相關試題

3題: 閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某運輸公司決定為新的售票機開發(fā)車票銷售的控制軟件。圖3-1給出了售票機的面板示意圖以及相關的控制部件。

售票機相關部件的作用如下所述:
(1)目的地鍵盤用來輸入行程目的地的代碼(例如,200表示總站)。
(2)乘客可以通過車票鍵盤選擇車票種類(單程票、多次往返票和座席種類)。
(3)繼續(xù)/取消鍵盤上的取消按鈕用于取消購票過程,繼續(xù)按鈕允許乘客連續(xù)購買多張票。
(4)顯示屏顯示所有的系統(tǒng)輸出和用戶提示信息。
(5)插卡口接受MCard(現(xiàn)金卡),硬幣口和紙幣槽接受現(xiàn)金。
(6)打印機用于輸出車票。
假設乘客總是支付恰好需要的金額而無需找零,售票機的維護工作(取回現(xiàn)金、放入空白車票等)由服務技術人員完成。
系統(tǒng)采用面向對象方法開發(fā),使用UML進行建模。系統(tǒng)的頂層用例圖和類圖分別如圖3-2和圖3-3所示。


?【問題1】(5分)
根據說明中的描述,給出圖3-2中A1和A2所對應的參與者,U1所對應的用例,以及(1)、(2)處所對應的關系。
?【問題2】(7分)
根據說明中的描述,給出圖3-3中缺少的C1~C4所對應的類名以及(3)~(6)處所對應的多重度。
?【問題3】(3分)
圖3-3中的類圖設計采用了中介者(Mediator)設計模式,請說明該模式的內涵。
答案解析與討論:www.xomuzic.com/st/380935084.html

4題: 閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內。
【說明】
對有向圖進行拓撲排序的方法是:
(1)初始時拓撲序列為空;
(2)任意選擇一個入度為0的頂點,將其放入拓撲序列中,同時從圖中刪除該頂點以及從該頂點出發(fā)的弧;
(3)重復(2),直到不存在入度為0的頂點為止(若所有頂點都進入拓撲序列則完成拓撲排序,否則由于有向圖中存在回路無法完成拓撲排序)。
函數(shù)int* TopSort(LinkedDigraph G)的功能是對有向圖G中的頂點進行拓撲排序,返回拓撲序列中的頂點編號序列,若不能完成拓撲排序,則返回空指針。其中,圖G中的頂點從1開始依次編號,頂點序列為v1,v2,…,vn,圖G采用鄰接表示,其數(shù)據類型定義如下:
#define MAXVNUM 50  /*最大頂點數(shù)*/
typedef struct ArcNode{ /*表結點類型*/
int adjvex;    /*鄰接頂點編號*/
struct ArcNode *nextarc;   /*指示下一個鄰接頂點*/
}ArcNode;
typedef struct AdjList{ /*頭結點類型*/
char vdata;   /*頂點的數(shù)據信息*/
ArcNode *firstarc;   /*指向鄰接表的第一個表結點*/
}AdjList;
typedef struct LinkedDigraph{     /*圖的類型*/
int n;    /*圖中頂點個數(shù)*/
AdjList Vhead[MAXVNUM];   /*所有頂點的頭結點數(shù)組*/
}LinkedDigraph;
例如,某有向圖G如圖4-1所示,其鄰接表如圖4-2所示。

函數(shù)TopSort中用到了隊列結構(Queue的定義省略),實現(xiàn)隊列基本操作的函數(shù)原型如下表所示:
數(shù) 原 型
說      明
void InitQueue(Queue*Q)
初始化隊列(構造一個空隊列)
bool IsEmpty(Queue Q)
判斷隊列是否為空,若是則返回true,否則返回false
void EnQueue(Queue*Q,int e)
元素入隊列
void DeQueue(Queue*Q,int*p)
元素出隊列
【C代碼】
int *TopSort(LinkedDigraph G) {
ArcNode *p;  /*臨時指針,指示表結點*/
Queue Q; /*臨時隊列,保存入度為0的頂點編號*/
int k = 0;    /*臨時變量,用作數(shù)組元素的下標*/
int j = 0, w = 0;    /*臨時變量,用作頂點編號*/
int *topOrder, *inDegree;
topOrder = (int *)malloc((G.n+1) * sizeof(int));   /*存儲拓撲序列中的頂點編號*/
inDegree = (int *)malloc((G.n+1) * sizeof(int));   /*存儲圖G中各頂點的入度*/
if (!inDegree || !topOrder) return NULL;
(1)  ;   /*構造一個空隊列*/
for ( j = 1; j <= G.n; j++ ) { /*初始化*/
topOrder[j] = 0;  inDegree[j] = 0;
}
for (j = 1; j <= G.n; j++) /*求圖G中各頂點的入度*/
for( p = G.Vhead[j].firstarc; p; p = p->nextarc )
inDegree[p-> adjvex] += 1;
for (j = 1; j <= G.n; j++) /*將圖G中入度為0的頂點保存在隊列中*/
if ( 0 == inDegree[j] ) EnQueue(&Q,j);
while (!IsEmpty(Q)) {
(2) ; /*隊頭頂點出隊列并用w保存該頂點的編號*/
topOrder[k++] = w;
/*將頂點w的所有鄰接頂點的入度減1(模擬刪除頂點w及從該頂點出發(fā)的弧的操作)*/
for(p = G.Vhead[w].firstarc; p; p = p->nextarc) {
(3)-= 1;
if (0 ==(4)) EnQueue(&Q, p->adjvex);
}/* for */
}/* while */
free(inDegree);
if (  (5)  )
return NULL;
return topOrder;
} /*TopSort*/
?【問題1】(9分)
根據以上說明和C代碼,填充C代碼中的空(1)~(5)。
?【問題2】(2分)
對于圖4-1所示的有向圖G,寫出函數(shù)TopSort執(zhí)行后得到的拓撲序列。若將函數(shù)TopSort中的隊列改為棧,寫出函數(shù)TopSort執(zhí)行后得到的拓撲序列。
?【問題3】(4分)
設某有向無環(huán)圖的頂點個數(shù)為n、弧數(shù)為e,那么用鄰接表存儲該圖時,實現(xiàn)上述拓撲排序算法的函數(shù)TopSort的時間復雜度是(6)。
若有向圖采用鄰接矩陣表示(例如,圖4-1所示有向圖的鄰接矩陣如圖4-3所示),且將函數(shù)TopSort中有關鄰接表的操作修改為針對鄰接矩陣的操作,那么對于有n個頂點、e條弧的有向無環(huán)圖,實現(xiàn)上述拓撲排序算法的時間復雜度是(7)。

從下列的2道試題(試題五和試題六)中任選1道解答。如果解答的試題數(shù)超過1道,則題號小的1道解答有效。
答案解析與討論:www.xomuzic.com/st/3809416600.html

5題: 閱讀下列說明和C++代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
某軟件公司現(xiàn)欲開發(fā)一款飛機飛行模擬系統(tǒng),該系統(tǒng)主要模擬不同種類飛機的飛行特征與起飛特征。需要模擬的飛機種類及其特征如表5-1所示。

表5-1

飛機種類
起飛特征
飛行特征
直升機(Helicopter)
垂直起飛(VerticalTakeOff)
亞音速飛行
(SubSonicFly)
客機(AirPlane)
長距離起飛
(LongDistanceTakeOff)
亞音速飛行
(SubSonicFly)
殲擊機(Fighter)
長距離起飛
(LongDistanceTakeOff)
超音速飛行
(SuperSonicFly)
鷂式戰(zhàn)斗機(Harrier)
垂直起飛(VerticalTakeOff)
超音速飛行
(SuperSonicFly)

為支持將來模擬更多種類的飛機,采用策略設計模式(Strategy)設計的類圖如圖5-1所示。

圖5-1中,AirCraft為抽象類,描述了抽象的飛機,而類Helicopter、AirPlane、Fighter和Harrier分別描述具體的飛機種類,方法fly()和takeOff()分別表示不同飛機都具有飛行特征和起飛特征;類FlyBehavior與TakeOffBehavior為抽象類,分別用于表示抽象的飛行為與起飛行為;類SubSonicFly與SuperSonicFly分別描述亞音速飛行和超音速飛行的行為;類VerticalTakeOff與LongDistanceTakeOff分別描述垂直起飛與長距離起飛的行為。
【C++ 代碼】
#include
using namespace std;
class FlyBehavior {
public : virtual void fly() = 0;
};
class SubSonicFly:public FlyBehavior{
public: void fly(){ cout << "亞音速飛行!" << endl; }
};
class SuperSonicFly:public FlyBehavior{
public: void fly(){ cout << "超音速飛行!" << endl; }
};
class TakeOffBehavior {
public: virtual void takeOff() = 0;
};
class VerticalTakeOff:public TakeOffBehavior{
public: void takeOff(){ cout << "垂直起飛!" << endl; }
};
class LongDistanceTakeOff:public TakeOffBehavior {
public: void takeOff (){ cout << "長距離起飛!" << endl; }
};
class AirCraft{
protected:
(1)   ;
(2)   ;
public:
void fly(){(3); }
void takeOff() {(4); };
};
class Helicopter: public AirCraft {
public:
Helicopter (){
flyBehavior = new(5);
takeOffBehavior = new(6);
}
(7){
if(!flyBehavior) delete flyBehavior;
if(!takeOffBehavior) delete takeOffBehavior;
}
};
//其它代碼省略
答案解析與討論:www.xomuzic.com/st/3809511481.html