當前位置: 首頁 > 問題分類 > 計算機類考試 > 軟考中級 > 問題詳情
問題

請仔細閱讀以下關于某傳輸系統的技術說明、狀態轉換圖及Java程序,根據要求回答問題1~問題2。

[說明]

傳輸門是傳輸系統中的重要裝置。傳輸門具有Open(打開)、Closed(關閉)、Opening(正在打開)、 StayOpen(保持打開)和Closing(正在關閉)5種狀態。觸發狀態的轉換事件有click、complete和timeout3種。事件與其相應的狀態轉換如圖7-16所示。

下面的[Java代碼1]與[Java代碼2]分別用兩種不同的設計思路對傳輸門進行狀態模擬,請填補代碼段中的空缺語句。

[Java代碼1]

請將以上[Java代碼1]與[Java代碼2]程序段中,(1)~(7)空缺處的語句填寫完整。

參考答案
正確答案:這是一道要求讀者掌握狀態轉換圖的程序設計與實現的綜合題。本試題的解答思路如下。 根據(1)空缺處所在的程序段給出的注釋信息“發生click事件時進行狀態轉換”可知(1)空缺處所在的方法為click表示當發生click事件時應該發生什么狀態轉換。找出傳輸門響應事件與其狀態轉換圖(見圖7-16)與click事件相關的內容并特別注意箭頭所指的方向。由于發生click事件前的狀態 CLOSED、CLOSING分別跳轉到狀態OPENING因此(1)空缺處所填寫的內容是“state==CLOSED‖state ==CLOSING”。 同理由圖7-16所示中的狀態轉換關系可知發生click事件前的狀態OPENING、STAYOPEN分別跳轉到狀態CLOSING即(2)空缺處所填寫的內容是“state==OPENING‖state==STAYOPEN”;發生click事件前的狀態OPEN跳轉到狀態STAYOPEN即(3)空缺處所填寫的內容是“state==OPEN”。 仔細閱讀[Java代碼2]程序段由語句private DoorState state=CLOSED;可知類Door的state成員變量用于記錄類Door所處的狀態而state變量的類型為Doorstate。由語句“public void click() {}”、“public void complete() {}”和“public void timeout() {}”可知Doorstate中分別具有click、timeout和complete方法用來響應對應的事件。根據(4)空缺處所在程序段給出的注釋信息“發生click事件時進行狀態轉換”可得(4)空缺處所填寫的內容是“state.click()”。 同理根據(5)空缺處的注釋信息——“發生timeout事件時進行狀態轉換”可得(5)空缺處所填寫的內容是“state.timeout()”;根據(6)空缺處的注釋信息——“發生complete事件時進行狀態轉換”可得(6)空缺處所填寫的內容是“state.complete()”。 根據(7)空缺處所在程序段給出的注釋信息“定義一個基本的Closed狀態”和語句“public void click()”可知(7)空缺處所填寫的內容與傳輸門當前狀態為CLOSED且發生Click事件時狀態的遷移有關。結合圖7-16所示中的狀態轉換關系可知在Click事件下CLOSED狀態將遷移到OPENING因此(7)空缺處應該將傳輸門的狀態設置為OPENING。由于Doorstate變量存儲了當前其存儲的傳輸門的實例因此可直接調用其方法setState設置狀態。同時考慮到傳輸門的狀態采用類的實例變量表示故(7)空缺處所填寫的內容為“door.setState(door.OPENING)”。
這是一道要求讀者掌握狀態轉換圖的程序設計與實現的綜合題。本試題的解答思路如下。 根據(1)空缺處所在的程序段給出的注釋信息“發生click事件時進行狀態轉換”可知,(1)空缺處所在的方法為click,表示當發生click事件時應該發生什么狀態轉換。找出傳輸門響應事件與其狀態轉換圖(見圖7-16)與click事件相關的內容,并特別注意箭頭所指的方向。由于發生click事件前的狀態 CLOSED、CLOSING分別跳轉到狀態OPENING,因此(1)空缺處所填寫的內容是“state==CLOSED‖state ==CLOSING”。 同理,由圖7-16所示中的狀態轉換關系可知,發生click事件前的狀態OPENING、STAYOPEN分別跳轉到狀態CLOSING,即(2)空缺處所填寫的內容是“state==OPENING‖state==STAYOPEN”;發生click事件前的狀態OPEN跳轉到狀態STAYOPEN,即(3)空缺處所填寫的內容是“state==OPEN”。 仔細閱讀[Java代碼2]程序段,由語句private DoorState state=CLOSED;可知,類Door的state成員變量用于記錄類Door所處的狀態,而state變量的類型為Doorstate。由語句“public void click() {}”、“public void complete() {}”和“public void timeout() {}”可知,Doorstate中分別具有click、timeout和complete方法用來響應對應的事件。根據(4)空缺處所在程序段給出的注釋信息“發生click事件時進行狀態轉換”可得,(4)空缺處所填寫的內容是“state.click()”。 同理,根據(5)空缺處的注釋信息——“發生timeout事件時進行狀態轉換”可得,(5)空缺處所填寫的內容是“state.timeout()”;根據(6)空缺處的注釋信息——“發生complete事件時進行狀態轉換”可得,(6)空缺處所填寫的內容是“state.complete()”。 根據(7)空缺處所在程序段給出的注釋信息“定義一個基本的Closed狀態”和語句“public void click()”可知,(7)空缺處所填寫的內容與傳輸門當前狀態為CLOSED且發生Click事件時狀態的遷移有關。結合圖7-16所示中的狀態轉換關系可知,在Click事件下CLOSED狀態將遷移到OPENING,因此(7)空缺處應該將傳輸門的狀態設置為OPENING。由于Doorstate變量存儲了當前其存儲的傳輸門的實例,因此可直接調用其方法setState設置狀態。同時考慮到傳輸門的狀態采用類的實例變量表示,故(7)空缺處所填寫的內容為“door.setState(door.OPENING)”。
您可能感興趣的試題
  • 定義了三種模型來描述系統。(49)可以用狀態圖來表示;(50)可以用數據流圖來表示。(51)為上述兩種模型提供了基本的框架。

    A.對象模型

    B.功能模型

    C.動態模型

    D.類模型

  • A.分治法

    B.貪心法

    C.動態規劃方法

    D.回溯法

  • 以關鍵字比較為基礎的排序算法在最壞情況下的計算時間下界為O(nlogn)。下面的排序算法中,最壞情況下計算時間可以達到O(nlogn)的是(59);該算法采用的設計方法是(60)。

    A.歸并排序

    B.插入排序

    C.選擇排序

    D.冒泡排序

  • A.排序

    B.檢索

    C.背包

    D.0/1背包

新疆十一选五和值表