https://github.com/Centurybbx/sp18-century/tree/master/proj0
proj0的具體實現在上面的Github中。
在proj0中我明顯感受到國外大學對於教學課程的嚴謹性和權威性,之前只是聽說過測試(剛學習的小白),沒想到在CS61B中老師為了方便測試學生所寫代碼的准確性,提前寫好了不少測試類,直接運行即可。並且它的教程完全是保姆式的,完全是在手把手的教課,對於新手程序員來說簡直是不要太好。
下面主要談一下它的設計方面:
這個項目里面其實自己並沒有寫多少高大上的代碼,感覺它的實現還是挺簡單的,主要是基於牛頓定律和一些物理公式的推導得出來的。但是它的設計卻讓我感覺非常巧妙,例如在Planet中它先是循序漸進的讓我們寫出一個calcDistance(Planet p)方法來計算兩個天體之間的距離,隨后根據這個寫calcForceExertedBy(Planet p)方法,用來計算兩個天體之間的引力作用。隨后又引出calcForceExertedByX(Planet p)和calcForceExertedByY(Planet p)兩個方法來計算X和Y軸上力的分量,最后再寫出calcNetForceExertedByX(Planet[] ps)/calcNetForceExertedByY(Planet[] ps)引用上面的方法來計算出多個引力作用的結果,感覺很妙!
總體來說這個項目還是挺簡單的,因為好多輪子已經造好了,比如StdDraw/In這些工具類已經封裝好了很多方法,直接看着API文檔調用就好了。
-------------------------------------------------------------------------------------------------------
剛剛用gradescope評估了一下評分,發現它提示我有一點小問題——原來是變量作用域的問題,我用public修飾的G(一個系數)要改為private.....這真的好嚴謹,愛了愛了!這課不好好學完全是浪費啊!