日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BUAA-OO-第三单元总结

發布時間:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BUAA-OO-第三单元总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?BUAA-OO-第三單元總結

  又經過了三周的學習后,我們終于又度過了一個單元。本單元主要講的是關于JML規格的一些設計,下面我將詳細分享一下我對JML的一些理解以及這三次作業中我對JML UNIT等相關工具的應用。

一、什么是JML

  JML是Java Modeling Language的縮寫,顧名思義,它是一種Java建模語言。它有一套自己的語法,這套語法描述出一個方法的正常和異常情況、前置條件、改變量與不變式、后置結果。也就是說它可以準確描述出一個方法用來干什么以及如何使用。比如在這幾次的作業中,我們只需繼承幾個類,實現這幾個類中的方法,并將類傳入到AppRunner中,即可完成AppRunner的全部功能,得到我們想要的標準輸出或異常輸出結果。

  具體語法內容包括:

    行注釋://@xxxx  塊注釋:/*@xxxxx@*/

    原子表達式:\result;\old

    量化表達式:\forall;\exits

    等價關系:<==>;推出:==>

    前置條件:requires;后置條件:ensures;副作用:assignable

    不變式:invariant;狀態變化約束:constraint

  工具鏈:

    比較常用的有OPENJML對JML語法的檢測,JMLUNITNG自動生成測試樣例等。

二、JMLUnit/JMLUnitNG的使用

  如圖為我隨便寫的一個測試程序,包括了add和div

  接著使用JMLUnitNG生成的自動測試用例及結果如下

  可以發現add涉及到了溢出問題,div涉及到了除數為0的問題。

三、三次作業的架構設計

  第一次作業

    第一次作業比較簡單,但普通的做法會卡cpu時間,所以必須把PATH_GET_ID,PATH_GET_BY_ID,PATH_DISTINCT_NODE_COUNT等指令均攤在add和remove中。我采用了雙hashmap使得id和path相互對應,并且還使用了一個hashmap記錄不同結點的個數,每次add和remove時都會更新這3個hashmap,這樣在進行其它指令時只需到相應的hashmap中查找,或者返回hashmap的大小即可。

    

  第二次作業

    第二次作業在第一次作業的基礎上,新增了間結點是否有邊,是否相連以及最短路徑的指令。做法同第一次,在每次add和remove的時候更新相應的值。所以我新增了兩個hashmap套hashmap的結構edge和arrive模擬二維數組,在每次add時將每個結點直接相連的結點存在edge中,然后用BFS算出該節點的最短路徑存在arrive中,這樣是否有邊和是否相連就可查找edge和arrive解決,最短路徑返回相應的arrive的value即可。

  第三次作業

    第三次作業是最難的,在第二次作業的基礎上,新增了連通塊數量、最低票價、最少換乘、最少不滿意度4條指令。同樣需要把這4條指令攤在add和remove中。這次由于使用二維矩陣比較好做,所以我新建了4個靜態int型二維矩陣,分別為side,change,price,pleasant此外,還需要將節點id和數組下標相對應,所以我新增了2個hashmap使id和下標相互對應,并且新加了一個Queue在刪除時維護下標隊列。至此準備工作完成。具體算法我采用的是討論區wjy大佬說的不拆點做法,也就是給每個path的可達矩陣賦不同權重,用floyd算法后,將該可達矩陣賦值到change/price/pleasant矩陣,之后再用一次floyd算法,即可得到最少換乘/最低票價/最少不滿意度。連通塊的個數我是采用類似并查集的做法,通過edge計算后存下來即可。最后在調用相關指令時去訪問相對應矩陣中的元素即可。

  從三次作業的變量名也可看出我并沒有進行過重構,只是在原有的基礎上加了新的需求。因為原來的需求是不變的,這樣我至少可以保證舊的需求的正確性,在此基礎上添加新內容出現bug的幾率比較小。

四、bug情況

  很幸運的在三次作業的強測和互測中都沒有出現bug,3次強測中最長CPU時間分別為5.0s,6.9s,9,0s左右,與限制的最大CPU時間相差較遠,所以我自我感覺這三次作業我設計的還是不錯的。

