《 OO第一做業週期(前四周)總結 》

做爲一名軟件工程的大學生,很高興可以以這樣一種方式,實現對博客編寫零的突破。專業課老師也介紹了編寫博客給咱們帶來的幫助,聽了之後,我感受到了培養出寫博客的習慣,是一件多麼有意義的事!java

話很少說,讓咱們言歸正傳。程序員

0. 前言算法

本次做業:《 OO第一做業週期(前四周)總結 》編程

針對咱們第一階段的做業( 共三次 ),發表總結性博客。這三次做業,均可以較爲順利完成,並達到滿分。eclipse

對於這五週所學習到的java知識,也是讓我初步瞭解了java面向對象的風格。函數

1. 做業過程總結學習

①總結三次做業之間的知識迭代關係;測試

這三次PTA中的做業,可能尚未過多的涉及到面向對象的設計。其中,第一次做業,我認爲是對一些程序設計算法的基本考察,不少都是和大一上學期所學的C語言類似的題目。例如,第一題,計算稅率:全是大量的根據輸入的值進行公網站

計算,我可能認爲代碼放在一個main函數裏,顯得很亂,就在類裏面添加了一個計算稅率和判斷種類的函數。這樣main函數中的代碼看上去更簡潔一些,思路更明確。因爲題目要求,稍微在網上查了一下,java控制檯輸入的代碼。剩餘四編碼

題都是基礎的條件判斷。

第二次做業:初次涉及到部分日期的算法,一開始,對日期的求法比較頭疼,須要考慮到不少狀況。想了好久也沒有什麼比較簡便的算法,因而就一點點的把全部狀況例舉出來,尤爲是考慮到了特殊狀況,例如:往前跨月、往前跨年,閏

年的跨月......至少是成功經過了測試,感受不夠簡便。

第三次做業:這個耗時最多的一次,我也認爲是對面向對象的初次體現。此次做業,在第二次做業,對日期算法的基礎上,加大了難度,不只僅是算法上的難度,還有類設計的。先說算法上:與上次不一樣的是,前n天和後n天的範圍沒有規

定,也就是須要考慮大於一個月、甚至是年份爲負數的狀況......對於狀況的考慮,我以前一直有漏掉的方面,再過測試點的時候遇到了麻煩。首先沒有考慮到輸入的n值過大的問題。因此最後選擇了"long"的數據類型,是第一次在代碼中使用。

而後,在求前n天和後n天裏,求出輸入日期距離"0000-1-1"的天數,加上"n"獲得總天數,在從"0000-1-1"累加天數求新的日期。計算負數年份的算法,因爲代碼的設計,負數年份我考慮用天數減去全年天數,最後剩餘小於多一年的數, 日

期從"-1-12-31"開始計算,由於日期是從後往前計算,因此能夠直接用一年的天數減去剩餘不足一年的天數, 計算出來的天數能夠採用正向按月累加,獲得相應日期。類的設計裏面,有兩種不一樣的形式。一個是五角星,一個是鏈式結構。五角

星:在日期算法的類中,有「年-月-日」三個類圍繞,在算法中類方法的調用相對簡便;鏈式結構:是以「日期算法->日->月->年」的結構,方法中的屬性調用麻煩,須要按鏈的順序,逐級調用。日期的算法均採用的以前設計過的算法,並沒

有按着題目裏已給出的屬性,從新設計算法。雖然是直接copy,可是類屬性的調用改起來依然很麻煩,尤爲是鏈式結構的設計。

        ②如何經過做業逐步從面向過程過渡到面向對象;

面向過程的概念接觸多是在C語言當中,知道main函數裏面調用外部設計的各類功能函數。在第1、二次做業當中,使用的更可能是面向過程的思想,也與題目自己有關係,由於沒有過多的涉及面向對象的知識。而到了第三次做業,

面向對象的思想初步體現,尤爲是最後兩題,類的多種結構設計。在「年月日」三個類的設計中,有更多的面向對象的體現。設計出的類,須要建立出實體,這個實體我就認爲是一個對象,因此類設計出來,是爲了對象,而類被看作是一

個概念。

③做業過程當中遇到的問題及解決方法

做業中遇到的問題真的是一雙手的手指都數不過來,由於不少知識須要在課下進行學習。從最簡單的控制檯輸入開始,這個和以前學的C語言的輸入輸出格式大不相同。以前只是最簡單的"scanf",在網上查詢之後,知道了java裏面可

