oo課程的恐怖之處早有耳聞,聽前輩們說課程使用的是JAVA語言,但是本身認知裏的JAVA僅僅停留在那杯冒着熱氣的咖啡上,連基本的語法都不會,怎麼去面對oo呢?因此第一週就上網找了mooc視頻,學習一些基礎的東西。但是有些東西,光光掌握語法確定是不夠的,所謂面向對象課程,想教給咱們天然是面向對象的編程方法。三次做業中,雖然用的是JAVA,但代碼的字裏行間,赫然是披着JAVA外衣的C。由於不熟悉JAVA的函數庫(感受函數也是C的概念,JAVA裏該叫方法了吧),不少時候編程的思惟侷限在C的套路上,有時本身想了好久也不知道如何解決的過程,後來驚喜地發現JAVA裏有現成的方法。正則表達式
第一次做業仍是比較簡單的,關鍵在於匹配輸入模式以及提取關鍵信息。根據mooc裏的善意提醒,咱們紛紛選擇了使用正則表達式進行輸入的匹配。比起狀態機的實現方式,正則表達式很簡潔。但忽略了輸入過長致使的爆棧使得公測點最後一個未經過。回頭再看mooc,其實視屏中前輩們有提醒爆棧的問題,只是本身選擇性的忽視了。而此外,第一次做業其實就是流程化的C,訓練目的想讓咱們體會的C和JAVA的區別除了感受eclipse編譯器更好用以外,彷佛並未發現語言的大的差別。第一次做業互測分配給個人代碼給我以一種特別高大上的感受,在我還停留於和語法做鬥爭的時候,別人已經想着如何使本身的代碼更加的模塊化,我仔細地看了別人的代碼,這才感受到,JAVA是一種面向對象的語言,第一次課所想讓咱們學習的,在別人的代碼裏,看到了。可見這樣的互測雖引發你們的一些情緒,但所帶來的好處,也是相對存在的...編程
第二次做業就是電梯系列的第一關,傻瓜電梯,其實實現這樣一部電梯並不難,但這一次是嚴格要求面向對象的編程,好在第一次做業看了其餘同窗的代碼後對面向對象這個概念有了淺薄的理解,再聯繫C++面向對象的思想,也算是可以完成,但我發現,這一次比做業比第一次做業的難度的提升,其實最體如今對於指導書的理解,甚至我碼代碼的時間尚未看指導書的時間長(不包括debug)。指導書裏有了更多地要求,也有了更多地自由區域要求咱們在ReadMe文檔中給出本身的設計想法。做業要求的五個類中,樓層類並未產生實際效用,後來老師講解的時候說可能有的樓層電梯就是沒法使用(好比在維護),這樣更貼近生活實際,讓咱們恍然大悟。第二次做業的難點我的以爲在於如何判斷同質請求,可是隻要老老實實的從頭遍歷請求隊列,時間上會變慢,可是不會產生bug,此外須要考慮一些異常好比時間超出int範圍,能夠經過把字符串轉化爲int時抓取錯誤來避免crash。eclipse
第三次做業是在第二次的基礎上增長一個捎帶功能,其實若是單單只是實現這樣一個功能並不複雜,只須要在第二次做業的schedule的基礎上增長一些規則就能夠,可是我發現增長了這樣的功能後會致使原本能夠執行的請求變成同質請求,也有可能會把原本同質的請求變得可執行。因而在每次變動主請求只有再要進行行的同質判斷,遍歷請求隊列,時間上編的複雜,不知道有沒有好的方法能夠簡化這一步驟。而這一次對指導書的輸出理解的不到位,致使輸出差了括號,很惋惜。從上圖能夠看出個人ask類實現的功能太多,儼然一個上帝類,這是不可取的。可見我對面向對象的編程方法理解不到位。其他都與做業二的電梯大同小異,再也不贅述。模塊化
一、用本身的測試樣例跑一邊,若出現本身出現過的錯誤,能夠很輕鬆判斷bug的一些可能緣由;函數
二、看代碼中的錯誤,好比正則表達式能夠經過看對方的表達式,來判斷那些輸入可能致使錯誤;學習
三、參考readme,對其所描述的實現功能進行測試,看是否有誤;也能夠看哪些可能的請求對方未考慮到;測試
四、進行邊界測試;spa
五、對本身沒有給出的測試,對照bug樹,考慮是否添加測試。debug
總的來講三次做業的難度仍是蠻夠的,其實,最關鍵的我我的認爲仍是對參考書的理解,磨刀不誤砍柴工。上來就開始敲代碼最後確定會發現有許多地方不符合要求(第三次做業的教訓)。利用好時間很重要,拖延症萬萬要不得。最後仍是要說,前三次做業的主要目的,感受仍是讓咱們理解什麼是面向對象,面向對象的優勢在哪;以及幫助咱們這些無JAVA基礎的人漸漸熟悉JAVA,往後的學習中,一方面,我要深刻的去理解面向對象的方法,還有就是要熟練掌握JAVA語言,不能建空中樓閣,空能談方法,一上手就不行是沒有用的。設計
面對這三次做業,已經塵埃落定。不管好壞與否,未來的學習生活中,應當調整心態,繼續前行。