1.作業的架構設計
(1)對于第一次作業中,要求我們實現關于類圖的查詢指令。
在這次作業中,主要采用的儲存方法是哈希表。
在查詢方法上,大多數要求諸如共有多少類等,利用哈希表進行查詢即可。
比較困難的一些指令在于,頂級父類以及類的全部接口這兩個。這兩個涉及到的更多在于圖的遍歷問題,所以筆者采取的方式是遞歸遍歷方式。
(2)對于第二次作業中,在繼承了類圖的查詢指令之外,還增添了關于順序圖和狀態圖的概念,以及三條規則的要求。
在儲存信息方面依舊采用的是哈希表,第二次作業和第一次作業的區別最大就在于是遍歷上了。第一次作業可以不采用遞歸,利用循環也能做,第二次作業就是較為純粹的圖的遍歷,我用的方法是深度優先遍歷的方式。
2.四個單元中的架構設計及OO方法的理解演進
(1)第一個單元,基本上架構沒有什么特別深入的理解。作為新上手java的小白,第一感覺是java能夠提供的函數或者是方法容器比C多了很多,所以在寫第一單元的作業時,基本上都是在用C的思維來寫的。事實上是第一單元的作業在第三次作業的時候如果采用類的思維來寫得話,整體的速度會快很多
(2)第二個單元,多線程電梯問題。從邁入第二單元后,發現的問題就是,我用C寫不出多線程(可能是可以的,只是我比較菜)。所以就開始比較困難的學習多線程的知識,在網上找類似的問題,去研究代碼,最后在架構上,就開始利用一次一次作業的繼承,稍微修改一下就好很多。
(3)第三個單元,規格設計。規格設計,是我三個單元作業中完成最好的一次。在規格作業中,除了研究好的架構,受到CPU時間的限制,就開始研究程序的性能,會不會出現爆掉的情況,這個時候,我覺得就有點學到一點好的架構的感覺。
(4)第四單元,具體的感覺和第三單元差不多,但是難度會更高一點。
3.測試理解和實踐的演進
在第一單元中,由于之前的習慣,就比較喜歡用數據去測程序,但然后自己感覺差不多了,就交測評機了,但事實是,測評機的錯誤有時候是隱藏的數據,如果找不出那個類似的數據錯誤,就很奔潰。
在第二單元同上。
在第三單元中,因為引入了規格,在理解上就更好了,所以有了一個比較好的理解,構思程序起來就顯得比較清楚了,整體去測的時候也沒有數據的問題。在這一單元中,影響最大的是對于程序的性能方面,也就是程序的CPU時間和測評時間。
第四單元同上。
4.課程收獲
對于OO而言,其實算是學會了關于java上的一些方法,包括多線程,以及java的一些容器。也能夠看到很多大佬寫程序時候就很嚴謹,但其實對于我這種新手玩家來講,也不是說不想寫的嚴謹,就是確實是心有余而力不足,不過能夠初步的了解java,已經算是很大的收獲了。
5.建議
(1)以后能不能把實驗課不要放在單周下午啊,感覺就是上午上完,下午就得現場寫,就freestyle的感覺。
(2)關于互測這個問題,說實話講,兩天的時間去讀同房間人的代碼,能夠讀1個就很不錯了,畢竟你系大二下不只是OO,一周下來也就只有周三周四能休息了,如果愿意犧牲這個時間去找的話,也沒什么話講,今年感覺也不是很狼,但就是,可能會有種不舒服的感覺吧,幫同學找bug,讓自己加分,然后讓同學看著成堆的bug哭,也不太好。