以按數據類型控制輸入的數據,就好像".nextInt"、".nextLine"......各有各的做用,相對於以前學的,在數據的接收方面看上去更方便一些。接着就是,代碼風格的改變,一開始只是建立一個類,還須要對類進行實體化,我就由於這個出現

了不少次的報錯,後來熟悉之後就漸漸少了些。到後面的日期算法,先是無從下手,到最後選擇在紙上把想法畫出來,步驟逐條的記錄在紙上,而後開始不斷地編譯測試。在測試中,找到一個個特殊狀況,再對方法加以完善。這個過程很

難,但也很重要,不然就會達不到題目提出的要求。其中有一個"long"類型的使用記得很清楚,由於當時不知道怎麼考慮"int"最大值輸入的狀況,就詢問了同窗,在指導下知道了使用"long"類型接收數據。

④每次做業花費的時間比例

耗時也是隨做業逐漸增長,第一次做業中主要是稅率的公式計算,大量的"if..else.."語句和錢數的累加,代碼看上去很枯燥,但的確須要這麼設計。第二次做業中主要是日期的簡單問題,當時考慮到了特殊狀況,相對會耗時少一些,但並不

最簡便的算法。第三次做業,算法難度的升級,大量的特殊狀況,關鍵我一開始並無想到合理的算法,花費不少時間在設計上面。到後面的類的設計,相對copy了已經設計好的函數,而且沒有進行修改,只是改變的調用屬性的方法。這也

耗時增多的主要緣由之一。

⑤對編程過程的嚴謹性的認識及教訓

這個可能深有體會吧。以前的C語言相對沒有注意過這些,連變量名都是簡單的一個毫無疑義的字母。可是到了java裏面,開始關注變量名,類名,方法名,實體名等等一系列的命名方式,會去使用更多的相對應的英文命名,的確能夠方便

讀,在對代碼的瞭解上,有很大幫助。由於java中,有項目文件夾,再到一個包,一個類,一個接口,這些都是有一個等級順序的,因此命名時要考慮是否合理及可用。剛開始還會遇到報錯,我也很奇怪,由於在算法上沒有錯誤,在eclipse

提醒下,才知道類名重複的可怕性。

2.OO設計心得

①面向過程與面向對象的比較

相比較的話,應該是面向對象的設計會複雜一些,感受更多的是類的定義,和實體的建立。這些應該是面向過程裏沒有的。可是,的確在方法和屬性的調用上很清楚,更容易接受了解。面向過程不少是main函數外加函數方法,而這也是在

學習過程當中,老師要求咱們少用"static",不管是屬性仍是方法使用後,都會忽略了實體自己,類建立出來也變得毫無心義。

②面向對象設計的基本原則理解

這個個人瞭解很是的少,也沒有仔細瞭解過。只知道java中的三個特色,多態、繼承、封裝,這些多是java獨有的特色,對於面向對象,我認爲仍是概念和實體的定義、建立。它關注的是每個對象自己,就像是,我有這麼一個東西,

可是東西內部的構成我不須要了解,只是知道有這麼個東西存在。這也就像java中有不少在類裏面的基本方法,這些方法的內部定義,並不須要咱們去學習,只是要知道這個方法有什麼做用,比如"System.out.print()"這就是一個輸出功能。寫

這個博客時,我在網上也查閱了面向對象的概念:面向對象(Object-Oriented)=對象(Object)+類(Class)+ 繼承(Inheritance)+通訊(Communication)。這只是一個初步的定義,對於裏面對象、類、繼承、通訊的定義有不少不少。我認爲

和我想的挺類似。可是「通訊」這個概念目前還不是很懂,但願之後能夠去逐漸瞭解。

③OO編程思惟的理解

思惟上面應該是須要考慮對類、接口等等的設計。類只是一個概念,須要不斷給其中增添不少定義,包括類與類之間的關聯性:依賴、聚合......這些是面向過程當中少有的。每一個類被抽象化了,各有各的職責,就像是老師說的,能夠在每一個類

中找到更多的相同點,再進行提煉,設計出新的類。而實體更像是被賦予了這個概念,舉個例子:學生就是一個類,這個類中有班級、學校、同窗、老師等等的屬性,還有作課間操、考試等等的方法。這些是在學生這個類中定義出來的,而

