前五週總結(2)
前言
這學期正式開始接觸Java,多我們來說這是一個新的語言,前五週的學習讓我們對Java有了初步的認識,學習期間所涉及到的問題也都是比較基礎的題目,但儘管如此,對於初學者的我們,還是有一定的難度的,需要一次次的嘗試,一次次的除錯,一次次試錯,一次次修改,最終才能寫出一份較為完整的程式碼。這些題目主要是以鞏固語法為目的,讓我們夯實基礎,其中涉及到了類的建立,封裝性的實現,抽象類的使用,也有String類的使用方法這樣的小知識點,總體題目難度不算很大,題量也適中,只是其中有一些題目或是知識點對於我還是有些困難的。
雨刷問題
雨刷問題是正式學習Java接觸的第一個問題,簡單的開始,通過一次次地學習,一次次的優化,將雨刷問題寫的更加完善。從最初的不倫不類,到後面漸漸從中看到了Java的影子,慢慢具有了一定的Java的特點,同時也使我對Java的理解更深一步。
第一次
第一次只有一個類,只是簡單實現了雨刷的基本功能,根本看不出任何Java的影子。當時剛接觸Java沒多久,腦子裡的知識體系還停留在上學期學的C語言上,因此畫出的類圖簡直不能看。
類圖:
第二次
第二次初步學習了Java的封裝性,分出了五個類,雖然只是很簡單的分出了五個類,但相較於第一次來說,已經有了一定的進步了。
類圖:
第三次
初步瞭解了單一職責原則,增加了Driver和Print兩個類,讓類圖看起來更加豐富了一些。
類圖:
第四次
運用了MVC模式,且嘗試嵌入單例模式,只不過對這兩種模式僅僅是一知半解,有點照葫蘆畫瓢的意思,雖然也算是寫了出來,但之後還需要進一步的學習,加強對這部分知識的理解
類圖:
第五次
合理設計實體類、業務(控制)類、介面類、各個類的抽象父類以及相互的關係,基本符合SRP(Single Responsibility Principe,單一職責原則)、Demeter法則(Law of Demeter)、“開-閉”原則、里氏代換原則、依賴倒轉原則以及合成複用原則,使雨刷問題更加完善。經過這次的改進,類圖看起來已經有了Java的感覺了,我對Java的理解也更加深刻。
類圖:
總結
通過幾周的學習,雨刷問題逐漸完善,從最初的一個類到最後的十五個類,我也從最初的完全不瞭解到現在的略知一二,瞭解了Java七大原則並嘗試運用,也找到了學習的樂趣。
PTA
PTA上面的題目主要有兩種型別,一部分是一些計算類問題,主要目的是幫我們夯實基礎,將基礎語法、基礎知識一遍遍重複,應用到那些題目中去;另一部分是一些實驗類的題目,讓我們對Java的特點有更深刻的瞭解,讓我們的程式碼逐漸規範。
第一次
第一次作業基本圍繞同一個問題展開,那就是日期計算問題,三個題目層層遞進,一步步把同一個問題優化。
題目要求:參考題目集二中和日期相關的程式,設計一個類DateUtil,該類有三個私有屬性year、month、day(均為整型數),其中,year∈[1820,2020] ,month∈[1,12] ,day∈[1,31] ,
應用程式共測試三個功能:
1.求下n天
2.求前n天
3.求兩個日期相差的天數
輸入輸出樣例:
第二題第三題逐步優化,類圖如下:
總結:這次習題集完成的非常艱辛,總是出現各種各樣的錯誤,經過無數次除錯、修改、提交、測試,終於最後通過所有的測試點。這次艱難的經歷讓我明白了我對於Java的理解僅僅是皮毛,還有太多太多東西要學,也讓我除錯改錯的能力增加了,學會在程式碼中尋找錯誤,改正錯誤,並吸取教訓。
第二次
第二次pta作業明顯比第一次要好很多,可能是因為題目偏向基礎語法,都是一些比較容易寫出來的題目,也可能是經過一段時間的學習,讓我對Java有了進一步的瞭解,這次的題目寫起來就要輕鬆很多,一些題目直接一次通過,其餘的也沒有花費過多時間。
第三次
第三次的話要比第二次的題目略難一些,但相比第一次還是要簡單很多,沒有那麼多稀奇古怪的錯誤出現,用了較短的時間就完成了。這次題目主要是一些String類的應用,通過查詢、學習和做題,我也初步瞭解了String類一些簡單的方法的應用,比如比較、刪除、增添、分割等。
心得
經過這次PTA題目的洗禮,飽受測試點的折磨,終於還是通過了所有測試點,中間無數次的嘗試,無數次的提交,看著那一行行綠色的“答案錯誤”的字樣,我多少次想要放棄,想著這麼多測試點,就一兩個不過也已經很不錯了,但是每次有這樣想法的時候,就會點到排名裡面看一看,看到別人那一個個一百分,心中不免有些不甘,明明我也寫了那麼多行,為什麼我不能拿滿分呢?我難道就是比別人差嗎?於是我就會繼續改錯,絞盡腦汁想出那些可能的測試點,只要試出來一個錯誤,我就會非常開心,終於,功夫不負有心人,最終拿到了一百分。雖然作為一個初學者,我的程式碼肯定不是完美的,但是在這嘗試的過程中,我學到了許多許多。耐心、堅持、仔細、不怕犯錯,這都是在書寫程式碼時需要擁有的態度,同時,這也是生活中需要有的態度,這讓我受益匪淺。
實驗
第一次
一、實驗目的
1、練習類的構造方法、方法的呼叫、引數傳遞、物件的構造與使用;
2、練習迴圈結構、控制結構;
3、練習資料的輸入與輸出;
4、學習編寫結構清晰、邏輯正確、功能完善的java程式碼。
5、學習使用工具對程式碼進行跟蹤除錯。
二、實驗要求
1、對實驗中要求的程式碼進行上機除錯,完成實驗指導書中全部實驗內容。
2、編寫實驗報告。
三、實驗步驟
(一)第一題
1、閱讀給出的部分程式碼和題目描述;
2、通過題目提示寫出student類的主要部分;
3、查詢資料,學習隨機數random的用法;
4、書寫程式碼,保證無語法錯誤;
5、測試程式碼並修正程式碼中的可能錯誤和疏漏;
6、在規定的最後期限前提交程式碼。
(二)第二題
1、閱讀給出的部分程式碼和題目描述;
2、檢查程式碼出現的錯誤,並依次改正;
3、書寫缺失的程式碼,保證無語法錯誤;
4、測試程式碼並修正程式碼中的可能錯誤和疏漏;
5、在規定的最後期限前提交程式碼。
四、實驗結果
(一)第一題
1.
2.
(二)第二題
1.
2.
五、實驗小結
1、學習了物件陣列的使用方法,學會了建立物件陣列,學會如何儲存、使用陣列中的物件。
2、學習瞭如何產生隨機數,學會使用隨機數產生不同範圍的隨機數,利用隨機數間接產生隨機的姓名。
3、對於eclipse的除錯功能的使用更加熟練。
第二次
一、實驗目的
1、 掌握類與物件的基本概念;
2、 掌握類的宣告、建立與使用方法;
3、 掌握類的構造方法的定義與使用方法
4、 掌握類的成員變數、成員方法的定義與使用方法;
5、 理解類變數、類方法與例項變數、例項方法的區別;
6、 理解Java語言中包的概念以及package、import語句的使用。
7、 理解引用變數與物件例項之間的關係與區別;
8、 理解方法呼叫時引用型別引數的傳遞過程;
9、 掌握private、protected、public等關鍵的使用場合與使用方法;
10、 掌握物件組合的方式與方法;
11、 理解Java中方法過載的實現方式。
二、實驗要求
1、 根據實驗步驟中提出的要求,編寫相應的Java程式;
2、 編譯、執行自己所編寫的Java程式;
3、 根據編譯與執行過程中所獲得的錯誤資訊修改程式直至獲得正確的結果;
4、 記錄實驗中遇到的各類問題並以及解決辦法。
三、實驗步驟
(一)實驗二-1
1、閱讀給出的部分程式碼和題目描述;
2、理解題意,構思框架;
3、改正程式碼中基礎語法錯誤;
4、根據題目和所給出的部分程式碼,書寫缺少的程式碼,保證無語法錯誤;
5、測試程式碼並修正程式碼中的可能錯誤和疏漏;
6、在規定的最後期限前提交程式碼。
(二)實驗二-2
1、閱讀題目描述,和改進要求;
2、根據題目要求思考改進方法;
3、書寫程式碼,保證無語法錯誤;
4、測試程式碼並修正程式碼中的可能錯誤和疏漏;
5、在規定的最後期限前提交程式碼。
四、實驗結果
(一)實驗二-1
無論如何輸入,結果總是loss
(二)實驗二-2
經過改進,可以出現win的結果,並實現了類的封裝性
五、實驗小結
1、對類的封裝性有了進一步的瞭解;
2、邏輯思考能力有一定的提高;
3、對於eclipse的除錯功能的使用更加熟練。
搜尋
複製