北航OO(2020)第四單元博客作業暨課程總結博客
目錄
- 北航OO(2020)第四單元博客作業暨課程總結博客
- 本單元作業的架構設計
- 架構設計及OO方法理解的演進
- 四個單元中測驗理解與實踐的演進
- 課程識訓
- 關于課程的一些建議
- OO線上學習體會
本單元作業的架構設計
在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考,考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數,
本單元我對架構沒有做出修改,只是進行了增量開發,因此,下面展示本單元第三次作業的UML類圖并進行分析:
在本單元作業中,我采用Main類作為主控類,MyUmlGeneralInteraction類實作相應的介面,并將UML元素分派給三種圖類進行構造,同時呼叫三種圖類中的相應方法進行查詢和驗證,ClassModelDiagiam、CollaborationDiagram和StateChartDiagram三個類分別對應類圖、順序圖和狀態圖,它們管理相應的Elements并處理查詢和驗證操作,
架構設計及OO方法理解的演進
在四個單元的作業中,我的架構設計從最初的按照資料簡單拆分類,并將相應的方法封裝到類中,演進到現在的結合資料特點、類之間的關聯關系以及一些OO原則和設計模式進行類的構建,并由此設計出類中的屬性和方法,
通過一學期OO課程的學習,我對面向物件的理解從簡單拆分類演進到各種設計模式和設計原則,并看到了OO帶來的好處:模塊化、層次化、可擴展性和隱藏實作細節等,在作業開發的程序中,我從最開始的直接編碼,逐漸演進成現在的先進行架構設計,確定每個類中的屬性和方法,以及類之間如何進行互動,這樣,在最后只需要對方法進行填充即可,這也體現了一些設計和實作分開的思想,
四個單元中測驗理解與實踐的演進
測驗是我在本學期中比較薄弱的環節,在前兩個單元中,我主要依靠人工構造一些資料對程式進行測驗,雖然人工構造可以覆寫一些極端的邊界情況,但仍不及自動化的對拍測驗高效全面,這導致我在第一單元第三次作業中出現了Wrong Format判斷錯誤的情況,而且對于多執行緒程式來說,人工構造資料并進行驗證的效率更為低下,
在第三單元中,我主要依靠JUnit進行單元測驗,并與他人程式進行對拍,由于JUnit可以查看覆寫率資料,并可以方便地進行回歸測驗,在開發階段的測驗還是比較方便的,對拍測驗通過大量資料的生成來達到覆寫測驗的目的,實際效果也十分不錯,幫助我發現了一些bug,在這兩種測驗手段的幫助下,我無傷通關了本單元的測驗,
在第四單元中,由于需要畫圖,我的測驗手段又回歸了人工構造資料,果不其然,在最后一次作業中再次出現了回圈繼承判斷錯誤的情況,由此可見,一定程度上的自動化測驗還是十分必要的,
課程識訓
通過OO課程的學習,我了解了面向物件的基本原則和一些設計模式,掌握了Java中小型程式設計,入門了多執行緒程式設計以及規格化和模型化設計,
在第一單元中,我接觸了層次化設計的思想以及抽象、封裝、繼承和多型等基本OO特性,并在三次作業的訓練中,逐步使得自己的程式有了一些OO的特點,
在第二單元中,我接觸了多執行緒程式的設計,并學習了執行緒同步的一些方法和經典的生產者-消費者設計模式,通過三次電梯作業的訓練,我初步掌握了多執行緒程式的同步方法,
在第三單元中,我接觸了規格化程式設計,并了解了JML這種建模語言,雖然在如今的互聯網軟體開發中,如此嚴格的形式化規格表述并不常見,但形式化的規格方便進行嚴格的正確性驗證,可以應用在高可靠性領域,
在第四單元中,我接觸了模型化設計,并了解了UML這種建模語言,通過作業訓練和實驗訓練,我從結構層次和應用兩方面認識了UML,
通過12次代碼作業的訓練,我的Java代碼量達到了數千行,在這個程序中,我也逐步上手了Java中小型程式設計的一些基本方法,
關于課程的一些建議
- 建議控制課程時長,盡量不要在臨近考期時布置大量任務;
- 建議互換第二單元與第三單元的順序,在平衡難度的同時可以與OS課程進行更好的銜接(這樣可以在OS介紹完行程同步后再開始接觸多執行緒程式設計,降低同學們的上手難度);
- 建議UML部分將討論區的檔案結構介紹整合成參考手冊下發給大家,可以降低大家第一次作業的上手難度,
OO線上學習體會
OO課程受線上教學帶來的影響較小,僅僅是理論課部分不再能進行現場互動了,這一點通過課堂討論和課后問卷得到了一定程度上的彌補,但是我認為一些課堂討論題難度較大,不適合在課后立刻進行討論,因此一定程度上影響了討論的效果,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/1007.html
標籤:面向對象
上一篇:第三單元作業總結
下一篇:BUAA_OO_第四單元