「我是一個學生。」,這句話裏,我就是一個實體,被附上了學生這個概念,因此我有同窗、老師,能夠作課間操、考試。

3.測試的理解與實踐

①測試對於編碼質量的重要性

測試這個環節對於程序員來講,能夠決定着,他面對要求修改,或者bug出現時,麻煩的大小。由於一段代碼裏會有不少的功能實現。這些功能的設計或者算法上時常會出現錯誤,而測試就頗有效的幫助咱們提升代碼的準確性。而這並不是

是最關鍵的,當一個複雜的程序設計出來,假若中間沒有及時的測試,在bug出現時,很難快速準確的找到錯誤位置,這樣會帶來不少麻煩,以及時間上的損失。因此養成一個良好的測試習慣相當重要,不只要測試,還重要是及時測試。

②假如讓你設計測試用例,你會如何作

對於我來講,像是一個查漏補缺的環節。我會先是設計一些尋常樣例,至少要保證程序正常的使用。其次就是臨界值,這個臨界值的範圍很大,好比輸入輸出的數據,像是第三次做業中int型數據的最大值。而後會是合法數據的輸入和判

斷,不可能說,當輸入錯誤信息時,什麼提示都沒有,這對於用戶很不友好。最後,多是一些人性化的設計吧,好比用戶無心間的輸入空格或者其餘無關數據時,可否判斷出而且進行自動修改。

4.課程收穫

總結這四周來在OO方面的教訓及收穫

教訓固然是不少的,由於和C語言風格的不一樣,有面向過程轉變到面向對象,這個過程還須要慢慢適應。由於目前接觸到對面向對象的題目深度不夠,尚未真正體現出來面向對象的優越性和複雜性,這個應該是會在大做業中出現吧。多

種代碼報錯。不過這裏,仍是要好好感謝一下eclipse,會自動在錯誤的代碼下面進行標註,並賦予多種解決方案。雖然說這些方案不必定是咱們所須要的,可是在思路上仍是帶來不小的幫助,也有效控制了我編程的時間。至於收穫,是一些剛接

觸到java時,內心有一些疑惑,可能在作題時也常常會出現。不過在進行相關查詢和幫助下,基本都有所解決。這個過程就是最好的收穫。

5.對課程的建議 

java上課的風格可能加大了咱們課下的自學時間,並且是加大不少。老師在課堂上說的徹底不夠,像第一次做業中的數據輸入,就須要本身在網上查找相關資料。不過對於上課的風格,仍是比較能接受和適應的,雖然是經過網課進行教

學,依舊能夠有着濃厚的興趣,還得提一下,有一說一,老師的聲音很是有磁性,很好聽!!!至於建議嘛,但願老師上課還能夠多講一些內容吧,雖然這個時間有限,可是課下查找資料的過程畢竟仍是靠每一個人本身的理解,沒有系統的學

習,在部份內容上面就會出現理解上的差距。

6.以後一階段的學習計劃

計劃上,我以爲稍微少一點,實現的可能會更大。根據這幾周的學習,首先確定是要適應面向對象這種設計思路,至少別老是出現一些C語言中的知識特色。第二是要代碼簡潔,有些代碼沒必要要的分行反而讓我看上去不舒服,合理的對代

碼進行排版,有助於本身的閱讀。第三,適當添加註釋,方便對知識的複習,也有利於別人讀本身寫的代碼時,更清晰易懂。第四,一些低級錯誤就仍是少犯一些,例如:少加大括號,方法名使用錯誤,循環條件的判斷......不少不少,但願我可

以少讓eclipse或者編譯器來提醒我有這樣相似的錯誤出現。最後,應該是算法設計,須要提升一點點,不然作題會浪費不少不必的時間,多去網站上學學看看吧。

這裏就來一個結尾吧,聽老師說,java學好了之後的工資很高,這錢確定是香的啊,誰會去和錢做對呢!可是這前提是學好java,因此我也但願本身能夠在學java的路上越走越遠吧,都選擇當程序員了,還怕什麼掉頭髮,大不了拿一些工

去植個發也行啊!平時多看看,多學習學習,不只僅是爲了過這門學科,也是爲之後的工做打基礎、作鋪墊。給本身加個油!

相關文章
相關標籤/搜索