由于uml(統(tǒng)一建模語言)在開發(fā)中經(jīng)常會用到,特別是在軟件開發(fā)中的OOAD階段,因此要理解和使用uml顯得尤為重要。在uml開始之前,咱先回顧一個OOAD、OOP的主要特征。 OOAD:根據(jù)面向?qū)ο蟮姆椒▽W(xué)來對軟件系統(tǒng)進行分析和設(shè)計的過程。它包括OOA 分析階段和OOD設(shè)計階段。其中分析階段主要解決“What to do?”的問題,而設(shè)計階段主要解決“How to do?”的問題。具體來說就是:在OOA分析階段咱要做的主要工作就是建立對業(yè)務(wù)問題域的視圖(建立模型)、列出系統(tǒng)必須要完成的核心任務(wù)、列出針對此問題域的最佳解決方案;而在設(shè)計階段咱要做的主要工作是:如何解決具體的業(yè)務(wù)問題,引入咱工作需要哪些支持,設(shè)計系統(tǒng)的實現(xiàn)策略。通常OOAD的開發(fā)過程是這樣的:a)項目分解為幾個模塊;b)使用UML進行建模;c)USDP(統(tǒng)一軟件開發(fā)過程)是一個迭代、遞增(需求、分析、設(shè)計、實現(xiàn)、測試等)式開發(fā)。 OOP的主要特征:封裝、繼承、多態(tài)、抽象、關(guān)聯(lián)、聚合、組合。 下面談?wù)勎覍@些特征的理解: (1)封裝:“合理隱藏,合理暴露”。具體來說就是合理隱藏數(shù)據(jù)和實現(xiàn),提供公共方法供咱調(diào)用。 (2)繼承:發(fā)生在子類和父類之間,通常在這兩個類型之間存在“is a”的關(guān)系,如:香蕉“is a”水果,香蕉為子類,水果為父類。通過繼承可實現(xiàn)代碼重用且繼承也是多態(tài)的基礎(chǔ)。 (3)多態(tài):“同一種類型的變量調(diào)用同一個方法表現(xiàn)出不同特征或行為”。舉例來說:呼吸breath()這個動作,人使用肺來完成,而魚則使用鰓來完成。 (4)抽象:抽象是一種將方法聲明和具體實現(xiàn)分離的一個過程。通過抽象,咱只需關(guān)注其本質(zhì)特征(具體能做什么)而忽略掉一個對象(或?qū)嶓w)具體細節(jié)。 (5)關(guān)聯(lián):關(guān)聯(lián)實質(zhì)上是對象之間交互時的一種引用方式,當(dāng)一個對象A通過另一個對象B的引用去調(diào)用B對象的方法操作或服務(wù)時,A和B便產(chǎn)生了關(guān)聯(lián)。比如說:咱(person)使用手機(phone)來打電話(即咱調(diào)用了手機的一個功能--打電話dial()),person和phone之間就存在了關(guān)聯(lián)關(guān)系。 (6)聚合:聚合是關(guān)聯(lián)關(guān)系中的一種,一個對象A作為另外一個對象B的屬性Field而存在,在外部對象(如汽車Car)被產(chǎn)生時,可有咱指定與其關(guān)聯(lián)的內(nèi)部對象(輪胎Wheel)。什么意思呢?說直白點吧,一輛汽車CarA的輪胎壞了咱可以重新?lián)Q上新的輪胎WheelA,而輪胎WheelA/WheelC也可以卸下來供別的汽車CarB使用??梢钥闯鼍酆现械年P(guān)聯(lián)關(guān)系并沒有那么強烈。 (7)組合:組合是關(guān)聯(lián)關(guān)系中最為強烈的一種。當(dāng)一個對象A包含另外一個對象B時,外部對象A負責(zé)管理內(nèi)部對象B的生命周期。本質(zhì)上:內(nèi)部對象B的創(chuàng)建由外部對象A自己控制,就拿電腦與顯示器來說吧,外部對象(電腦)不存在時,內(nèi)部對象(顯示器)也不能存在,這個應(yīng)該很好理解了吧~ 內(nèi)聚與耦合 內(nèi)聚:度量一個類獨立完成某項工作的能力。耦合:度量系統(tǒng)內(nèi)或系統(tǒng)之間依賴關(guān)系的復(fù)雜度。咱一般的設(shè)計原則是:“高內(nèi)聚,低耦合”,也就是咱要增加內(nèi)聚,減少耦合。 下面開始咱們的uml之旅。 域模型 域模型也被稱為設(shè)計模型,它包含兩部分組成:一是具體狀態(tài)和行為的域?qū)ο螅欢怯驅(qū)ο笾g的關(guān)系,它包括:關(guān)聯(lián)(上面已經(jīng)介紹了)、依賴(a對象依賴B類中的方法,并且構(gòu)造B類的實例)、聚集(整體和部分的關(guān)系:如手是人的組成部分)、一般化(繼承關(guān)系)。 uml定義:統(tǒng)一建模語言(Unified Modeling Language),它是一種圖形化的語言,可以幫助我們在OOAD階段標(biāo)識元素(用例、類、對象等)、構(gòu)建模塊(功能劃分)、分析過程并可通過文檔(概要說明、詳細說明)來說明系統(tǒng)中的重要細節(jié)。 uml圖形的分類:包括靜態(tài)模型(static model)、動態(tài)模型(dynamic model)。靜態(tài)建模目的是創(chuàng)建并記錄一個系統(tǒng)的靜態(tài)特征(如:類包含的屬性和方法、用例中的參與者和用例以及用例之間的關(guān)系、對象之間的關(guān)系等)。靜態(tài)建模包括:用例圖、類圖、對象圖、組件圖、部署圖;而動態(tài)建模包括:時序圖(也稱順序圖)、協(xié)作圖、狀態(tài)圖、活動圖。 靜態(tài)建模中的用例圖:它是用來展示系統(tǒng)的核心功能及其交互的用戶或系統(tǒng)等。 ===================== 用例圖======================== 下面用一張圖來說明: 總結(jié) 今天只是開了個頭,講了一下OOAD、OOP的幾個特征以及uml建模中的分類(靜態(tài)、動態(tài)建模),最后一個靜態(tài)建模中的用例圖來開始了咱們的uml建模之旅。接下來會繼續(xù)講解uml中的剩下的幾個常用uml建模。
|
|