南理工泰科院UML課件04_第1頁
南理工泰科院UML課件04_第2頁
南理工泰科院UML課件04_第3頁
南理工泰科院UML課件04_第4頁
南理工泰科院UML課件04_第5頁
已閱讀5頁,還剩46頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第4 4章章 其他結構建模其他結構建模計算機科學與技術計算機科學與技術 主要內容主要內容 擴展機制擴展機制 包和包圖包和包圖 接口接口 復合結構圖復合結構圖擴展機制擴展機制 標記值標記值tagged valuetagged value擴充了擴充了UMLUML的模型元素的屬性,允許在模型元素的規格的模型元素的屬性,允許在模型元素的規格中創建新的信息。中創建新的信息。 構造型構造型stereotypestereotype擴充了擴充了UMLUML的詞匯表,允許針對不同的問題從已有的基的詞匯表,允許針對不同的問題從已有的基礎上創建新的元素類型。礎上創建新的元素類型。 約束約束constraintco

2、nstraint擴充了擴充了UMLUML模型元素的語義,允許添加新的限制條件或模型元素的語義,允許添加新的限制條件或修改已有的限制條件。修改已有的限制條件。標記值標記值 一個標記值一個標記值(tagged value)(tagged value)是一個標記名和一個值的對偶是一個標記名和一個值的對偶,表示為,表示為“ 標記名標記名= =標記值標記值 ”。標記值可為元素添加新的。標記值可為元素添加新的性質。性質。 例:例: author = “Joe Smith”, deadline = 31-March- author = “Joe Smith”, deadline = 31-March-199

3、7, status = analysis 1997, status = analysis 注意:注意:UML1.XUML1.X規范中,標記值可附加在任何元素上。但在規范中,標記值可附加在任何元素上。但在UML2UML2規范中,標記值僅用于構造型中。規范中,標記值僅用于構造型中。構造型構造型 一個構造型一個構造型stereotypestereotype是在建模時引入的元模型元素的一種是在建模時引入的元模型元素的一種新類。表示方法:新類。表示方法: stereotype stereotype 。 表示一個已有元模型元素的一個子類,與其具有相同形式表示一個已有元模型元素的一個子類,與其具有相同形式(

4、 (屬屬性和關系性和關系) ),但有不同用意,但有不同用意( (為了適用于特定平臺或領域為了適用于特定平臺或領域) )。 簡而言之,構造型擴展機制的目的就是基于一個已存在的模簡而言之,構造型擴展機制的目的就是基于一個已存在的模型元素再重新定義一個新的模型元素。型元素再重新定義一個新的模型元素。構造型構造型 構造型可以基于所有種類的模型元素。構造型可以基于所有種類的模型元素。 構造型的一般表現形式為使用構造型的一般表現形式為使用“”和和“”包含構造型的包含構造型的名稱在里面。名稱在里面。 定義定義一個類的構造型,用矩形表示,必須確定一個名字,如一個類的構造型,用矩形表示,必須確定一個名字,如Ja

5、vaBeanJavaBean,并用,并用stereotype stereotype 說明在名字上方,用一個實說明在名字上方,用一個實心三角箭頭指向被擴展的類元。心三角箭頭指向被擴展的類元。使用使用includeinclude構造型構造型擴展擴展ClassClass元類來定義一個構造型元類來定義一個構造型構造型構造型 構造型的表現形式并不都是使用構造型的表現形式并不都是使用“ ”和和“ ”,有的是通,有的是通過圖形的改變來表示的。過圖形的改變來表示的。 UML UML 中已經預定義多種模型元素的標準構造型,用戶也可中已經預定義多種模型元素的標準構造型,用戶也可以自己定義構造型。以自己定義構造型。

6、構造型構造型 使用使用一個構造型來說明一個模型元素時,該構造型的名字一個構造型來說明一個模型元素時,該構造型的名字用用 構造名構造名 表示,說明在元素名字的上方或前方。表示,說明在元素名字的上方或前方。 如圖,構造型如圖,構造型 JavaBeanJavaBean 用于說明一個用于說明一個PersonPerson類,說明了類,說明了這個類作為這個類作為JavaBeanJavaBean類進行設計。類進行設計。 如果標記值不是太多的話,也可說明在類名的下方,用如果標記值不是太多的話,也可說明在類名的下方,用 括起來,并用逗號分開多個標記值。括起來,并用逗號分開多個標記值。約束約束 約束約束(Cons

7、traint)(Constraint)表示條件或限制,可用自然語言或形式表示條件或限制,可用自然語言或形式化語言描述,對建模元素的某些語義進行限定。化語言描述,對建模元素的某些語義進行限定。 約束有兩類:約束有兩類:UMLUML預定義和用戶定義。預定義和用戶定義。 模型中表示約束:模型中表示約束:可以是自由文本或可以是自由文本或OCL(Object Constraint Language)OCL(Object Constraint Language)表示表示注解注解notenote方式方式 語法:花括號,語法:花括號, 約束約束 布爾表達式布爾表達式約束約束用虛線表示兩者之間用虛線表示兩者之間

