面向對象第四單元做業總結

面向對象第四單元做業總結

架構設計總結

UML第一次做業架構設計

第一次做業的架構設計我以爲作的不夠好
UML圖以下

在MyUmlInteraction中創建了一個UmlGraph, 經過對UmlGraph的查詢進行interaction。
在UmlGraph中定義瞭如下數據

其中ClassInformation這個是對於接口和類這兩種UmlElement的抽象, 包含了java

  1. 全部的父類
  2. 全部的屬性
  3. 全部的方法
  4. 關聯的全部類
  5. 實現的全部接口
    全部的查詢都是先經過ID或者name找到相應的ClassInformation對象, 而後再其中進行查詢。
    在創建UML圖的時候, 我用了三輪的parse, 針對不一樣的UmlElement我寫了對應的parse方法。
  6. 在第一輪parse裏, 我讀入了UML_CLASS和UML_INTERFACE
  7. 在第二輪parse裏, 我讀入了UML_ATTRIBUTE, OPERATION, ASSOCIATIONEND, GENERALIZATION, INTERFACE_REALIZATION這些element
  8. 在第三輪中, 我讀入了UML_PARAMETER和UML_ASSOCIATION

UML第二次做業架構設計

在第二次做業中, 我對於整個工程進行了代碼重構

UML結構圖如上圖所示, 在每個UML圖中一共有三個子圖, 分別爲python

  1. classGraph 類圖
    2.sequenceGraph 順序圖
    3.stateGraph 狀態圖

在對於UMLGRAPH的查詢中, 把功能分攤到每個類中去, 實現高內聚, 低耦合, 每種圖之間不要有耦合關係。設計模式

classGraph

classGraph基本是把第一次的全部內容搬了過來, 除了添加了一些check的規則外沒有太多改動。數據結構

sequenceGraph

sequenceGraph用來存儲狀態圖, 核心數據結構爲SequenceModel, 每個model裏面包含和許多SIngleLifeLine和UMLMEssage
在seuqcenGraph中提供了id to model和name to mode兩種查詢方式。多線程

stateGraph

stateGraph和sequenceGraph的設計方式相似, 每個stateGraph中有許多個StateMachineModel, 每個model裏有許多state。
state中存儲了狀態的轉移。架構

OO理解方法的演進

四個單元, 對於OO的理解各不相同併發

  1. 第一個單元處於熟悉java語言的階段, 對於OO沒有太多瞭解, 更多的是經過封裝的方式實現高內聚低耦合, 下降代碼錯誤的方式。
  2. 到了第二單元, 有一些設計模式的東西在裏面, 經過對生產者消費者模型的理解, 實現了多線程電梯, 本身看了一些設計模式的書, 瞭解了工廠模式, 里氏替換原則, OCP等。
  3. 第三單元, 我體會到的是一個軟件如何從0開始, 一點一點加入功能, 最終變的很複雜的過程。 這須要把每個功能抽象出來, 有些敏捷開發的意思。

4.最後一個單元UML,是對前面全部單元的綜合, 雖然只有兩次, 可是前面所用的技能都有體現。ide

測試理解和實踐的演進

最開始的測試方式是經過idea自帶的交互窗口進行測試。
以後學會了用命令行, 編譯程序, 而後從txt裏面讀入數據, 進行測試。
到了多線程電梯單元, 和JML單元, 我經過python生成一些測試數據進行壓力測試, 和輸出對比。
後來逐漸開始使用JUNIT進行測試。工具

課程收貨

經過課程, 我有如下幾點收貨測試

  1. 學會java語言, 瞭解封裝繼承多態的方法。
  2. 學會各類工具, 好比IDEA, checkStyle, metrics, jprofiler
  3. 學會了軟件測試, 使用jUNIT 和本身寫評測機生成數據來測試的方法。
  4. 對於架構設計和軟件的重構方法有了必定的瞭解。(里氏替換原則, 接口抽離原則, 高內聚低耦合原則)
  5. 對於多線程併發有了深入的認識。
  6. 使用JML建模語言對於軟件進行規格設計, 和形式驗證
  7. 使用UML對於架構進行設計

課程建議

有如下三點建議

  1. 建議指導書寫的再清楚一點, 避免耽誤無謂的時間。
  2. 添加一些設計模式的內容
  3. 取消JML
相關文章
相關標籤/搜索