對軟體開發中uml建模的理解和圖形整理(一)

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   ar   strong   資料   sp   

       由於uml(整合模組化語言)在開發中經常會用到,特別是在軟體開發中的OOAD階段,因此要理解和使用uml顯得尤為重要。在uml開始之前,咱先回顧一個OOAD、OOP的主要特徵。


OOAD:根據物件導向的方法學來對軟體系統進行分析和設計的過程。它包括OOA 分析階段和OOD設計階段。其中分析階段主要解決“What to do?”的問題,而設計階段主要解決“How to do?”的問題。具體來說就是:在OOA分析階段咱要做的主要工作就是建立對業務問題域的視圖(建立模型)、列出系統必須要完成的核心任務、列出針對此問題域的最佳解決方案;而在設計階段咱要做的主要工作是:如何解決具體的業務問題,引入咱工作需要哪些支援,設計系統的實現策略。通常OOAD的開發過程是這樣的:a)項目分解為幾個模組;b)使用UML進行建模;c)USDP(統一軟體開發過程)是一個迭代、遞增(需求、分析、設計、實現、測試等)式開發。


OOP的主要特徵:封裝、繼承、多態、抽象、關聯、彙總、組合。

下面談談我對這些特徵的理解:

(1)封裝:“合理隱藏,合理暴露”。具體來說就是合理隱藏資料和實現,提供公用方法供咱調用。

(2)繼承:發生在子類和父類之間,通常在這兩個類型之間存在“is a”的關係,如:香蕉“is a”水果,香蕉為子類,蘋果為父類。通過繼承可實現代碼重用且繼承也是多態的基礎。

(3)多態:“同一種類型的變數調用同一個方法表現出不同特徵或行為”。舉例來說:呼吸breath()這個動作,人使用肺來完成,而魚則使用鰓來完成。

(4)抽象:抽象是一種將方法聲明和具體實現分離的一個過程。通過抽象,咱只需關注其本質特徵(具體能做什麼)而忽略掉一個對象(或實體)具體細節。

(5)關聯:關聯實質上是對象之間互動時的一種引用方式,當一個對象A通過另一個對象B的引用去調用B對象的方法操作或服務時,A和B便產生了關聯。比如說:咱(person)使用手機(phone)來打電話(即咱調用了手機的一個功能--打電話dial()),person和phone之間就存在了關聯關係。

(6)彙總:彙總是關聯關係中的一種,一個對象A作為另外一個對象B的屬性Field而存在,在外部對象(如汽車Car)被產生時,可有咱指定與其關聯的內部對象(輪胎Wheel)。什麼意思呢?說直白點吧,一輛汽車CarA的輪胎壞了咱可以重新換上新的輪胎WheelA,而輪胎WheelA/WheelC也可以卸下來供別的汽車CarB使用。可以看出彙總中的關聯關係並沒有那麼強烈。

(7)組合:組合是關聯關係中最為強烈的一種。當一個對象A包含另外一個對象B時,外部對象A負責管理內部對象B的生命週期。本質上:內部對象B的建立由外部對象A自己控制,就拿電腦與顯示器來說吧,外部對象(電腦)不存在時,內部對象(顯示器)也不能存在,這個應該很好理解了吧~


內聚與耦合

       內聚:度量一個類獨立完成某項工作的能力。組合:度量系統內或系統之間依賴關係的複雜度。咱一般的設計原則是:“高內聚,低耦合”,也就是咱要增加內聚,減少耦合。

下面開始咱們的uml之旅。


領域模型

       領域模型也被稱為設計模型,它包含兩部分組成:一是具體狀態和行為的域對象;二是域對象之間的關係,它包括:關聯(上面已經介紹了)、依賴(a對象依賴B類中的方法,並且構造B類的執行個體)、聚集(整體和部分的關係:如手是人的組成部分)、一般化(繼承關係)。

uml定義:整合模組化語言(Unified Modeling Language),它是一種圖形化的語言,可以協助我們在OOAD階段標識元素(用例、類、對象等)、構建模組(功能劃分)、分析過程並可通過文檔(概要說明、詳細說明)來說明系統中的重要細節。

uml圖形的分類:包括靜態模型(static model)、動態模型(dynamic model)。靜態建模目的是建立並記錄一個系統的靜態特徵(如:類包含的屬性和方法、用例中的參與者和用例以及用例之間的關係、對象之間的關係等)。靜態建模包括:使用案例圖、類圖、對象圖、元件圖表、部署圖;而動態建模包括:時序圖(也稱順序圖)、共同作業圖表、狀態圖、活動圖表。


 靜態建模中的使用案例圖:它是用來展示系統的核心功能及其互動的使用者或系統等。

=====================  使用案例圖========================
1. 用例:系統為參與者提供的功能,一般取名為帶有動作性的詞語。
2. 用例之間的關係 --> 虛線 :
a) 內含項目關聯性:大功能包含《include》子功能。
b) 擴充關係:將基用例中一段【相對獨立並且可選】的動作,用擴充《extends》用例加以封裝。 --虛線反向
c) 泛化關係:一般和特殊(抽象類別/介面+實作類別/子類)的關係。實線三角形箭頭反向。

下面用一張圖來說明:


總結

今天只是開了個頭,講了一下OOAD、OOP的幾個特徵以及uml建模中的分類(靜態、動態建模),最後一個靜態建模中的使用案例圖來開始了咱們的uml建模之旅。接下來會繼續講解uml中的剩下的幾個常用uml建模。


對軟體開發中uml建模的理解和圖形整理(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.