0.前言
轉眼間物件導向課程已經到了第二階段了,在第二階段裡共發布了三次pta程式設計作業,本次部落格主要針對於這三次作業的總結。作業過程總結,oo設計心得,測試的理解與實踐,課程收穫,對課程的建議。
1.作業過程總結
①總結三次作業之間的知識迭代關係;
第一次作業:水文資料校驗及處理 蒙特卡羅方法求圓周率 圖形繼承。
這次作業主要考察的是:正規表示式的使用、stringbuilder的使用、類之間關係的應用(關聯、聚合、依賴、繼承)。
第二次作業:圖形繼承與多型 一元多項式求導。
考察的是:類之間關係的應用(關聯、聚合、依賴、繼承)、正規表示式的應用。
第三次作業:圖形卡片排序遊戲 圖形卡片分組遊戲 求素數。
考察的是:類的封裝性、繼承性、多型性以及抽象類、介面的應用 和演算法的高效性。
這三次作業由易到難,知識是點由淺到深的。第二次作業的知識點完全是第一次作業的加強版,第一題在第二次作業第三題的基礎上加了個多型的應用,而第二題則這第一次作業第一題的基礎加了個arraylist類的使用,所用的思想有所不同,**的長度也增加了。第三次作業的知識則是在第二次作業第一題的基礎上加了個介面的應用和類之間的關係越來越複雜了,而第二題是幫助我們加強arraylist類的使用,第三題就是考察演算法的速度。
總的來說這三次作業是幫助我們思考「單一職責」原則以及「開-閉」原則在物件導向設計中的具體應用和了解正規表示式的重要性。
②如何通過作業逐步理解物件導向的封裝性、繼承性與多型性三大技術特性;
封裝性:三次作業中的每個類都有其屬性,而屬性的型別有不同,private是私有的,public是公有的,protect是同乙個包內可公有的。封裝就是把類的資訊保護起來,但是我們還是可以通過getter和setter方法使用它們。
繼承性:在圖形的繼承題目中可以了解,shape是父類,三種圖形是子類,子類繼承了父類的方法和屬性,相同的方法呼叫時要複寫用@override。
多型性:在圖形繼承及多型題目中可以知道,shape是抽象父類,而子類繼承父類的方法都要完成,呼叫通過shape 圖形名稱 = new 圖形類();方法呼叫。之後就和繼承的使用差不多了。
③作業過程中遇到的問題及解決方法
這三次作業的主要問題在於正規表示式的題目和一些特殊情況沒有考慮到。
問題:沒有考慮函式表示式第一項的書寫,不能有正號。
解決方法:在輸出第一項的時候用replace(「+」,」」)方法把第一項變成空格。
問題:沒有考慮輸入0的情況
解決方法:加入程式如果cardlist.isempty()等於空的情況。使其輸入wrong format.
問題:第一次作業的水文資料校驗及處理沒有寫出來,主要是類的邏輯關係沒有搞清楚和不太會用正規表示式,導致題目沒有寫出來。
其他問題:如格式問題,輸入輸出錯誤等,都是通過一步步除錯出來解決的。
④每次作業花費的時間比例
作業\時間
時間佔比
第一次40h+
第二次40h+
第三次20h+
⑤對程式設計過程的嚴謹性的認識及教訓
1、 多看需求分析了解題目的要求。
2、注意特殊情況的輸入和輸入輸出的格式。
3、做題之前要先構造乙個基本框架,不然會浪費大量時間思考。
教訓:做題前要多思考,有思路寫**就簡單,多注意細節,要不然會在輸入輸出和格式方面浪費大量時間找錯誤。
3.oo設計心得
①對物件導向三大技術特性之間關係的理解
三大技術分別是:封裝性、繼承性、多型性。封裝簡單來說就是把類中的屬性和方法等用private,public,protect等保護起來,提高了安全性。而繼承這是多個子類繼承乙個父類的屬性和方法,通過用@override複寫使用其類中方法。多型則在繼承的基礎上加了個擴充套件性。
②物件導向設計的基本原則理解(單一職責原則及「開-閉」原則)
單一職責原則是最簡單的面對物件設計原則,意思來說就是乙個介面乙個類乙個方法只負責乙個事情。優點是避免相同的職責分散到不同的類中和避免乙個類承擔的職責過多,和減少類之間的耦合和提高類的復用性。
「開-閉」原則:主要是通過擴充套件來實現變化,而不修改原有的東西。對擴充套件開放,對修改關閉。優點是原有的**還能執行,提高了程式的復用性和可維護性。
③oo程式設計思維的理解
現階段的理解:了解了單一職責原則及「開-閉」原則,減少了**的複雜程度,提高了**的可讀性,通過類的設計有規劃的完成一件事情。
④類設計心得
乙個類只負責一件事,類與類之間可以繼承和進行多型,實現單一職責原則及「開-閉」原則,降低耦合性,提高復用性。
3.測試的理解與實踐
①測試對於編碼質量的重要性
測試可以提高優化我們的**和減少**的錯誤性,了解我們還有什麼方面考慮不全,而導致pta作業測試點沒有通過。
②查閱資料,假設使用junit進行程式的測試是否可行
可行,junit方法是對程式進行單元測試,在除錯較大的程式中使用,測試是要將junit單元測試包引入,加注釋@test,進行測試這個是可行的。
4.課程收穫
總結這四周來在oo方面的教訓及收穫
初步學會了正規表示式,了解了arraylist類的使用、stringbuilder的用法、comparable介面、collections排序和多種方式輸出陣列裡的東西,加深了對繼承和多型性的理解。
5.對課程的建議
①第三階段作業難度、題量的建議
我認為題目難度不要太大,要不然我乙個星期都在學j**a,而其他的課程學習時間就大量減少了。
希望題量不要太多,適中就行不然做不完。
②課程內容講解方面的建議
做完作業後講一下pta作業的例題的邏輯思路和方法。課上多講一些例題,和講解一些題目的程式設計邏輯思路。
OO第二單元電梯作業總結
三次電梯作業,從實現單部多執行緒 相同的多部多執行緒到可以處理增加電梯請求的不同多部多執行緒電梯,是乙個對多執行緒程式設計從無到有的指南。多執行緒程式設計的優勢和用處不必多說,在oo os理論課上老師都已有詳盡的闡釋。整體而言,在個人學習的體會中,多執行緒程式設計的難點集中在 多執行緒概念的理解 包...
OO第二單元總結
本單元的作業總體來說比較愉快,畢竟不像上次一樣次次重構。本單元為電梯系列問題,涉及到多執行緒問題。簡單起見,我使用的是生產者 消費者模式。本次作業要求實現單部可稍帶電梯。看完題目後我認為生產者 消費者模式非常適合解決這個問題。本次電梯我採用的是look方法。本方法核心即在於電梯方向的判斷,這在dis...
OO第二單元總結
共享資料類 在總結後面的3.基於度量的程式結構分析部分,本人根據展示的uml類圖更加詳細的講解了具體的協同結構工作原理。通過對實現以上操作的共享資料類中的方法設定synchronized,從而實現執行緒對共享資料的訪問同步。ocplsp ispdip 根據以上類圖,分析本次作業設計思路如下 2 根據...