版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1Software School of Xiamen University第三部分第三部分 細化迭代細化迭代1 基礎(chǔ)(基礎(chǔ)(2)2Software School of Xiamen University主要內(nèi)容主要內(nèi)容w第 12 章 從需求到設(shè)計-迭代進化w第 13 章 邏輯架構(gòu)和UML包圖w第 14 章 邁向?qū)ο笤O(shè)計w第 15 章 UML交互圖w第 16 章 UML類圖3Software School of Xiamen University第第 12 章章 從需求到設(shè)計從需求到設(shè)計迭代進化迭代進化4Software School of Xiamen University12.1 以迭代方式
2、做正確的事,正確地做事以迭代方式做正確的事,正確地做事Do the right thingsDo the things rightWhatHow分析分析-做正確的事做正確的事設(shè)計設(shè)計-正確地做事正確地做事5Software School of Xiamen University12.2 盡早引發(fā)變更盡早引發(fā)變更w 在設(shè)計和實現(xiàn)工作中,特別是在早期迭代中在設(shè)計和實現(xiàn)工作中,特別是在早期迭代中 發(fā)現(xiàn)和變更一些需求。發(fā)現(xiàn)和變更一些需求。w 在早期迭代中引發(fā)某些在早期迭代中引發(fā)某些“不可避免的變更不可避免的變更”。w 盡早編程、測試和演示有助于盡早引發(fā)不可避免的盡早編程、測試和演示有助于盡早引發(fā)不可避
3、免的變更。變更。w 在細化階段結(jié)束時,大約可靠定義了在細化階段結(jié)束時,大約可靠定義了80%的需求的需求6Software School of Xiamen University第第 13 章章 邏輯架構(gòu)和邏輯架構(gòu)和UML包圖包圖7Software School of Xiamen University13.1 示例示例8Software School of Xiamen University13.2 什么是邏輯架構(gòu)和層什么是邏輯架構(gòu)和層w 邏輯架構(gòu)邏輯架構(gòu)是軟件類的宏觀組織結(jié)構(gòu),它將軟件類組是軟件類的宏觀組織結(jié)構(gòu),它將軟件類組織成織成包,子系統(tǒng)和層包,子系統(tǒng)和層等等w 層層:對類、包或子系統(tǒng)的
4、粗粒度的分組,具有對系對類、包或子系統(tǒng)的粗粒度的分組,具有對系統(tǒng)主要方面加以內(nèi)聚的職責(zé)。較高的層可以調(diào)用較統(tǒng)主要方面加以內(nèi)聚的職責(zé)。較高的層可以調(diào)用較低的層,反之則不然。常見的層:低的層,反之則不然。常見的層:用戶界面用戶界面應(yīng)用邏輯和領(lǐng)域?qū)ο髴?yīng)用邏輯和領(lǐng)域?qū)ο蠹夹g(shù)服務(wù):技術(shù)服務(wù):數(shù)據(jù)庫接口、錯誤日志,獨立于應(yīng)用,數(shù)據(jù)庫接口、錯誤日志,獨立于應(yīng)用,可在多個系統(tǒng)中復(fù)用可在多個系統(tǒng)中復(fù)用。9Software School of Xiamen UniversityUML包圖所表示的層包圖所表示的層寬松的分層寬松的分層架構(gòu)架構(gòu):較高:較高層可以調(diào)用層可以調(diào)用其下任何層其下任何層的服務(wù)的服務(wù)對其他層的對
5、其他層的設(shè)計探討主設(shè)計探討主要著重于該要著重于該層與應(yīng)用邏層與應(yīng)用邏輯層的接口輯層的接口。10Software School of Xiamen University13.4 什么是什么是 軟件架構(gòu)軟件架構(gòu)w 架構(gòu)架構(gòu)是一組重要決策,其中涉及是一組重要決策,其中涉及軟件系統(tǒng)的軟件系統(tǒng)的組織組織,對結(jié)構(gòu)元素及其組成系統(tǒng)的,對結(jié)構(gòu)元素及其組成系統(tǒng)的接口的選接口的選擇擇,這些元素特定于其,這些元素特定于其相互協(xié)作的行為相互協(xié)作的行為,這,這些結(jié)構(gòu)和行為元素到規(guī)模更大的子系統(tǒng)的組些結(jié)構(gòu)和行為元素到規(guī)模更大的子系統(tǒng)的組成,以及指導(dǎo)該組織結(jié)構(gòu)(這些元素及其接成,以及指導(dǎo)該組織結(jié)構(gòu)(這些元素及其接口,協(xié)作和
6、組成)的架構(gòu)風(fēng)格口,協(xié)作和組成)的架構(gòu)風(fēng)格 11Software School of Xiamen University13.5 應(yīng)用應(yīng)用UML:包圖:包圖w 包包UML包圖通常用于描述系統(tǒng)的邏輯架構(gòu)包圖通常用于描述系統(tǒng)的邏輯架構(gòu)層、層、子系統(tǒng)、包等。層可以建模為子系統(tǒng)、包等。層可以建模為UML包。包。包是一種對模型元素(類、接口、組件、節(jié)點、包是一種對模型元素(類、接口、組件、節(jié)點、協(xié)同。協(xié)同。Use Case圖,甚至其它包)進行圖,甚至其它包)進行成組組成組組織織的通用機制。的通用機制。包用于定義一個名字空間或容器。包用于定義一個名字空間或容器??梢杂锌梢曅詷俗R可以有可視性標識 +/-/#
7、12Software School of Xiamen University擁有的對擁有的對象類象類簡單名字簡單名字路徑名字路徑名字UI是是Web所屬的包所屬的包包的表示包的表示13Software School of Xiamen University包的表示包的表示嵌套包的不同表示法嵌套包的不同表示法 依賴依賴14Software School of Xiamen University包間的關(guān)系包間的關(guān)系w 主要有兩種:依賴泛化圖圖 訂票系統(tǒng)的包結(jié)構(gòu)圖訂票系統(tǒng)的包結(jié)構(gòu)圖 15Software School of Xiamen University包間的關(guān)系包間的關(guān)系依賴依賴w 依賴依賴:一
8、個元素的定義的改變會引起另一個元素發(fā):一個元素的定義的改變會引起另一個元素發(fā)生相應(yīng)改變生相應(yīng)改變w 包之間的依賴關(guān)系概述了包中元素的依賴關(guān)系,即包之間的依賴關(guān)系概述了包中元素的依賴關(guān)系,即包間的依賴關(guān)系可從獨立元素間的依賴關(guān)系導(dǎo)出。包間的依賴關(guān)系可從獨立元素間的依賴關(guān)系導(dǎo)出。 w 包的依賴關(guān)系可以加上許多構(gòu)造型規(guī)定它的語義,包的依賴關(guān)系可以加上許多構(gòu)造型規(guī)定它的語義,其中最常見的是輸入依賴其中最常見的是輸入依賴 輸入依賴輸入依賴(Import Dependency)是包與包之間的一種存是包與包之間的一種存取取(Access)依賴關(guān)系。輸入依賴關(guān)系。輸入(importing)允許一個包中的允許一
9、個包中的元素存取另一個包中的元素元素存取另一個包中的元素 輸入依賴是單向的。輸入依賴是單向的。16Software School of Xiamen University包間的關(guān)系包間的關(guān)系泛化泛化w 與類的泛化關(guān)系一樣:表示一般與特殊的關(guān)系與類的泛化關(guān)系一樣:表示一般與特殊的關(guān)系w 兩個包之間存在泛化關(guān)系,指其中的特殊性包必須兩個包之間存在泛化關(guān)系,指其中的特殊性包必須遵循一般性包的遵循一般性包的接口接口。w 與類的繼承相同,特殊包一般繼承其所包含的公共與類的繼承相同,特殊包一般繼承其所包含的公共類,并且可以重載和添加自己的類。類,并且可以重載和添加自己的類。17Software Schoo
10、l of Xiamen UniversityUML工具:從代碼逆向工程產(chǎn)生包圖工具:從代碼逆向工程產(chǎn)生包圖w 開發(fā)過程早期:開發(fā)過程早期:畫出畫出UML包圖的草圖,根據(jù)這些草圖組織代碼包圖的草圖,根據(jù)這些草圖組織代碼w 開發(fā)過程后期:開發(fā)過程后期:用用UML CASE工具對源代碼進行逆向工程,從而工具對源代碼進行逆向工程,從而自動生成包圖自動生成包圖18Software School of Xiamen University13.6 使用層進行設(shè)計使用層進行設(shè)計w 系統(tǒng)的大型邏輯結(jié)構(gòu)組織為獨立的,職責(zé)相關(guān)的離系統(tǒng)的大型邏輯結(jié)構(gòu)組織為獨立的,職責(zé)相關(guān)的離散層,具有散層,具有清晰、內(nèi)聚清晰、內(nèi)聚的
11、的關(guān)注分離關(guān)注分離。較低的層是低較低的層是低級別和一般性服務(wù),較高的層則是與應(yīng)用相關(guān)。級別和一般性服務(wù),較高的層則是與應(yīng)用相關(guān)。w 協(xié)作與耦合是從協(xié)作與耦合是從較高層到較低層較高層到較低層進行,避免從較低進行,避免從較低層到較高層的耦合層到較高層的耦合19Software School of Xiamen University使用層的好處使用層的好處w 總的來說,使用層可以做到關(guān)系分離、高級服務(wù)與低總的來說,使用層可以做到關(guān)系分離、高級服務(wù)與低級服務(wù)分離、特定于應(yīng)用的服務(wù)與一般性服務(wù)分離;級服務(wù)分離、特定于應(yīng)用的服務(wù)與一般性服務(wù)分離;w 層可以減少耦合和依賴性、增強內(nèi)聚性、提高潛在的層可以減少
12、耦合和依賴性、增強內(nèi)聚性、提高潛在的復(fù)用性并且使概念更加清晰。復(fù)用性并且使概念更加清晰。w 封裝和分解了相關(guān)的復(fù)雜性。封裝和分解了相關(guān)的復(fù)雜性。w 某些層能夠用新的實現(xiàn)替換。某些層能夠用新的實現(xiàn)替換。w 較低層包含可復(fù)用功能。較低層包含可復(fù)用功能。w 某些層可以是分布式的。某些層可以是分布式的。w 通過邏輯劃分,有助于團隊開發(fā)。通過邏輯劃分,有助于團隊開發(fā)。20Software School of Xiamen University準則:內(nèi)聚職責(zé);使關(guān)系分離準則:內(nèi)聚職責(zé);使關(guān)系分離同一層內(nèi)的對同一層內(nèi)的對象在職責(zé)上應(yīng)象在職責(zé)上應(yīng)該具有緊密聯(lián)該具有緊密聯(lián)系,不同層中系,不同層中對象的職責(zé)不對象
13、的職責(zé)不應(yīng)該混淆。應(yīng)該混淆。信息架構(gòu)中常用的層信息架構(gòu)中常用的層21Software School of Xiamen University領(lǐng)域?qū)雍皖I(lǐng)域模型之間的關(guān)系領(lǐng)域?qū)雍皖I(lǐng)域模型之間的關(guān)系獲得實現(xiàn)世界和軟件設(shè)計之間的獲得實現(xiàn)世界和軟件設(shè)計之間的低表示差異低表示差異22Software School of Xiamen University定義:領(lǐng)域?qū)优c應(yīng)用邏輯層;領(lǐng)域?qū)ο蠖x:領(lǐng)域?qū)优c應(yīng)用邏輯層;領(lǐng)域?qū)ο體 典型的軟件系統(tǒng)都有典型的軟件系統(tǒng)都有UI邏輯和應(yīng)用邏輯,我們?nèi)绾问惯壿嫼蛻?yīng)用邏輯,我們?nèi)绾问褂脤ο笤O(shè)計應(yīng)用邏輯用對象設(shè)計應(yīng)用邏輯w “全能類全能類”?但?但OO思想提倡創(chuàng)建思想提倡創(chuàng)建
14、軟件對象軟件對象!如:!如:pos系統(tǒng)具有銷售與支付功能,系統(tǒng)具有銷售與支付功能,Sale類與類與Payment類類w 從真實世界出發(fā)設(shè)計對象,分配應(yīng)用邏輯職責(zé),稱為從真實世界出發(fā)設(shè)計對象,分配應(yīng)用邏輯職責(zé),稱為領(lǐng)域?qū)ο?,因此領(lǐng)域?qū)ο螅虼藨?yīng)用邏輯層應(yīng)用邏輯層被稱為被稱為領(lǐng)域?qū)宇I(lǐng)域?qū)觲 領(lǐng)域?qū)雍皖I(lǐng)域模型的關(guān)系:領(lǐng)域模型可以給我們領(lǐng)域領(lǐng)域?qū)雍皖I(lǐng)域模型的關(guān)系:領(lǐng)域模型可以給我們領(lǐng)域?qū)用撵`感層命名的靈感23Software School of Xiamen University定義:層、層和分區(qū)定義:層、層和分區(qū)w 層(層(tier)最初表示邏輯層,現(xiàn)表示物理進程節(jié)點最初表示邏輯層,現(xiàn)表示物理進
15、程節(jié)點w 層(層(layer)表示對系統(tǒng)在垂直方面的分區(qū)表示對系統(tǒng)在垂直方面的分區(qū)w 分區(qū)(分區(qū)(partition)表示對層在水平方向進行劃分,表示對層在水平方向進行劃分,形成相對平行的子系統(tǒng)形成相對平行的子系統(tǒng)PersistenceSecurityLoggingTechnical ServicesPOSInventoryTaxDomainVertical LayersHorizontal Partitions24Software School of Xiamen University準則:不要把外部資源表示為最低層準則:不要把外部資源表示為最低層大部分系統(tǒng)依賴于外部資源或服務(wù),例如大部分系
16、統(tǒng)依賴于外部資源或服務(wù),例如MySQL庫存數(shù)據(jù)庫。這些是庫存數(shù)據(jù)庫。這些是物理實現(xiàn)構(gòu)件物理實現(xiàn)構(gòu)件,而,而不是邏輯結(jié)構(gòu)中的層不是邏輯結(jié)構(gòu)中的層就邏輯架構(gòu)和層而言,對某個持久數(shù)據(jù)集合的就邏輯架構(gòu)和層而言,對某個持久數(shù)據(jù)集合的訪問可以看作領(lǐng)域?qū)又械淖宇I(lǐng)域訪問可以看作領(lǐng)域?qū)又械淖宇I(lǐng)域-庫存子領(lǐng)域。庫存子領(lǐng)域。而提供數(shù)據(jù)庫訪問的一般性服務(wù)則可以視為技而提供數(shù)據(jù)庫訪問的一般性服務(wù)則可以視為技術(shù)服務(wù)分區(qū)術(shù)服務(wù)分區(qū)-持久性服務(wù)持久性服務(wù)。25Software School of Xiamen University26Software School of Xiamen University13.7 準則:模型
17、準則:模型-視圖分離原則視圖分離原則w 模型:領(lǐng)域?qū)訉ο笸x詞模型:領(lǐng)域?qū)訉ο笸x詞w 視圖:視圖:UI對象同義詞對象同義詞w 模型模型-視圖分離原則:視圖分離原則: 不要將非不要將非UI對象直接與對象直接與UI對象連接或耦合。因為窗口與對象連接或耦合。因為窗口與某個應(yīng)用相關(guān),非窗口對象可以重用某個應(yīng)用相關(guān),非窗口對象可以重用 例如:不要讓例如:不要讓Sale引用引用JFrame窗口對象;窗口對象; 不要在不要在UI對象方法中加入應(yīng)用邏輯對象方法中加入應(yīng)用邏輯 例如:例如:JFrame窗口不應(yīng)該擁有計算稅金的方法。窗口不應(yīng)該擁有計算稅金的方法。觀察者模式觀察者模式是對該原則的合理擴充,即領(lǐng)域?qū)?/p>
18、象只能通過是對該原則的合理擴充,即領(lǐng)域?qū)ο笾荒芡ㄟ^PropertyListener的接口向視圖的的接口向視圖的UI對象發(fā)送消息對象發(fā)送消息27Software School of Xiamen University13.8 SSD,系統(tǒng)操作和層之間聯(lián)系系統(tǒng)操作和層之間聯(lián)系w SSD描述了系統(tǒng)操作,隱藏了特定的描述了系統(tǒng)操作,隱藏了特定的UI對象,實際對象,實際上,上,UI對象捕獲系統(tǒng)操作請求,并向領(lǐng)域?qū)愚D(zhuǎn)發(fā)請對象捕獲系統(tǒng)操作請求,并向領(lǐng)域?qū)愚D(zhuǎn)發(fā)請求求w 從從UI層發(fā)送到領(lǐng)域?qū)拥南⑹菍影l(fā)送到領(lǐng)域?qū)拥南⑹荢SD中所描述的消中所描述的消息,例如息,例如enterItem.28Software
19、 School of Xiamen UniversityDomainUISwingProcessSaleFrame.RegistermakeNewSale()enterItem().: CashiermakeNewSale()enterItem()endSale()makeNewSale()enterItem()endSale()enterItem(id, quantity):System: CashierendSale()description, totalmakeNewSale()the system operations handled by the system in an SSD r
20、epresent the operation calls on the Application or Domain layer from the UI layer29Software School of Xiamen University13.9 示例:示例: NextGen的邏輯架構(gòu)和包圖的邏輯架構(gòu)和包圖Dom ainUISwingnot the Java Swing libraries, but our GUI classes based on SwingW ebSalesPaym entsTaxesTechnical ServicesPersistenceLoggingRulesEngi
21、ne30Software School of Xiamen University第第 14 章章 邁向?qū)ο笤O(shè)計邁向?qū)ο笤O(shè)計31Software School of Xiamen University14.1 如何開始設(shè)計如何開始設(shè)計w 不同的方式不同的方式編碼編碼 編碼的同時進行設(shè)計,根據(jù)想象的模型直編碼的同時進行設(shè)計,根據(jù)想象的模型直接編碼接編碼繪圖,然后編碼繪圖,然后編碼只繪圖,不編碼只繪圖,不編碼32Software School of Xiamen University14.1-3 敏捷建模和輕量級敏捷建模和輕量級UMLw 敏捷建模的目標是減少常用圖形,建模的目敏捷建模的目標是減少常用
22、圖形,建模的目的是為了理解和溝通,而不是創(chuàng)建文檔的是為了理解和溝通,而不是創(chuàng)建文檔w 可以使用白板等手段來畫草圖可以使用白板等手段來畫草圖w 敏捷建模的實踐敏捷建模的實踐與他人一起建模與他人一起建模并行創(chuàng)建若干模型(例如交互圖與類圖并行)并行創(chuàng)建若干模型(例如交互圖與類圖并行)迭代開始時花費幾個小時或者一天的事件,迭代開始時花費幾個小時或者一天的事件,對有難度和創(chuàng)造性的部分繪制對有難度和創(chuàng)造性的部分繪制UML草圖以得草圖以得到其詳細的對象設(shè)計到其詳細的對象設(shè)計33Software School of Xiamen University14.4 設(shè)計對象:什么是靜態(tài)和動態(tài)建模設(shè)計對象:什么是靜態(tài)
23、和動態(tài)建模w 靜態(tài)和動態(tài)建模靜態(tài)和動態(tài)建模靜態(tài)模型靜態(tài)模型:有助于設(shè)計包,類,屬性和方法特征:有助于設(shè)計包,類,屬性和方法特征標記的定義,例如類圖,包圖,部署圖標記的定義,例如類圖,包圖,部署圖動態(tài)模型動態(tài)模型:有助于設(shè)計邏輯,代碼行為或方法體:有助于設(shè)計邏輯,代碼行為或方法體w 初學(xué)者的認識:類圖是我所想要的初學(xué)者的認識:類圖是我所想要的實際上,實際上,交互圖交互圖更重要更重要應(yīng)該把時間花費在交互圖(順序圖或通信圖),應(yīng)該把時間花費在交互圖(順序圖或通信圖),而不僅是類圖上而不僅是類圖上交替進行交替進行34Software School of Xiamen University14.5 對象
24、設(shè)計技能比對象設(shè)計技能比UML表示法技能更重要表示法技能更重要w 繪制繪制UML反映了對設(shè)計作出的決策反映了對設(shè)計作出的決策w 對象設(shè)計技術(shù)并不一定要了解如何繪制對象設(shè)計技術(shù)并不一定要了解如何繪制UMLw 基本的對象設(shè)計需要了解的是:基本的對象設(shè)計需要了解的是:職責(zé)分配原則職責(zé)分配原則設(shè)計模式設(shè)計模式35Software School of Xiamen University14.6 其他對象設(shè)計技術(shù):其他對象設(shè)計技術(shù):CRC卡卡w 類職責(zé)協(xié)助(類職責(zé)協(xié)助(CRC)卡是流行的面向文本建)卡是流行的面向文本建模技術(shù);模技術(shù);w CRC卡是紙質(zhì)的索引卡片,其中記錄了類的卡是紙質(zhì)的索引卡片,其中記錄
25、了類的職責(zé)和協(xié)作,每張卡片表示一個類。職責(zé)和協(xié)作,每張卡片表示一個類。w 考慮對象必須做什么,以及必須與哪些對象考慮對象必須做什么,以及必須與哪些對象協(xié)作。協(xié)作。36Software School of Xiamen University37Software School of Xiamen University第第 15 章章 UML交互圖交互圖38Software School of Xiamen University15.1 順序圖和通信圖順序圖和通信圖w 交互圖(交互圖(interaction diagram)UML使用交互圖來描述對象間通過消息的交互。使用交互圖來描述對象間通過消息的
26、交互。w 交互圖分類交互圖分類順序圖(順序圖(sequence diagram) 強調(diào)消息的時間順序強調(diào)消息的時間順序 展示了對象的生命線展示了對象的生命線通信圖通信圖 (communication diagram)/協(xié)作圖協(xié)作圖 強調(diào)結(jié)構(gòu)組織強調(diào)結(jié)構(gòu)組織 對復(fù)雜的交互表達更容易對復(fù)雜的交互表達更容易39Software School of Xiamen University順序圖用柵欄格式展示交互關(guān)系順序圖用柵欄格式展示交互關(guān)系w 在代碼中的表示:在代碼中的表示:public class A private B myB = new B(); public void doOne() myB.d
27、oTwo(); myB.doThree(); /: Am yB : Bd o T w od o O n ed o T h re e對象對象時間時間40Software School of Xiamen University通信圖以圖或網(wǎng)絡(luò)形式描述對象交互,其中對通信圖以圖或網(wǎng)絡(luò)形式描述對象交互,其中對象可以位于圖中的任何位置象可以位于圖中的任何位置: AmyB : B1: doTwo2: doThreedoOne41Software School of Xiamen University順序圖和通信圖的優(yōu)缺點順序圖和通信圖的優(yōu)缺點類型類型優(yōu)勢優(yōu)勢劣勢劣勢順序圖順序圖 能夠清晰表示消息的順序能夠
28、清晰表示消息的順序和時間排序和時間排序大量詳細表示法選項大量詳細表示法選項強調(diào)在右側(cè)增加強調(diào)在右側(cè)增加新對象;消耗水新對象;消耗水平空間平空間通信圖通信圖 空間效用空間效用能夠在二維空能夠在二維空間內(nèi)靈活地增加新對象間內(nèi)靈活地增加新對象不易查閱消息的不易查閱消息的順序順序表示法選項較少表示法選項較少42Software School of Xiamen University: R egister: S alem akeP aym ent(cashT endered)m akeP aym ent(cashT endered) : P aym entcreate(cashT endered)pub
29、lic class Sale private Payment payment; public void makePayment( Money cashTendered) payment = new Payment( cashTendered); / /43Software School of Xiamen UniversityUML 演示演示public class HelloWorldpublic static void main(String args)Greeting hello=new Greeting();hello.greet(“hello World”);class Greeti
30、ngpublic void greet(String s)System.out.println(s); 44Software School of Xiamen University1: m akePaym ent(cashTendered)1.1: create(cashTendered):Register:Sale:Paym entm akePaym ent(cashTendered) direction of m essage通信圖與之前的順序圖含義相同通信圖與之前的順序圖含義相同45Software School of Xiamen University15.2 UML建模初學(xué)者沒有對交
31、互圖給予足夠重視!建模初學(xué)者沒有對交互圖給予足夠重視!w 準則:準則:應(yīng)該花費時間使用交互圖進行動態(tài)對象建模,而應(yīng)該花費時間使用交互圖進行動態(tài)對象建模,而不僅是使用類圖進行靜態(tài)對象建模。不僅是使用類圖進行靜態(tài)對象建模。w 原因:原因:考慮真正的考慮真正的OO設(shè)計細節(jié)時,就必須要設(shè)計細節(jié)時,就必須要“落實落實”發(fā)送哪些消息、發(fā)送給誰、以何種順序發(fā)送等具發(fā)送哪些消息、發(fā)送給誰、以何種順序發(fā)送等具體信息。體信息。46Software School of Xiamen University15.3 常用的常用的UML交互圖表示法交互圖表示法w 使用生命線框圖表示參與者使用生命線框圖表示參與者47Sof
32、tware School of Xiamen Universityreturn = message (parameter : parameterType): returnType沒有參數(shù)時,可以省略括號沒有參數(shù)時,可以省略括號如果很顯然或者不重要,可以不包含類型信息如果很顯然或者不重要,可以不包含類型信息舉例:舉例: initialize(code) initialize d=getProductSpect(id): d=getProductSpect(id: ItemID): d=getProductSpect(id: ItemID): ProductSpecification注:為了自動代
33、碼生成,要全部寫完整注:為了自動代碼生成,要全部寫完整消息表達式的基本語法48Software School of Xiamen University單實例類對象單實例類對象w 單實例類模式:對類進行實例化時,只能存在一個實例, 而絕不能是兩個。49Software School of Xiamen University15.4 順序圖的基本表示法順序圖的基本表示法1. 生命框圖和生命線生命框圖和生命線順序圖中的生命線框圖包括框圖之下的垂直延順序圖中的生命線框圖包括框圖之下的垂直延伸線伸線UML 2規(guī)范中定義的生命線可以是實線也可以規(guī)范中定義的生命線可以是實線也可以是虛線是虛線50Softwa
34、re School of Xiamen University消息消息創(chuàng)始消息表示沒有特定發(fā)送者、發(fā)送者不明確創(chuàng)始消息表示沒有特定發(fā)送者、發(fā)送者不明確或消息源眾多的消息?;蛳⒃幢姸嗟南?。51Software School of Xiamen University控制期和執(zhí)行規(guī)格條控制期和執(zhí)行規(guī)格條w 順序圖中使用順序圖中使用執(zhí)行規(guī)格執(zhí)行規(guī)格條(活動條條(活動條/活動)活動)來來表示控制器,該條可選。表示控制器,該條可選。w 準則:通常在使用準則:通常在使用UML CASE工具時會工具時會經(jīng)常繪制執(zhí)行規(guī)格條經(jīng)常繪制執(zhí)行規(guī)格條(自動),在墻上繪制(自動),在墻上繪制草圖時往往不繪制。草圖時往往不
35、繪制。52Software School of Xiamen University表示應(yīng)答或返回表示應(yīng)答或返回w可以用兩種方式表示消息的返回結(jié)果:可以用兩種方式表示消息的返回結(jié)果:使用消息語法使用消息語法 returnVar = message(parameter).在活動條末端使用應(yīng)答(或返回)消息線在活動條末端使用應(yīng)答(或返回)消息線: Register: Saled1 = getDategetDatedoXaDate53Software School of Xiamen University發(fā)送給發(fā)送給“自身自身”的消息的消息: RegisterdoXclear嵌套的活動條表示對象發(fā)送給
36、自身的消息嵌套的活動條表示對象發(fā)送給自身的消息54Software School of Xiamen University實例的創(chuàng)建實例的創(chuàng)建創(chuàng)建對象:虛線創(chuàng)建對象:虛線同步消息:實心箭頭同步消息:實心箭頭異步消息:開放箭頭異步消息:開放箭頭55Software School of Xiamen University對象生命線和對象的銷毀對象生命線和對象的銷毀56Software School of Xiamen University圖框圖框圖框操作符圖框操作符含義含義alt選擇性的片段,用于表示保護信息所表達的互斥條件邏輯選擇性的片段,用于表示保護信息所表達的互斥條件邏輯loop用于表示保護
37、信息為真的循環(huán)片段。也可以寫為用于表示保護信息為真的循環(huán)片段。也可以寫為loop(n)以指以指明循環(huán)的次數(shù),例如明循環(huán)的次數(shù),例如loop(i,1,10) 。opt當保護信息為真時執(zhí)行的可選片段當保護信息為真時執(zhí)行的可選片段par并行執(zhí)行的并行片段并行執(zhí)行的并行片段region只能執(zhí)行一個線程的臨界片段只能執(zhí)行一個線程的臨界片段57Software School of Xiamen Universitycalculate: Baryyxx color = red opt: Foo: B: AcalculatedoX: Ccalculate x 10 alt else 58Software Sc
38、hool of Xiamen University隱含地表示對集合的迭代隱含地表示對集合的迭代對集合的迭代對集合的迭代st = getSubtotallineItemsi :SalesLineItemt = getTotalloop: Sale59Software School of Xiamen University隱含地表示對集合的迭代隱含地表示對集合的迭代public class Sale private List lineItems = new ArrayList();public Money getTotal() Money total = new Money(); Money su
39、btotal = null;for ( SalesLineItem lineItem : lineItems ) subtotal = lineItem.getSubtotal(); total.add( subtotal ); return total; / 60Software School of Xiamen Universitycalculate: Barxx color = red opt: Fooloop(n)圖框的嵌套圖框的嵌套圖框的嵌套圖框的嵌套61Software School of Xiamen University如何關(guān)聯(lián)交互圖如何關(guān)聯(lián)交互圖62Software Scho
40、ol of Xiamen University對類調(diào)用靜態(tài)(或類)方法的消息對類調(diào)用靜態(tài)(或類)方法的消息在代碼中,可能的實現(xiàn)是:在代碼中,可能的實現(xiàn)是:public class Foo public void doX() /調(diào)用調(diào)用Calandar類的靜態(tài)方法類的靜態(tài)方法 Locale locales = Calendar.getAvailableLocals();63Software School of Xiamen University多態(tài)消息和案例多態(tài)消息和案例64Software School of Xiamen University異步和同步調(diào)用異步和同步調(diào)用刺形箭頭在刺形箭頭在U
41、ML中表示異步調(diào)用;實心箭頭表示為同步調(diào)用中表示異步調(diào)用;實心箭頭表示為同步調(diào)用異步的異步的start調(diào)用通常會請求調(diào)用通常會請求Runnable(Clock)對象的)對象的run方法,可以忽略方法,可以忽略Trread對象和對象和start消息。消息。Clock也稱為主動對象(也稱為主動對象(active object),即在自),即在自己的執(zhí)行線程中運行或者控制自己的執(zhí)行線程的實例。己的執(zhí)行線程中運行或者控制自己的執(zhí)行線程的實例。65Software School of Xiamen Universitypublic class ClockStarter public void start
42、Clock() Thread t = new Thread( new Clock() ); t.start();/ 異步調(diào)用異步調(diào)用clock對象上的對象上的run方法方法System.runFinalization(); / / clock對象應(yīng)該實現(xiàn)對象應(yīng)該實現(xiàn)Runnable接口接口 public class Clock implements Runnable public void run() while ( true ) / 在其線程中永遠循環(huán)在其線程中永遠循環(huán) / / 注意注意UML圖中沒有包含代碼中的圖中沒有包含代碼中的Thread對象對象66Software School of
43、 Xiamen University15.5 通信圖的基本表示法通信圖的基本表示法w Link (連接連接/鏈鏈) 連接兩個對象的路徑,它指明了對象間某種可能的導(dǎo)航連接兩個對象的路徑,它指明了對象間某種可能的導(dǎo)航和可見性和可見性1: makePayment(cashTendered)2: foo2.1: bar: Register:Salelink line67Software School of Xiamen University消息消息w 對象間的每個消息都可以使用消息表達式和指明對象間的每個消息都可以使用消息表達式和指明消息方向的小箭頭來表示。消息方向的小箭頭來表示。 w 可以增加順序編
44、號以表示當前控制線程中消息的可以增加順序編號以表示當前控制線程中消息的次序。次序。不要為起始消息編號不要為起始消息編號1: msg22: msg33: msg43.1: msg5: Register:Saleall messages flow on the same linkmsg168Software School of Xiamen University“自身自身”傳遞的消息傳遞的消息: Registermsg11: clear69Software School of Xiamen University返回值返回值w 返回值變量的名字和賦值符號:= 在消息前70Software Schoo
45、l of Xiamen University實例的創(chuàng)建:實例的創(chuàng)建: 約定使用名為約定使用名為create的消息的消息71Software School of Xiamen University消息的順序編號消息的順序編號: Amsg1: B1: msg2: C1.1: msg3not numberedlegal numbering1) 不為第一個消息使用順序編號不為第一個消息使用順序編號2)使用合法編號方案來表示后續(xù)消息的順序和嵌套如:)使用合法編號方案來表示后續(xù)消息的順序和嵌套如:1.172Software School of Xiamen University: Amsg1: B1: m
46、sg2: C1.1: msg32.1: msg52: msg4: D2.2: msg6firstsecondfourthsixthfifththird73Software School of Xiamen University有條件消息有條件消息1 color = red : calculate: Foo: Barmessage1conditional message, with test帶方括號的條件子句來表示有條件消息帶方括號的條件子句來表示有條件消息只有在子句為真時,才發(fā)送該消息。只有在子句為真時,才發(fā)送該消息。74Software School of Xiamen University
47、互斥的有條件路徑互斥的有條件路徑必須使用條件路徑字母修改順序編號:必須使用條件路徑字母修改順序編號: 在在msg后可能執(zhí)行后可能執(zhí)行1a 或或 1b75Software School of Xiamen University迭代或循環(huán)迭代或循環(huán)如果迭代子句對建模者而言并不重要,則可以使用如果迭代子句對建模者而言并不重要,則可以使用“*” 對其對其簡化簡化76Software School of Xiamen University集合的迭代集合的迭代77Software School of Xiamen University對類調(diào)用靜態(tài)(類)方法的消息對類調(diào)用靜態(tài)(類)方法的消息78Softwa
48、re School of Xiamen University多態(tài)消息和案例多態(tài)消息和案例:RegisterauthorizedoX:Payment abstractpolymorphic messageobject in role of abstract superclass:DebitPaymentauthorize:Foostop at this point dont show any further details for this messageseparate diagrams for each polymorphic concrete casedoAdoB:CreditPaymen
49、tauthorize:BardoX可以使用多個通信圖來表示每種具體的多態(tài)案例可以使用多個通信圖來表示每種具體的多態(tài)案例79Software School of Xiamen University異步和同步消息異步和同步消息3: runFinalization:ClockStarterSystem : ClassstartClock:Clock1: create2: runasynchronous messageactive object刺形箭頭在刺形箭頭在UML中表示異步調(diào)用;實心箭頭表示為同步調(diào)用中表示異步調(diào)用;實心箭頭表示為同步調(diào)用80Software School of Xiamen U
50、niversity總結(jié):總結(jié):UML三種消息三種消息w 調(diào)用(調(diào)用(Procedure Call):):發(fā)送者把消息發(fā)送后,發(fā)送者把消息發(fā)送后,等待直到接收者飯還有控制,可以表示同步;等待直到接收者飯還有控制,可以表示同步;w 異步(異步(Asynchronous):):消息發(fā)送后,發(fā)送者繼消息發(fā)送后,發(fā)送者繼續(xù)操作,不等待,常用于并發(fā);續(xù)操作,不等待,常用于并發(fā);81Software School of Xiamen University總結(jié):總結(jié):UML三種消息三種消息w 返回(返回(Return):):表示消息的返回,一般同步表示消息的返回,一般同步(過程調(diào)用)的返回不需要畫出,直接畫出
51、,而異(過程調(diào)用)的返回不需要畫出,直接畫出,而異步返回則可用它。步返回則可用它。w Rose 擴充 阻止(Balking)超時(Time-out)82Software School of Xiamen University83Software School of Xiamen Universityw 其中其中Simple和和Asynchronous同義同義Synchronous和和Procedure Call 同義同義Return 不變不變新增:新增:阻止(阻止(Balking):):接收者如果無法立即接收,則接收者如果無法立即接收,則發(fā)送者放棄消息;發(fā)送者放棄消息;超時(超時(Time-o
52、ut):):如果接收者無法在指定時間內(nèi)如果接收者無法在指定時間內(nèi)接收,則發(fā)送者放棄消息;接收,則發(fā)送者放棄消息;84Software School of Xiamen Universityw 例1: 客戶通過銀行柜臺人員進行成功存款操作w 例2:管理員通過課程管理器打印課程UML的信息w 例3:管理員通過課程管理器打印所有課程的信息85Software School of Xiamen University例例1: 客戶通過銀行柜臺人員進行存款操作客戶通過銀行柜臺人員進行存款操作86Software School of Xiamen University例例2:管理員通過課程管理器打印課程:管
53、理員通過課程管理器打印課程UML的信息的信息87Software School of Xiamen University例例3:管理員通過課程管理器打印所有課程的信息:管理員通過課程管理器打印所有課程的信息Rose 中如何發(fā)布?88Software School of Xiamen UniversityRose 如何發(fā)布?如何發(fā)布?點擊點擊Tools-Web Publisher89Software School of Xiamen University第十六章第十六章 UML類圖類圖90Software School of Xiamen University類圖類圖w UML用類圖(Class
54、 Diagram)表示類、接口及其關(guān)聯(lián)w 用于靜態(tài)對象建模91Software School of Xiamen University16.1 應(yīng)用應(yīng)用UML:常見類圖表示法:常見類圖表示法92Software School of Xiamen University16.2 定義:設(shè)計類圖定義:設(shè)計類圖兩種透視圖中的兩種透視圖中的UML類圖類圖93Software School of Xiamen University16.3 類元類元w 類元類元(classifier)描述行為和結(jié)構(gòu)特性的模型元素描述行為和結(jié)構(gòu)特性的模型元素包括包括類、接口類、接口、用例和參與者、用例和參與者w 類的命名類的
55、命名 類的名字是每個類所必有的構(gòu)成,用于和其它類相區(qū)分類的名字是每個類所必有的構(gòu)成,用于和其它類相區(qū)分 類的名字可分為類的名字可分為簡單名字簡單名字:簡單名字是一個不包含冒號的字串:簡單名字是一個不包含冒號的字串復(fù)雜名字復(fù)雜名字(路徑名字路徑名字):路徑名是簡單名字前面:路徑名是簡單名字前面加上一個包含此類的所在的模型包的名字,這加上一個包含此類的所在的模型包的名字,這兩個名字之間用兩冒號隔開兩個名字之間用兩冒號隔開 94Software School of Xiamen University16.4 表示表示UML屬性的方式:屬性文本和關(guān)聯(lián)線屬性的方式:屬性文本和關(guān)聯(lián)線w 屬性表示法:屬性表
56、示法: 屬性文本表示法屬性文本表示法 Visibility name : type multiplicity = default property-string 如果沒有給出可見性,則通常假設(shè)屬性是私有的如果沒有給出可見性,則通常假設(shè)屬性是私有的 關(guān)聯(lián)線表示法關(guān)聯(lián)線表示法 導(dǎo)航線箭頭由源對象指向目標對象,表示源對象的一導(dǎo)航線箭頭由源對象指向目標對象,表示源對象的一個屬性是目標對象個屬性是目標對象 多重性放在目標一端而不是源的一端。多重性放在目標一端而不是源的一端。 角色名只放在目標一端,用以表示屬性名稱角色名只放在目標一端,用以表示屬性名稱 不需要關(guān)聯(lián)名稱不需要關(guān)聯(lián)名稱 兩者兼有兩者兼有95S
57、oftware School of Xiamen University96Software School of Xiamen University準則:領(lǐng)域模型中注意不要用導(dǎo)航線箭頭準則:領(lǐng)域模型中注意不要用導(dǎo)航線箭頭97Software School of Xiamen University準則:何時使用屬性文本,何時使用關(guān)聯(lián)線準則:何時使用屬性文本,何時使用關(guān)聯(lián)線準則:對數(shù)據(jù)類型對象使用屬性文本表示法,對其他對象使用關(guān)聯(lián)準則:對數(shù)據(jù)類型對象使用屬性文本表示法,對其他對象使用關(guān)聯(lián)線,線,但是關(guān)聯(lián)線能夠在視覺上強調(diào)圖中對象的類之間的連接。但是關(guān)聯(lián)線能夠在視覺上強調(diào)圖中對象的類之間的連接。數(shù)據(jù)類
58、型對象:布爾、日期(或日期時間)、數(shù)字、字符、字符串數(shù)據(jù)類型對象:布爾、日期(或日期時間)、數(shù)字、字符、字符串、時間、地址、顏色、幾何形狀、電話號碼、社會安全號、統(tǒng)一產(chǎn)、時間、地址、顏色、幾何形狀、電話號碼、社會安全號、統(tǒng)一產(chǎn)品代碼、郵政編碼、枚舉類型等。品代碼、郵政編碼、枚舉類型等。98Software School of Xiamen University代碼中歸結(jié)為同一個事物:代碼中歸結(jié)為同一個事物:public class Register private int id; private Sale currentSale; private Store location; / 99Sof
59、tware School of Xiamen University如何使用屬性文本和關(guān)聯(lián)線表示集合屬性如何使用屬性文本和關(guān)聯(lián)線表示集合屬性w 假設(shè)假設(shè)Sale的軟件對象持有包含了的軟件對象持有包含了SalesLineItem對象的對象的List(一種集合的接口一種集合的接口)public class Sale private List lineItems = new ArrayList(); / 100Software School of Xiamen University如何使用屬性文本和關(guān)聯(lián)線表示集合屬性如何使用屬性文本和關(guān)聯(lián)線表示集合屬性101Software School of Xia
60、men University16.5 注解符號:注解、注釋、約束和方法體注解符號:注解、注釋、約束和方法體w 符號表示:符號表示:w 注解符號可以表示多種事物:注解符號可以表示多種事物:UML注解(注解(note)或注釋()或注釋(comment)UML約束約束(constraint),必須使用,必須使用“”將它括將它括起來起來方法體方法體(method body)102Software School of Xiamen University16.6 操作和方法操作和方法w 完整、正式的操作語法:完整、正式的操作語法:visibility name (parameter-list) prope
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第19課 科學(xué)技術(shù)的重大成果課件
- 2024年專業(yè)電工施工協(xié)議典范
- 中國特色社會主義基本原理(上)
- 2024年度層電梯廳裝潢協(xié)議模板
- 2024年無薪實習(xí)勞動協(xié)議
- 2024年倉庫租賃法律協(xié)議細則
- 2024年型車輛采購協(xié)議
- 2024屆安徽省合肥高升學(xué)校高三八校第一次適應(yīng)性考試數(shù)學(xué)試題試卷
- 2024建筑業(yè)勞務(wù)施工協(xié)議文本
- 2023-2024學(xué)年浙江省溫州市九校下期第二次質(zhì)量考評(3月)高三數(shù)學(xué)試題
- 2022秋國開公共關(guān)系學(xué)形考任務(wù)3試題及答案
- 放射科技能考核評分表
- 對外漢語教學(xué)趨向補語練習(xí)題
- 油茶栽培(普通油茶)課件
- 高錳酸鉀安全使用說明書
- 建筑廢棄材料回收利用公司創(chuàng)業(yè)項目計劃書
- 2021年12月醫(yī)院臨床藥師培訓(xùn)理論考核試題(呼吸專業(yè))
- 圓管鋼立柱柱吊裝施工方案
- 高等天氣學(xué)講座--高空急流的次級環(huán)流及其與鋒面系統(tǒng)的耦合課件
- 登高車檢查表
- 5陶行知的學(xué)前教育思想課件(42頁PPT)
評論
0/150
提交評論