8、的約束。的約束。xor表示兩者互斥表示兩者互斥用注解用注解note方式來描述約束方式來描述約束包包 包是一種有效的組織管理機制。包是一種有效的組織管理機制。 包在包在UMLUML中被視為文件夾或目錄結構中被視為文件夾或目錄結構包包 包的作用包的作用包像一個容器,通常用來組織用例圖和類圖,當然,包圖的包像一個容器,通常用來組織用例圖和類圖,當然,包圖的用途不僅限于這些用途不僅限于這些UMLUML元素;元素;語義上相關的元素進行分組;定義模型中的語義上相關的元素進行分組;定義模型中的“語義邊界語義邊界”;提供封裝的命名空間,其中所有名稱必須唯一。提供封裝的命名空間,其中所有名稱必須唯一。包的名稱包

9、的名稱 每個包必須有一個與其他包相區別的名稱。每個包必須有一個與其他包相區別的名稱。 兩種形式:簡單名和路徑名。兩種形式:簡單名和路徑名。包擁有的元素包擁有的元素 包用于對模型元素進行分組,并為這些元素提供包用于對模型元素進行分組,并為這些元素提供一個一個命名空間命名空間,這意味著一個包中多個元素的命,這意味著一個包中多個元素的命名不能重復。名不能重復。 包中各元素的包中各元素的限定名限定名就是包名加上元素的名稱,就是包名加上元素的名稱,例如,例如,P:AP:A,P P是包的名字,是包的名字,A A是類的名字。是類的名字。 一個元素的一個元素的非限定名非限定名就是該元素的名字。就是該元素的名字

