前言本文章針對(duì)Java課程前三次PTA作業(yè)進(jìn)行總結(jié)一.作業(yè)過程總結(jié)1.總結(jié)三次作業(yè)之間的知識(shí)迭代關(guān)系:關(guān)于前三次作業(yè)之間的迭代關(guān)系,第一次作業(yè)主要是關(guān)于Java的最基礎(chǔ)的練習(xí),算法都可以直接再main函數(shù)里面實(shí)現(xiàn),初步了解Java的一些基本的操作,輸入輸出,至于其它語句和C語言都是一樣的。 第二次作業(yè)開始是關(guān)于日期方面的題目了,對(duì)于日期的相關(guān)操作都在一個(gè)類當(dāng)中實(shí)現(xiàn),只不過每個(gè)功能寫成了一個(gè)子函數(shù),所以前后題目所需要的共同方法只能復(fù)制過來。 第三次作業(yè)也是關(guān)于日期方面的操作,算法都在第二次作業(yè)基本實(shí)現(xiàn)了,只是題目對(duì)于編程的思想有了要求,要求用不同的類來實(shí)現(xiàn)每個(gè)功能,并且還有分類與類之間的關(guān)系來實(shí)現(xiàn);這三次作業(yè)循序漸進(jìn),從我們學(xué)C語言面向過程的思想引入到Java面向?qū)ο蟮乃枷?,題目實(shí)現(xiàn)的功能雖說一樣,但是所用到的知識(shí)點(diǎn)卻大有不同。 2.如何通過作業(yè)逐步從面向過程過渡到面向?qū)ο螅呵叭巫鳂I(yè)就是逐步引入我們到面向?qū)ο?,學(xué)習(xí)了C語言之后這種面向過程的思想難以一下就改變過來,所以第一次作業(yè)就是面向過程的,我認(rèn)為第一次作業(yè)就是先讓我們熟悉一下Java的一些基本操作,所以通過第一次作業(yè)熟悉基本操作之后,第二次的作業(yè)也不會(huì)過于陌生,通過第二次這一次過渡的環(huán)節(jié):在一個(gè)類當(dāng)中用子函數(shù)寫好所要實(shí)現(xiàn)的功能;再然后是第三次就引入了面向?qū)ο蟮乃枷耄}目給的UML類圖,寫好每一個(gè)類的功能以及類與類之間的關(guān)系,能夠較好理解并完成第二題,第三題就是需要理解好每個(gè)類的關(guān)系,就比如第三題當(dāng)中的Year類,Month類,Day類,DateUtil類的關(guān)系,通俗的說就是一層包一層,Year類是最里面的一層,其次是Month類,Day類,再全收在DateUtil類當(dāng)中算法第二題基本可以照搬,理解了第三題之后,第四題也就迎刃而解了,其實(shí)做完第三次作業(yè)第三題之后就體會(huì)到面向?qū)ο笈c面向過程的不同。 3.作業(yè)過程中遇到的問題及解決方法:在第一次作業(yè)當(dāng)中除了一些基本算法以及小bug之外,主要是對(duì)Java的一些輸入操作還不熟悉,后面百度了才知道要調(diào)用Scanner這個(gè)類進(jìn)行輸入,該類在JDk當(dāng)中寫好了,這在后面加深了我對(duì)類的調(diào)用的理解。 在第二次作業(yè)當(dāng)中,第一題是一元二次方程,忘記考慮了二次項(xiàng)系數(shù)不為0的情況;第二題是在非法日期上面存在問題,就是閏年2月不大于29,平年2月大于28;第三題第四題還是在于求下一天、下n天算法上面存在一些問題,就是少算了幾天多算了幾天,閏年平年的考慮,這方面的解決方法無需多提,就是考慮周全就好。 第三次作業(yè)主要問題集中在第三題,由于除了課堂作業(yè)外第一次做這種面向?qū)ο箢}目還有些生疏,主要問題在于類與類之間的關(guān)系沒有整理好,調(diào)用方法以及返回值的問題,還有第二次作業(yè)的日期判斷bug沒有被測到,把算法搬過來之后在第三次作業(yè)第三題被測到。關(guān)于類與類之間的關(guān)系以及方法的調(diào)用問題是詢問了同學(xué)之后基本上理解了,就比如我不知道如何在第三題Month類,Day類當(dāng)中調(diào)用year的方法,后面理解了是根據(jù)類之間的關(guān)系結(jié)構(gòu)來調(diào)用,這要先理清關(guān)系才能做;改完重新寫過日期判斷的方法的算法后,由于求下n天前n天的時(shí)間復(fù)雜度太大,稍微改進(jìn)了算法,原先用的for循環(huán),后面改進(jìn)用的while(){switch}之后就符合在題目要求的時(shí)間限度。 第四題沒什么問題,并且很快就寫完一次過了,問題都在第三題,解決了第三題的疑惑,第四題也就沒什么問題了。 4.每次作業(yè)花費(fèi)的時(shí)間比例:第一次作業(yè)做題目的時(shí)間前前后后花了5個(gè)小時(shí)左右,第二次作業(yè)也花費(fèi)了5小時(shí)左右,第三次作業(yè)花費(fèi)了10小時(shí)左右。 5.對(duì)編程過程的嚴(yán)謹(jǐn)性的認(rèn)識(shí)及教訓(xùn):對(duì)于編程的嚴(yán)謹(jǐn)在于敲代碼之前構(gòu)思好框架,對(duì)于一些特殊情況的考慮,就好比我的第三次作業(yè)主要修改程序的時(shí)間花在了日期判斷上面,因?yàn)榘嵊弥暗诙巫鳂I(yè)的這個(gè)日期判斷的代碼,第二次沒被測出bug,導(dǎo)致后面做第三次作業(yè)花費(fèi)大量時(shí)間尋找修改,雖說是小bug,并非硬核技術(shù)錯(cuò)誤,但是確實(shí)花了最多時(shí)間去找去修改,真的是小錯(cuò)誤浪費(fèi)大時(shí)間,編程心態(tài)也受到影響,所以對(duì)于這次的教訓(xùn)是刻骨銘心,實(shí)現(xiàn)算法要先仔細(xì)地周全地考慮一些特殊情況。 二.OO設(shè)計(jì)心得1.面向過程與面向?qū)ο蟮谋容^:通過這三次作業(yè),從面向過程過渡到了面向?qū)ο蟮乃枷?,面向過程主要是在于考慮思考如何去實(shí)現(xiàn)這個(gè)算法,以過程為中心,更加側(cè)重與算法實(shí)現(xiàn)方面的問題;面向?qū)ο笤谟诳紤]對(duì)象問題,把每個(gè)對(duì)象分開考慮,考慮每個(gè)對(duì)象所應(yīng)有的屬性和方法。 2.面向?qū)ο笤O(shè)計(jì)的基本原則理解:把每個(gè)類分開考慮,考慮這個(gè)類應(yīng)該是什么,具有什么屬性方法,不需要考慮這個(gè)類之外的事情,做好分內(nèi)之事即可。 3.OO編程思維的理解:編程之前考慮應(yīng)該能分成幾個(gè)類,每個(gè)類應(yīng)該負(fù)責(zé)什么,每個(gè)類所處的層次問題以及它們之間的關(guān)系。 三.測試的理解與實(shí)踐1.測試對(duì)于編碼質(zhì)量的重要性:一次性寫完沒有語法錯(cuò)誤的代碼并不難,但是一次寫出完美無bug的代碼是比較難的。所以測試對(duì)于編程可謂是非常重要的環(huán)節(jié),沒有測試過的代碼就像是沒有凈化的水,誰也不知道水里面藏著什么污垢。 2.假如讓你設(shè)計(jì)測試用例,你會(huì)如何做:我設(shè)計(jì)測試用例首先是用普通用例,首先這是檢查代碼大致的正確性,其次再是考慮一些特殊情況,盡可能全面地考慮所有特殊情況。 四.課程收獲1.總結(jié)這四周來在OO方面的教訓(xùn)及收獲:教訓(xùn)是對(duì)于每個(gè)類里面的命名要規(guī)范正確,做第三次作業(yè)在命名方面的錯(cuò)誤也居多,寫完之后再修改工作量實(shí)在大。收獲是對(duì)于OO編程思想有了更好的理解,從當(dāng)初學(xué)習(xí)C語言的面向過程思想轉(zhuǎn)變到了面向?qū)ο蟮乃枷搿?/span> 五.對(duì)課程的建議1.課堂建議:建議課堂側(cè)重一下講解知識(shí)點(diǎn)與舉例的比重,個(gè)人覺得可以更加側(cè)重于舉例與實(shí)際操作;其次是課間10分鐘時(shí)間可以安排一下,長時(shí)間聽課效果不是很好。 |
|