1. 程式人生 > 其它 >軟體構造Lab1實驗要點總結

軟體構造Lab1實驗要點總結

  本實驗通過解決三個問題,訓練了基本的Java程式設計技能,並給出了Eclipse+Jdk+Junit的配置方案,以及對使用git進行專案管理的方式。

  1.因此,本實驗的第一個要點是配置環境。具體配置環境過程如下:

  Eclipse(IDE):直接從官網上安裝,按預設配置進行即可。

  Jdk:官網下載,在eclipse中Windows->preferences->Java->Installed JREs,然後把下的jdk8的最新版本add,然後apply即可。(之前配的18,所以沒遇到困難)

  Junit:eclipse配置時自帶,對專案使用測試時右鍵專案->build path->點module->右邊add library->找junit後apply即可。之後新建測試檔案只要使用assert等方法即可。

  Git:遇到一些困難,主要在於安裝哪個GUI能夠更方便的管理倉庫。後來決定下載GitHub Desktop,因為可以方便地直接關聯GitHub,圖形介面建倉庫以及上傳本地倉庫。唯一的缺點可能是不能使用git的所有功能,但鑑於實驗本身需要的git功能完全被GitHub Desktop包含,也用不到命令列,所以就用這個了。

(注意:在後續實驗中依據不同的實驗要求可能會使用git命令列來管理專案。因此,依照後續要求變化,可能會增加git的相關使用要點。)

  2.Magic Squares實驗中,magic square的定義是:n階幻方是n×n個數(通常是不同的整數)在一個方格中的排列,使得所有行、所有列和兩條對角線中的n個數總和為同一常數。本實驗包含判斷是否是magic square以及生成magic square兩個方法(函式),其中使用的資料結構以及呼叫的函式都不是很難,重點在於對輸入內容的異常判斷,這影響了你對輸入的magic square的判斷方法,如果讀入時候全部迴圈一行行讀就很難插入方法。

  這裡我的處理方式是:對於是否是矩陣以及矩陣符合要求的判斷由於行數不多,就沒有單獨拿出來處理。但是否是矩陣需要判斷第一行當行數的標誌物,所以我單獨把對讀入的第一行進行處理了。數字間分割以及是否是正整數這種就單獨分出函式即可。

  3.Turtle Graphics實驗中,大部分程式碼(包括相對關鍵的Turtle類以及實現GUI的類)都是給出的,只需要我們補全一個方法的程式碼。這當然大大降低了我們這個實驗的難度。然而,這個實驗也是有一定難度的。其難度主要是在凸包演算法那裡:凸包演算法用java實現是一件不容易的事情。首先函式的引數是一組點的集合,使用的是set方法,把一組點集合起來。但set由於底層實現是HashMap(HashSet也是由HashMap實現的),所以點的順序是不固定的,這就意味著我必須找一種類似於連結串列的方式重新存這些點,還要了解這種結構的各種方法。然後還要找最左下角的點,並對剩下點進行各種排序,最後用橡皮筋方法算點的時候還要確定範圍,不能出界。迴圈的時候要注意對範圍的變化要時刻標記,否則很容易出界。其他就沒什麼了,個人藝術設計也很有意思,難度不大又有創造性。

  4.Social Network中,主要要點在於遍歷無向圖時由於底層實現是有向圖,我們的處理需要比較恰當,還有用bfs遍歷無向圖的時候計算距離應當單獨開新變數,而不是計算迴圈次數,因為迴圈次數是所有點的和,而不是距離的疊加。具體來說,我在person類中新建一個private變數distance,專門用來計算bfs遍歷的時候樹上每個點距離樹根的大小,這樣找到點時即可輸出正確結果。

  以上就是我總結的本實驗的要點,希望對大家有所幫助。