《UML和模式應用》讀書筆記 1

《UML和模式應用》讀書筆記 1編程

 

第1章 面向對象分析和設計dom

 

面向對象分析和設計是面向對象活動的子集。在面向對象開發中,最重要的是合理地爲軟件對象分配職責。這對軟件的健壯性、可維護性、可重用性具備重要的影響。編程語言

 

分析和設計有很是緊密的關係,但同時兩者的區別也很是明顯。分析(analysis)強調的是對問題和需求的調查研究,不包括解決方案。設計(design)強調的是知足需求的概念上的解決方案。實現(程序源代碼)表達了真實和完整的設計。面向對象分析(object-oriented analysis)強調的是在問題領域內發現和描述對象(或概念)。面向對象設計(object-oriented design)強調的是定義軟件對象以及它們的協做方式。工具

 

一個完整的面向對象分析和設計過程,一般包含如下4個步驟:定義用例、定義領域模型、分配對象職責並定義交互圖、定義設計類圖。第1個步驟屬於分析過程,後面3個步驟屬於設計過程。下面用一個簡單的骰子游戲來展現面向對象分析設計的完整過程。設計

 

首先是定義用例。用例(use case)記錄了用戶如何使用軟件的情節或場景。用例是需求分析中一種很是有效的工具。在骰子游戲中,用例能夠用下面的話來描述:對象

 

骰子游戲:遊戲者請求擲骰子。系統展現結果:若是骰子的總點數是7,則遊戲者贏;不然遊戲者輸。遊戲

 

接下來要定義領域模型。面向對象分析的特色是從對象的角度來創建領域描述。面向對象分析須要識別(區分)重要的概念、屬性和關聯,並將這些表示爲領域模型(domain model)。領域模型關注的是真實世界中的概念,而不考慮軟件對象。在骰子游戲中,能夠看到有3個概念:「玩家(Player)」、「骰子(Die)」和「遊戲(DiceGame)」。玩傢俱備屬性「名字(name)」和行爲「擲(rolls)」。骰子具備屬性「點數(faceValue)」。三者之間的關係是:一局遊戲包含一個玩家和兩個骰子,玩家擲兩個骰子。這些關係能夠用下圖來表示:事務

領域模型用於描述問題領域結構(概念及概念之間的關聯)。領域模型是靜態的,不關注系統行爲或子系統的行爲。在骰子游戲中,玩家的行爲「擲」出如今領域模型裏,這是由於玩家和骰子是經過行爲「擲」關聯起來的。做爲一種關聯,「擲」是領域結構的一部分。可是領域模型不關注「擲」這個行爲自己,也不關注這個行爲產生的結果和影響。開發

 

接下來須要分配對象職責並定義交互圖。這裏有一點要特別注意:軟件設計能夠從真實世界中獲取靈感,但軟件不必定是真實世界的直接建模或模擬。在骰子游戲中能夠創建兩個軟件對象:骰子游戲(DiceGame)和骰子(Die)。遊戲負責「擲」骰子,骰子負責展現點數。io

 

在爲軟件對象分配職責以後,能夠繪製交互圖。這裏主要使用的是時序圖(sequence diagram)。時序圖展現了軟件對象之間的消息流。骰子游戲的時序圖以下:

最後是定義設計類圖(class diagram)。類圖用於描述軟件對象。下面是骰子游戲的類圖:

 

在完成定義設計類圖工做後,分析和設計工做就完成了(或者說完成了一次分析設計迭代)。從上面的介紹能夠看出,面向對象分析設計工做,各階段的工做產出物分別是用例、領域模型、時序圖和類圖。

 

這裏要對「類(class)」這個術語作一些說明。在定義交互圖和類圖時,須要使用軟件類(software class)來表示一個軟件對象。軟件類關注對應軟件對象的規範。按照這個規範編寫的代碼,稱爲實現類(implementation class)。實現類是Java或其餘面向對象編程語言中的類。有時,領域概念(domain concept)也被稱爲概念類(conceptual class)。概念類表示真實世界中的事務或概念。軟件類、實現類、概念類均可以簡稱爲類。術語「類」的具體含義,要根據上下文肯定。

相關文章
相關標籤/搜索