軟體構造實驗三總結
這次就乙個目標實現乙個adt。
本次實驗給定了五個具體應用(高鐵車次管理、航班管理、作業系統程序管
理、大學課表管理、學習活動日程管理),學生不是直接針對五個應用分別程式設計
實現,而是通過 adt 和泛型等抽象技術,開發一套可復用的 adt 及其實現,充
分考慮這些應用之間的相似性和差異性,使 adt 有更大程度的復用(可復用性)
和更容易面向各種變化(可維護性)。
也就是說,鍛鍊我們編寫可復用性高,可維護性強的軟體的能力。
這五種應用,都有著以下屬性:
計畫項:表示乙個待執行的活動/任務,它需要配置特定型別/數量的 資源,並在特定的物理位置加以執行。
資源:計畫項的執行過程中所需要占用的物理設施、數字設施或者人,例如一架飛機、乙個動車組、乙個投影機、計算機 i/o裝置或記憶體、飛行員、乘務員、教師等。在本實驗中,每個計畫項所占用的資源都是單一型別的。
物理位置:計畫項執行的物理地點,例如高鐵站、機場、教室、cpu 核等。計畫項可以是在乙個位置上啟動並執行完(例如在正心11 教室上「軟體構造」課),也可以從乙個位置啟動,抵達另乙個位置才執行完(例如 ca1611 航班從北京起飛抵達哈爾濱結束),也可以經過一系列位置(例如高鐵 g381 次從北京出發要經過 10 餘個高鐵站才抵達終點哈爾濱西),甚至可以在執行過程中切換位置(例如某程序最初在某個核上執行,掛起恢復後切換到另乙個核上)。
時間屬性:分為三種情況:
⚫ 具有確定的開始時間和結束時間(例如某次「軟體構造課」是 2020 年 3 月 1 日 8:00-10:00)。
⚫ 需要分段執行,因此其時間屬性也需要分段標註(例如g381 中間經停 10 餘個車站,除了有出發和抵達時間,也需要有經停某車站的停車時間與發車時間)。
⚫ 事先無法確定具體的執行時間(例如 cpu 執行某個程序,其執行起始和結束時間不能提前計畫,而是由 os動態排程,只有在執行結束後才能得知其時間屬性)。
資訊板:每個具體地點都提供乙個資訊板,展示在該地點的過去發生和未來即將執行的計畫項清單及各自的狀態。例如:「哈爾濱西站」的大螢幕顯示牌、「正心 11」教室外張貼的本教室課表等。
計畫清單:由一組計畫項構成的整體。例如,1803101 班 2020 年春季的課表、哈爾濱機場 2020 年春夏季航班時刻表等。
而這些就是復用的主體,這五種應用的這幾種屬性都或多或少有相同點,只要根據這些相同點來編寫功能,並結合咱們學到的各種設計模式,就可以盡可能地提高可復用性,還能降低**的重複書寫。
我選擇的是航班、高鐵和大學課表。
這裡我就用的裝飾器模式來將這些屬性一一加入到各應用中。
對於每乙個屬性都按照數量來進行不同的書寫,例如資源分為單一資源和多資源,就建立兩個類,乙個代表單一資源,就是老師,飛機這種;乙個是多資源,各車廂等。
而這些屬性都繼承乙個總的裝飾器類,裝飾器類還繼承乙個commonplanningentry類,他還繼承乙個planningentry介面。
所有具體應用類都是commonplanningentry類的子類。
他們的具體實現都是委託各裝飾類來給他們裝飾各種屬性,但也並不在自己類中實現,都有各自的實現類來實現各自的實際應用。
這裡又用到了工廠方法來呼叫具體方法。
3.7中還用到了狀態模式,用乙個自動機來表示狀態轉移,從而記錄計畫項狀態。
3.10中façade模式來封裝每乙個應用。
3.11中還用到了迭代器模式來給各planningertry按時間排序。
3.13中練習了正則語言
3.14中git建立新分支然後還對各應用進行了小的改動
總的來說,這次試驗就是鍛鍊我們編寫可復用api,讀於各不同應用,分析他們各自屬性,然後都他們進行分類,把相同的不同的區分好,然後選擇合適的設計模式,講各屬性都編寫好,然後封裝到一起。對於各種設計模式,理解好了原理並且要理解其目的,就能很好地運用。
實驗三 總結部落格
參考 在searching中補充查詢演算法並測試 提交執行結果截圖 斐波那契查詢public static comparable fibonaccisearch comparable data,comparable target comparable fibdata new comparable f...
練習三總結
一.動態規劃,它是解決 多過程問題的一種方法,它包括兩種思想 區域性原則和區域性最優原則 即把乙個問題通過狀態轉移方程 通常是遞迴 劃分成多個子問題,然後再按步驟尋找區域性最優解,這樣按步驟得到最優解。技巧 通過做這幾道題來看,有的題目完全就是可以通過dp,遞迴等別的方法來解決,動態規劃的優點是用乙...
專題三總結
這個專題講的是動態規劃的內容,到現在為止,已經做了3 個專題了,我個人認為,動態規劃這個專題還是挺好做的,沒有剛開始老師說的的那麼難。先來點理論知識吧。所謂動態規劃,它是解決多階段決策問題的一種方法。動態規劃的指導思想就是在做每一步決策時,列出各種可能的區域性解,依據某種判定條件,捨棄那些肯定不能得...