五、心得與體會

  我覺得這一單元還是比較有趣的,就像是在實際場合中下發一個任務,我需要完成它。這三次作業的整體難度并不大,但其中涉及到一些圖論的知識以及數據結構相關知識,由于之前學的不太好導致在編碼過程中出現了問題。此外,我認為JML是一個很好的建模語言,它提供了一個標準,架構師把標準定好,實現人員只需要按照這個規格實現即可。它避免了因為自然語言上的二義性或者不同人的理解問題帶來的差異,在一個大型的工程中,需要很多人完成不同的項目,最終整合成一個大項目。如果有了JML這樣的語言,就可以使每個人準確無誤的完成各自的任務,避免因為理解不同而帶來的問題。至于JMLUnit之類工具的使用,只是簡單的進行了嘗試應用,希望以后能夠更加靈活使用這種自動化測試的方法。

?

轉載于:https://www.cnblogs.com/monokuma/p/10884903.html

總結

以上是生活随笔為你收集整理的BUAA-OO-第三单元总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩色av| 亚洲视频自拍偷拍 | 麻豆91视频| 香蕉视频成人在线 | 好吊妞视频在线观看 | 欧美一级特黄aaaaaa大片在线观看 | 久久伊人五月天 | 国产视频一区二区三区四区五区 | 在线三级av | ass精品国模裸体pics | 国产男女猛烈无遮挡a片漫画 | 国产一区二区伦理 | 久久综合色网 | 精品丰满少妇一区二区三区 | 成人免费毛片色戒 | 久久久中文网 | 国产精品成人国产乱一区 | 久久精品国产大片免费观看 | av大片在线观看 | 天堂网在线观看 | 国产又爽又猛又粗的视频a片 | 韩国一区二区视频 | 强行糟蹋人妻hd中文字幕 | 中文字幕3页 | www.久久久 | 国产一av | 国产精品视频在线免费观看 | 国产福利一区二区三区在线观看 | 99热激情 | 国产伦精品一区二区 | 一本到免费视频 | 中文字幕乱视频 | 麻豆视频免费版 | 手机av资源| 免费三片在线观看网站v888 | 国内av网| 亚洲欧美黄 | 欧美熟妇精品一区二区 | 第一页在线视频 | 国内精品久久久久久久久久 | 九九综合网 | 精品国产成人亚洲午夜福利 | 一本高清dvd在线播放 | 亚洲网站在线播放 | 色七七桃花影院 | 少妇高潮一区二区三区四区 | 亚洲天堂久久久 | 丰满人妻妇伦又伦精品国产 | 在线观看一区视频 | 龚玥菲一级淫片 | 二级毛片在线观看 | av毛片在线看 | 国产一二三四在线 | 国产精品99在线观看 | 成人性视频在线 | 日本天堂在线视频 | 日韩中文欧美 | xxxxhd欧美 | 97精品熟女少妇一区二区三区 | 亚洲一区二区中文字幕 | 国产又大又黑又粗 | 亚洲av无码久久精品狠狠爱浪潮 | 在线h片| 免费人妻精品一区二区三区 | sese久久 | 欧美日韩国产精品成人 | 波多野吉衣在线观看视频 | 中文字幕mv | 一级黄色特级片 | 国内精品久久久久久久 | 婷婷丁香一区二区三区 | 亚洲色图欧美激情 | 美女100%视频免费观看 | 91超碰在线免费观看 | 午夜av导航 | 亚洲视频在线免费观看 | 一区二区三区免费网站 | 日韩人妻精品在线 | 亚欧在线免费观看 | 中文字幕高清在线播放 | 亚洲黄色在线视频 | 99久久亚洲精品日本无码 | 精品一区二区久久久久久久网站 | 亚洲乱仑 | 97人妻天天摸天天爽天天 | 91成人在线观看喷潮动漫 | 国内av在线播放 | 国产精品久久久精品 | 亚洲自拍第三页 | 香港一级淫片免费放 | www操| 台湾三级伦理片 | 成人国产精品久久久 | 国产视频一区二区三区在线 | 日本女人毛片 | 午夜一本 | 成年人精品视频 | 白嫩日本少妇做爰 | 黑人欧美一区二区三区 |