10、。包擁有的元素包擁有的元素 包擁有的元素:類、接口、組件、節點、協作、包擁有的元素:類、接口、組件、節點、協作、用例、圖以及其他包。用例、圖以及其他包。 擁有是一種擁有是一種組成組成關系。關系。 一個模型元素不能被一個以上的包所擁有。一個模型元素不能被一個以上的包所擁有。 如果包被撤銷,其中的元素也要被撤銷。如果包被撤銷,其中的元素也要被撤銷。 包中的成員可直接表示在文件夾方框之內,也可表示在方框外部。包中的成員可直接表示在文件夾方框之內,也可表示在方框外部。包成員的可見性包成員的可見性可見性的類型:可見性的類型:公有的(公有的(publicpublic) “ “”受保護的(受保護的(prot

11、ectedprotected) “ “”私有的(私有的(privateprivate)“”一個包中一個包中publicpublic成員在包外可用限定名進行訪問;而成員在包外可用限定名進行訪問;而privateprivate成員則只能在本包范圍內被訪問。成員則只能在本包范圍內被訪問。一個包的子包可稱為一個包的子包可稱為內層包內層包或者下層包,或者下層包,UMLUML規定內層包規定內層包中元素可訪問外層包中元素,而無需限定名,只要內層中元素可訪問外層包中元素,而無需限定名,只要內層包中不存在同名元素。包中不存在同名元素。包間關系包間關系 主要關系主要關系依賴關系依賴關系泛化關系泛化關系 其他關系其

12、他關系包含包含導入導入合并合并包間關系包間關系 依賴關系依賴關系 如果兩個包中的任意兩個元素間存在依賴關如果兩個包中的任意兩個元素間存在依賴關系,那么這兩個包就存在依賴關系。系,那么這兩個包就存在依賴關系。 ABC注:依賴關系沒有傳遞注:依賴關系沒有傳遞包間關系包間關系 泛化關系泛化關系 包間的泛化關系用于說明包的家族關系包間的泛化關系用于說明包的家族關系 與類之間的泛化概念相同與類之間的泛化概念相同 用戶界面界面包含包含 包包含包包含 包包含(包包含(package includepackage include)指一個包可包)指一個包可包含若干子包,如同文件系統中的一個目錄可含若干子包,如同

13、文件系統中的一個目錄可包含若干子目錄,形成樹形結構。包含若干子目錄,形成樹形結構。 內層包可直接訪問其外層包中的元素,無需內層包可直接訪問其外層包中的元素,無需導入。但一個包要訪問它所包含的子包,就導入。但一個包要訪問它所包含的子包,就可能需要導入。可能需要導入。導入導入 包導入包導入 包導入(包導入(package importpackage import)是一種允許采用)是一種允許采用非限定名稱訪問來自于另一個命名空間中的非限定名稱訪問來自于另一個命名空間中的元素的關系。元素的關系。 導入也可確定可見性,有以下兩種選擇:導入也可確定可見性,有以下兩種選擇:publicpublic缺省,被導

14、入的元素對包外是可見的。缺省,被導入的元素對包外是可見的。 importimportprivateprivate,被導入的元素對包外不可見。,被導入的元素對包外不可見。accessaccess包導入包導入 包導入是包之間的一種有向關系,并且是包之間包導入是包之間的一種有向關系,并且是包之間的一種依賴關系,用依賴箭頭從一個包指向被導的一種依賴關系,用依賴箭頭從一個包指向被導入的一個包。入的一個包。共有導入具有傳遞性,而私有導入不具傳遞性。共有導入具有傳遞性,而私有導入不具傳遞性。包合并包合并 包合并包合并(package merge)(package merge):一個有向關系,:一個有向關系,

15、從一個源包從一個源包sourcesource指向一個目標指向一個目標target;target; 定義了一個包定義了一個包(source)(source)中的內容是另一個包中的內容是另一個包(target)(target)的內容的擴展。的內容的擴展。 合并關系用虛線箭頭從源指向目標,并標明合并關系用虛線箭頭從源指向目標,并標明構造型構造型mergemerge。包合并包合并 包合并類似于包合并類似于“泛化泛化”的繼承關系,源包的的繼承關系,源包的元素在概念上增加了目標包中的元素的特性元素在概念上增加了目標包中的元素的特性作為自己的特性,這樣形成了特性的合并。作為自己的特性,這樣形成了特性的合并。

16、 何時應使用包合并?何時應使用包合并?不同包中存在一些元素具有同樣的名字,而且不同包中存在一些元素具有同樣的名字,而且表示同一個概念,從一個公共的基本定義開始表示同一個概念,從一個公共的基本定義開始,出于不同目的,以增長方式擴展,每一次擴,出于不同目的,以增長方式擴展,每一次擴展都定義在一個單獨的包中。展都定義在一個單獨的包中。包的內聚性原則包的內聚性原則內聚性原則解決內聚性原則解決“一個包中應包含什么一個包中應包含什么” ” 重用發布等價原則重用發布等價原則 REP: Reuse-release REP: Reuse-release Equivalence PrincipleEquivale

17、nce Principle 重用的粒度就是發布的粒度。重用的粒度就是發布的粒度。 違背:一部分可重用,而另一部分完全不重用違背:一部分可重用,而另一部分完全不重用 共同重用原則共同重用原則CRP: Common-Reuse PrincipleCRP: Common-Reuse Principle 一個包中的所有類型應該是共同重用的。一個包中的所有類型應該是共同重用的。 違背:相互之間沒有緊密聯系的一組類型違背:相互之間沒有緊密聯系的一組類型 共同封閉原則共同封閉原則CCP: Common-Closure PrincipleCCP: Common-Closure Principle 一個包中所有

18、類型應對同一種變化共同封閉。一個包中所有類型應對同一種變化共同封閉。 違背:一個更改導致多個包的更改違背:一個更改導致多個包的更改 包的耦合性原則包的耦合性原則耦合性原則指導耦合性原則指導“包之間應該有哪些關系包之間應該有哪些關系” ” 無環依賴原則無環依賴原則ADP: Acyclic-Dependence ADP: Acyclic-Dependence PrinciplePrinciple :包的依賴關系不應有環:包的依賴關系不應有環 穩定依賴原則穩定依賴原則SDP: Stable-Dependencies SDP: Stable-Dependencies PrinciplePrincipl

19、e :朝著更穩定的方向建立依賴。:朝著更穩定的方向建立依賴。 違背:依賴于一個易變的包違背:依賴于一個易變的包 穩定抽象原則穩定抽象原則SAP: Stable-Abstractions SAP: Stable-Abstractions PrinciplePrinciple :包的抽象程度應與穩定程度一致。:包的抽象程度應與穩定程度一致。 違背:依賴于一個較具體包,而不是抽象包違背:依賴于一個較具體包,而不是抽象包無環依賴原則無環依賴原則ADP直接形成依賴環直接形成依賴環無環依賴原則無環依賴原則ADP間接形成依賴環間接形成依賴環如何消除依賴環,使包圖成為一個有向無環圖?如何消除依賴環,使包圖成為

20、一個有向無環圖?1 1、移動類型。只要遵循包的內聚性的、移動類型。只要遵循包的內聚性的3 3個原則個原則,就能消除大多數的直接依賴環。,就能消除大多數的直接依賴環。2 2、采用依賴倒置原則、采用依賴倒置原則DIPDIP。采用依賴倒置采用依賴倒置DIP將依賴方向逆轉將依賴方向逆轉如何消除依賴環,使包圖成為一個有向無環圖?如何消除依賴環,使包圖成為一個有向無環圖?3 3、構建新包。對于間接形成的依賴環,可以構建一、構建新包。對于間接形成的依賴環,可以構建一個新的包,然后將產生依賴的類型移到新包中,個新的包,然后將產生依賴的類型移到新包中,從而消除依賴環。從而消除依賴環。 穩定依賴原則穩定依賴原則S

21、DPSDP 包的穩定程度或者易變程度如何衡量?包的穩定程度或者易變程度如何衡量?穩定依賴原則穩定依賴原則SDPSDP SDPSDP原則要求一個包應依賴比它更穩定的包原則要求一個包應依賴比它更穩定的包,而不應依賴比它更易變的包。,而不應依賴比它更易變的包。接口接口 接口接口interfaceinterface是一種類元,表示一組相關的公共特是一種類元,表示一組相關的公共特征和職責約定。征和職責約定。 接口是類接口是類classclass的一種構造型的一種構造型stereotype;stereotype; 接口描述行為規范,但不描述行為如何實現。由一接口描述行為規范,但不描述行為如何實現。由一組類

22、提供接口的實現,根據操作的基調,提供具體組類提供接口的實現,根據操作的基調,提供具體的實現方法的實現方法methodmethod。 接口不能直接實例化創建對象。接口不能直接實例化創建對象。 一個接口的實例是實現該接口的類的實例。一個接口的實例是實現該接口的類的實例。 一般首字母大寫,建議用一般首字母大寫,建議用“I”I”開頭。開頭。 語法:圓圈,或方框語法:圓圈,或方框( (與類相似,僅描述各操作與類相似,僅描述各操作) )。供口和需口供口和需口 供口供口provide interfaceprovide interface:一個類所實現的接口,表示:一個類所實現的接口,表示該類與實現了該接口,

23、描述了該類元的實例向使用方提該類與實現了該接口,描述了該類元的實例向使用方提供的一組服務。供的一組服務。 需口需口required interfacerequired interface:一個類需使用的接口,表示:一個類需使用的接口,表示該類元通過該接口請求特定服務,即該類元依賴于該接該類元通過該接口請求特定服務,即該類元依賴于該接口。口。需口需口供口表示形式供口表示形式供口和需口供口和需口 如果需要查看接口內部的特征,就需要一種展開如果需要查看接口內部的特征,就需要一種展開方式:方式:接口展開形式、接口的實現及接口的使用接口展開形式、接口的實現及接口的使用注:接口中所有的特征都缺省為公共的注

24、:接口中所有的特征都缺省為公共的(public)(public)接口間的關聯與協作接口間的關聯與協作 一個接口與其他類元之間可能存在關聯,這一個接口與其他類元之間可能存在關聯,這意味著該接口的實現類元與其他類元之間存意味著該接口的實現類元與其他類元之間存在關聯。兩個接口之間的關聯隱含著這兩個在關聯。兩個接口之間的關聯隱含著這兩個接口的實現類元之間存在關聯。接口的實現類元之間存在關聯。 接口之間的關聯與協作接口之間的關聯與協作接口接口interfaceinterface的概念理解的概念理解 接口主要用于隔離行為規范與行為的具體實現,接口主要用于隔離行為規范與行為的具體實現,簡化行為調用復雜性,簡

25、化調用方編程。簡化行為調用復雜性,簡化調用方編程。 存在多種接口形式:存在多種接口形式:GUIGUI,圖形用戶接口,圖形用戶接口/ /界面,用例的形象描述界面,用例的形象描述UMLUML類型,類似類型,類似JavaJava接口,對一組操作的抽象、分組與接口,對一組操作的抽象、分組與命名。命名。APIAPI,應用編程接口,供編程調用而不用考慮其內部如,應用編程接口,供編程調用而不用考慮其內部如何實現。何實現。類的公共成員作為該類對象的調用接口,公共成員與保類的公共成員作為該類對象的調用接口,公共成員與保護成員作為子類的擴展接口。護成員作為子類的擴展接口。復合結構圖復合結構圖 復合結構圖也稱為組成

26、結構圖復合結構圖也稱為組成結構圖 Composite structure diagramComposite structure diagram 復合結構圖主要對復合結構圖主要對一組互聯元素一組互聯元素的的組成結構組成結構進行建模,表示運行時刻的實例通過通信鏈進行建模,表示運行時刻的實例通過通信鏈相互協作,以達到某些共同目標。相互協作,以達到某些共同目標。 復合結構圖主要描述復合結構圖主要描述內部結構內部結構、端口端口、協作協作等,是等,是UML2UML2的新圖。的新圖。復合結構圖的內部結構復合結構圖的內部結構 在運行時刻,內部結構表示一個實例內部多在運行時刻,內部結構表示一個實例內部多個元素之

27、間的互聯結構。個元素之間的互聯結構。類的內部結構的例子類的內部結構的例子復合結構圖的內部結構復合結構圖的內部結構 采用這種方式也能表示一個對象的內部構造。采用這種方式也能表示一個對象的內部構造。CarCar類的一個實例的內部構造類的一個實例的內部構造 在實例級別上描述的對象內部結構也應屬于一種對象圖。每在實例級別上描述的對象內部結構也應屬于一種對象圖。每個構造都是一個實例規范,表示為:個構造都是一個實例規范,表示為:名字名字/ /角色名:類元名角色名:類元名。復合結構圖的內部結構復合結構圖的內部結構 一個對象,也表示了創建該對象的構造器(一個對象,也表示了創建該對象的構造器(construct

28、orconstructor)。)。CarCar類的構造器與一個實例類的構造器與一個實例復合結構圖的內部結構復合結構圖的內部結構 使用復合結構圖表示內部結構有什么好處?使用復合結構圖表示內部結構有什么好處? 在一個類元或實例的方框之內表示其內部結構,在一個類元或實例的方框之內表示其內部結構,這樣既能這樣既能表示封裝結構表示封裝結構,也能表示內部元素之間,也能表示內部元素之間的的關系關系,而每個元素又可描述,而每個元素又可描述內部結構內部結構,這樣的,這樣的圖形更直觀、更易理解。圖形更直觀、更易理解。復合結構圖的端口復合結構圖的端口 端口端口Port: Port: 類元的一個性質,確定該類元與其外

29、類元的一個性質,確定該類元與其外部環境或與其內部各部件之間的一個部環境或與其內部各部件之間的一個交互點交互點。 供口供口provided interface: provided interface: 表示該類元的外部環表示該類元的外部環境通過端口向類元發出請求,即該類元向外部環境通過端口向類元發出請求,即該類元向外部環境提供某種服務。境提供某種服務。 需口需口required interfacerequired interface:表示該類元通過端口:表示該類元通過端口向類元發出請求,即環境向該類元提供服務。向類元發出請求,即環境向該類元提供服務。復合結構圖的端口復合結構圖的端口端口的例子端口

30、的例子復合結構圖的端口復合結構圖的端口端口總結:端口總結: 在在UMLUML中,一個端口確定了某個類元對外部的一個中,一個端口確定了某個類元對外部的一個交互點,端口的供口和需口規范了通過該端口所交互點,端口的供口和需口規范了通過該端口所進行的交互所必需的內容。進行的交互所必需的內容。 如果一個類元與其環境所有交互都通過端口進行如果一個類元與其環境所有交互都通過端口進行,那么該類元的內部就與外界完全隔離開,這樣,那么該類元的內部就與外界完全隔離開,這樣一個類元可用于任何語境中,只要符合端口所確一個類元可用于任何語境中,只要符合端口所確定的約束即可。定的約束即可。復合結構圖的協作復合結構圖的協作

31、一個協作一個協作(collaboration)(collaboration)描述了參與協作的多個描述了參與協作的多個元素元素( (或角色或角色) )的一種結構,各自完成一項特定功的一種結構,各自完成一項特定功能,通過協作能能,通過協作能提供某些新功能提供某些新功能。 協作協作ObserverObserver有兩個角色,分別由兩個類的實例有兩個角色,分別由兩個類的實例來扮演來扮演 。協作的例子協作的例子復合結構圖的協作復合結構圖的協作 一個協作可以僅表示多個角色,而將扮演特定角一個協作可以僅表示多個角色,而將扮演特定角色的類表示在協作的外部。色的類表示在協作的外部。ObserverObserver的兩個角色分別由兩個類的實例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論