OOP第四章博客做業java
1)針對於第一次做業,我是將所給類進行了本身的封裝,在MyUmlInteraction類裏面進行關係的創建,這裏把所給的UmlClass創建好,同時有id2Umlclass(id到UmlClass)和name2UmlClass(name到UmlClass);UmlInterface一樣的創建方式;程序員
2)把和相關UmlCLass類的屬性,操做,操做的參數,和關聯,接口再填入到包裝的UmlClass類中;即將一個類全部的東西都包裝爲一個ClassUml(UmlInterface相似),將全部的「東西裝進去」,而且創建相應的查找方法,爲接口服務;多線程
3)針對UmlOperation類一樣進行一個包裝,將參數填入其中;架構
4)針對UmlAssociation類也創建包裝,將End填入其中;(事實證實這一步對於測試要求無心義!)函數
5)在具體的實現過程當中,首先掃描一遍,創建全部的UmlClass的聯繫,保存其餘UmlElement;在第二次循環時,依次創建繼承(UmlGeneralization)、屬性(UmlAttribute)、操做(UmlOperation)、參數(UmlParameter)、關聯端(UmlAssociationEnd)和接口實現(UmlInterfaceRealization);工具
6)將具體的查詢細節放置在對應的類中進行實現,向外部提供接口;
單元測試
1)第二次做業的設計,沿襲第一次設計的風格,進一步抽象;學習
2)把MyGeneralUmlInteration類和具體的包裝類的耦合性下降,直接提供一個StarUml類(終極抽象)測試
3)在StarUml類中進一步細化查詢,分爲針對Class的StarUmlClass類、針對狀態圖的StarUmlState類和針對時序圖的StarUmlSeqence類;職業規劃
4)StarUmlclass類添加了check功能,而且向上一層次提供接口;
5)StarUmlState實現關於狀態圖的關係創建和查詢功能的實現以及外部函數接口
6)StarUmlSequence實現了關於時序圖的關係創建和查詢功能實現以及外部函數接口;
7)最後把頂層的函數依次調用相關函數實現解耦(可是層次化可能有點多,致使同名函數一連串,這也是爲了防止混淆!)
四個單元對於OO方法的理解呢,最初是徹底不理解的,如今呢,感受初窺門徑?感受面向對象就是一種抽象層次,設計邏輯關係的思想,而面向過程就是,別問,問就是下一步幹啥!面向對象就是誰來幹啥;
通過四個單元,感受第一個單元是入門,第二個單元是理解, 第三個單元是應用,第四個單元是綜合起來的感受!由於這個時候寫做業感受已經有一些順滑,一些明悟了!(真是不容易呢)
在第一單元和第二單元的測試中,可能主要偏向於使用數據來儘量遍歷的方法來實現程序的正確性,而後對於邏輯性的檢查不是不少;更沒有使用過單元測試這種方式;
在第三單元和第四單元中因爲做業的類型和前兩個單元的不一樣,這時我發現,這種單個測試方法的做業,單元測試,或者說對於每一個方法進行邏輯性檢查是一種最有效且bug最不容易發生的方法!並且,對於debug也是相對簡單,由於錯誤容易抓獲,這時數據的效果反而不是那麼有效;固然,邏輯性的檢測,也須要頭腦清晰,建議在完成後和小夥伴進行思惟碰撞,提早互測(真實致命)!
綜合四個單元,對於不一樣的做業,不一樣的測試方法的效果確實是大不同,不能一味依據數據生成器,必須針對做業來進行選擇!
首先,做爲一個成功度過OO的北航學子,收穫是終於放假啦頗多的!em,沒錯,頗多的!
這算是第一次接觸面向對象,遙想第一次寫做業差點當場暴斃,滿腦子想的爲何會有這種設計方法?有什麼優點呢?
如今看來,面向對象好啊(真香);爲何呢?以往的面向過程,注重的是過程設計,在寫做業時,會無腦一路往下走,可是感受很凌亂,對於debug時極爲的不利(相對於面向對象來講,固然,設計很差,debug其實沒差異,囧);可是面向對象的設計思想——也是老師一直提到的,也是我一直嘗試學習領悟的,如何把一個問題,抽象爲幾個對象和對象之間的邏輯,經過合理的架構,實現高複用,高解耦,可迭代的代碼,並且,在學習的過程當中也明白了爲何說更改客戶需求會殺死一個程序員,做業的小小需求改變均可能須要咱們去重構本身的代碼,面向對象的方式確實使得效率有所提高!
另外一個收穫是jml,uml等和java相關的設計方法和輔助工具等,同時在研討課上也瞭解了一些企業關注的點,對於本身的職業規劃有必定的幫助吧!
總之,整個課程,最大的收穫就是逐步瞭解並學習了面向對象這一思想,而且瞭解瞭如今主流的設計方式就是這種思想,在寫做業的過程當中也確實學習了不少Java的知識,卻是對於架構的設計仍是隻知其一;不知其二,須要繼續學習吧!
如下徹底爲我的見解,不必定具備可實施性,但願客觀看待!