官术网_书友最值得收藏!

2.3 UML 2組成結(jié)構(gòu)

與UML 1.x不同,為了更清楚地表達(dá)UML的結(jié)構(gòu),從UML 2開始,整個(gè)UML規(guī)范被劃分成基礎(chǔ)結(jié)構(gòu)和上層結(jié)構(gòu)兩個(gè)相對(duì)獨(dú)立的部分,基礎(chǔ)結(jié)構(gòu)(Infrastructure)是UML的元模型,它定義了構(gòu)造UML模型的各種基本元素;而上層結(jié)構(gòu)(Superstructure)則定義了面向建模用戶的各種UML模型的語法、語義和表示。然而,從UML 2.5開始,為了消除冗余并簡化UML規(guī)范,基礎(chǔ)結(jié)構(gòu)部分不再作為UML規(guī)范的一部分,UML元類在UML規(guī)范相應(yīng)的部分中被完整地定義。

2.3.1 UML語法結(jié)構(gòu)

UML的抽象語法使用UML元模型來定義,而這個(gè)元模型本身也是用UML來定義的(準(zhǔn)確地說,是一個(gè)受限的UML子集,這個(gè)子集符合OMG的MOF規(guī)范)。這在嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)家眼里可能是一件不可思議的事情(一個(gè)新的概念是用它自己的語法結(jié)構(gòu)來定義的),但工程師認(rèn)為,只要能夠表達(dá)清楚所需要的語法概念即可。在UML規(guī)范中,主要采用UML類圖來描述各元素的抽象語法,采用約束機(jī)制和自然語言(文本)來描述模型語義。有關(guān)UML語法結(jié)構(gòu)的具體內(nèi)容,本書將在第2.4節(jié)中以概念模型的方式來介紹。下面僅以“類”這個(gè)最基本概念為例,介紹其在UML規(guī)范中是如何被定義出來的。

圖2-2是UML規(guī)范中“類”的抽象語法結(jié)構(gòu)。該圖清晰地描述了一個(gè)類的組成結(jié)構(gòu),還通過端點(diǎn)名(關(guān)聯(lián)關(guān)系兩端的文字)和約束規(guī)則(大括號(hào)中的文字)限定語法和語義。通過該圖,可以看出類(Class)是EncapsulatedClassifier和BehavioredClassifier兩個(gè)抽象分類器的具體實(shí)現(xiàn)。類的目的是描述對(duì)象的分類,并定義了那些刻畫對(duì)象結(jié)構(gòu)和行為的特征。類由內(nèi)部分類器(nestedClassifier)、屬性(ownedAttribute)、操作(ownedOperation)和響應(yīng)(ownedReception)四部分組成;此外,可以指定其父類(superClass)、定義其擴(kuò)展(extension),還可以指定其是否為抽象類(isAbstract)、是否為主動(dòng)類(isActive)。

圖2-2 類的元模型

需要注意的是,此處類的元模型結(jié)構(gòu)比第1章介紹的類結(jié)構(gòu)更復(fù)雜,第1章只介紹了類最常用的屬性和操作兩個(gè)部分;此處描述的是完整的類組成結(jié)構(gòu),包括4個(gè)組成部分,除了屬性和操作之外,還包括內(nèi)部分類器和響應(yīng)。內(nèi)部分類器是指這個(gè)類的內(nèi)部包含其他類或分類結(jié)構(gòu),如汽車由發(fā)動(dòng)機(jī)、車輪等部件組成,則在建模汽車類時(shí),發(fā)動(dòng)機(jī)、車輪等就是其內(nèi)部分類器,這些內(nèi)部分類器間的關(guān)系可以通過組合結(jié)構(gòu)圖進(jìn)一步描述。類的響應(yīng)是指類中用于響應(yīng)異步事件處理的操作函數(shù),這個(gè)概念在之前的UML版本中并沒有,最早是出現(xiàn)在UML的擴(kuò)展語言SysML中的,后來被引入U(xiǎn)ML 2.5中。在界面處理程序中,按鈕的單擊響應(yīng)事件(Click)函數(shù)就可以建模成界面類的響應(yīng)。

2.3.2 UML語義結(jié)構(gòu)

UML自身的語義與被建模系統(tǒng)的UML模型上所聲明的標(biāo)準(zhǔn)含義有關(guān),有時(shí)被稱為UML運(yùn)行時(shí)語義。通常,我們可以把UML模型劃分為兩類語義域。

(1)結(jié)構(gòu)語義(Structural Semantics)定義了在建模域中關(guān)于個(gè)體的UML結(jié)構(gòu)化模型元素的含義,這個(gè)含義可能只在某個(gè)特定的時(shí)間點(diǎn)是正確的。該類別有時(shí)也稱為靜態(tài)語義。

(2)行為語義(Behavioral Semantics)定義了在建模域中關(guān)于個(gè)體如何隨著時(shí)間變化而做出不同行為的UML行為模型元素。該類別有時(shí)也稱為動(dòng)態(tài)語義。

圖2-3來自UML 2.5規(guī)范,列出了UML語義域分層的詳細(xì)分解結(jié)構(gòu)。UML 2.5規(guī)范文本的主體內(nèi)容就是按照該結(jié)構(gòu)組織的。

圖2-3 UML語義域

UML結(jié)構(gòu)語義為行為語義提供基礎(chǔ),通過結(jié)構(gòu)化建模所規(guī)定的模型元素的狀態(tài)變化而形成行為語義的概念。UML結(jié)構(gòu)模型建立在一個(gè)通用的基礎(chǔ)結(jié)構(gòu)(Common Structure)之上,包括類型、命名空間、關(guān)系和依賴等概念。Common Structure具體的建模元素包括不同的分類器(Classifiers),這包括數(shù)據(jù)類型、類、信號(hào)、接口和構(gòu)件等;此外還包括簡單的值類型(Values)和包(Packages)等。

構(gòu)建在基礎(chǔ)結(jié)構(gòu)之上的UML基本行為語義為行為的執(zhí)行提供了一個(gè)基本框架,通用行為(Common Behavior)語義還定義了結(jié)構(gòu)化對(duì)象之間通過相關(guān)行為產(chǎn)生的通信。動(dòng)作(Actions)是UML中的基本行為單元,用于定義細(xì)粒度的行為;在此基礎(chǔ)上形成高層次的行為機(jī)制,包括狀態(tài)機(jī)(State Machines)、活動(dòng)(Activities)和交互(Interactions)等。

此外,還提供了一些既有結(jié)構(gòu)化又有行為的輔助建模結(jié)構(gòu),包括用例(Use Cases)、部署(Deployments)和信息流(Information Flows)。

主站蜘蛛池模板: 谷城县| 横山县| 社会| 平舆县| 都安| 吴桥县| 姜堰市| 舒城县| 临湘市| 渭源县| 沧州市| 原阳县| 广昌县| 天台县| 太湖县| 土默特右旗| 咸宁市| 龙川县| 石楼县| 周至县| 蕲春县| 清水河县| 海晏县| 荆州市| 宁安市| 宁安市| 黔东| 方城县| 汉中市| 舟山市| 阿合奇县| 南康市| 绥阳县| 静乐县| 泰来县| 荆州市| 河南省| 镇康县| 长宁县| 平武县| 卢湾区|