物理圖與對象約束語言_第1頁
物理圖與對象約束語言_第2頁
物理圖與對象約束語言_第3頁
物理圖與對象約束語言_第4頁
物理圖與對象約束語言_第5頁
已閱讀5頁,還剩82頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第9章物理圖與對象約束語言

?。為了構造一個面向對象的軟件系統必須考

慮系統的邏輯和物理兩個方面。

■?邏輯方面需要發現和描述對象類、接口、

協同、交互和狀態機等事物,物理方面需

要找出組件和節點。

?h|jML提供了兩種物理表示圖形:組件圖

和配置圖。

■▼組件圖表示系統中的不同物理組件及其聯

系,它表達的是系統代碼本身的結構。

HomeI〉

第9章物理圖與對象約束語言

?,配置圖由節點構成,節點代表系統的硬件,

組件在節點上駐留并執行。配置圖表示系

統的軟件組件與硬件之間的關系,它表達

的是運行系統的結構。

?組件圖和配置圖用于建立系統的實現模型。

?,對象約束語言(OCL)是用于表示對模

型元素的約束的語言,是UML的重要組成

部分。

Home

第9章物理圖與對象約束語言

?9.1組件圖

Home

9.1組件圖

9.1.1組件

9.1.2組件的種類

9.1.3組件的聯系

9.1.4組件圖的應用

9.1.5UML2.0中的相關變化

Homeia

9.1.1組件

?b組件(Component)是系統的物理的

可替換的單位,它把系統的實現打包,

算提供一組接口的實現(Realization)□

■,組件代表系統的一個物理實現塊,代表

邏輯模型元素如類、接口、協同等的物

理打包。

■,組件本身遵從和提供一組接口的實現,

它們代表了由駐留在組件內部的模型元

素所實現的服務。組件用于對系統配置

節點上的物理事物建立模型。

Homeia

9.1.1組件

?b常見的組件有系統的配置組件,如

COM+組件、JavaBeans等。

?,組件也可以是軟件開發過程中的產物,

如軟件代碼(源碼、二進制碼和可執行

碼)等。

Homeia

9.1.1組件

?▼組件的圖標是一個大矩形的左邊嵌二個小矩

形。組件必須有名字。

?▼簡單組件:只標出組件名。

?,在組件名之后或之下,可以用括在花括號中

的文字(即標記值)說明組件的性質,如

“jversion=2.0}”等。

?,擴充組件:當需要了解組件所包含的模型元

素時,則需要把每個模型元素的名字在組件的

大矩形框里列出,這稱為擴充的組件。

Homeia

9.1.1組件

,例:簡單組件與擴充組件示例,如圖9.1所示。

image,javaI-?―?system::dialog,dll

I|{version=2.0}

mymailer:Mailer

:Mailbox

:RcirtonwList

:MailQueue

圖9.1簡單組件與擴充組件示例

Home

9.1.1組件

?b組件在很多方面與對象類相似,如都有

名字,都有實例,都能實現接口,都存

在著聯系等。

■,組件的實例代表運行期間的可執行軟件

模塊。例如,圖9.1中的組件

“mymailer:Mailer”就是組件“Mailed的

一個實例,它存在于運行期間。組件的

實例只用于配置圖中。

Homeia

9.1.1組件

?b組件的性質的表示法與類相同。組件所

包含的模型元素的可視性同樣有“公

共”、“保護”、“私用”等。

■,但是組件和類有實質性的區別。

■,組件代表物理事物,而類代表事物的邏

輯抽象,因此組件可以用于配置圖的節

點中,而類不能。

?,一般組件只有操作,外界只能通過接口

接觸它們,而類可以直接有屬性和操作。

Homeia

9.1.1組件

?▼組件是一組邏輯元素(如類、協同等)的物

理實現。一個類可以由一個或多個組件實現。

?,組件和類的關系是一種依賴關系,組件擁有

類,類不存在了,包含它的組件也就不存在了。

?,通常,組件與類的依賴聯系不必用圖形顯式

表示,可以在說明文檔中予以說明。

Homeia

9.1.1組件

?,例:圖9.2中的組件“Mailer”依賴于類

“Mailbox"、“RoutingList”和“MailQueue”。

Mailer

i----------------------------1

________w

MailboxRoutingList

圖9.2組件與類的關系示例

Homeia

9.1.1組件

■,組件提供接口的實現,一個組件可以實

現一個或多個接口。

■,例:在圖9.3中的組件“字典”實現兩

個接口:“拼寫檢查”和“同義詞”。

0拼寫檢查

Q同義詞

圖9.3組件與接口示例

Homeia

9.1.2組件的種類

?,按照組件的作用可以把組件分為以下3種:

?1.配置組件(DeploymentComponent)

??配置組件是構成一個可執行的系統的必需的組

件,如動態連接庫(DLL)、執行程序(EXE)等。

??UML的組件可以表達典型的對象模型,如

COM+、CORBA、JAVABeans>Web頁、數據

庫表等內容。

HomeI〉

9.1.2組件的種類

?2.工作產品組件(WorkProductComponent)

?,工作產品組件是在軟件開發階段使用的組件,

它們包括源程序文件、數據文件等。

?,配置組件是根據工作產品組件建立的。

?3.執行組件(ExecutionComponent)

?,執行組件是執行系統的部件,如COM+的一個

對象,它是一個動態連接庫(DLL)的實例。

Home

9.1.2組件的種類

??UML的所有擴展機制都可以用于組件。例如,

可以在組件上加上標記值描述組件的性質,使

用構造型規定組件的種類。

?,UML定義了以下5個用于組件的標準構造型:

?1.?executable?

?構造型"executable〉〉說明一個組件可以在

系統的節點上執行。

?2.?library?

?構造型〈〈library〉〉說明一個組件是一個靜態

的或動態的對象庫。

Homeia

9.1.2組件的種類

?,UML定義了以下5個用于組件的標準構造型:

?3.?table?

?構造型v〈table>>說明一個組件代表的是一

個數據庫表。

?4.?file?

?構造型vv巾le>>說明一個組件代表的是一個

文檔,它包含的是源代碼或數據。

?5.?document?

?構造型"document〉〉說明一個組件代表的

是一個文檔。

Homeia

9.1.3組件的聯系

?▼組件之間可以有依賴聯系。組件之間的依賴

是指,一個組件的模型元素使用另一個組件的

模型元素。

?,組件也可以通過接口實現依賴聯系。

?,組件通過接口依賴的圖形表示方式有兩種,

一種是簡單的表示法,另一種通過擴充的接口

來袤達,如圖9.4所示。

?▼由一個組件實現的接口稱為輸出接口

(ExportInterface),意指該接口是組件提供

給其他組件的服務。一個組件可以提供多個輸

出接口。

Homeia

9.1.3組件的聯系

?,為一個組件所使用的接口稱為輸入接口

(ImportInterface),意指該組件遵從該接口,

建立在該接口上。

?,一個組件可以遵從多個輸入接口。一個組件

可以既有輸入接口,又有輸出接口。

?,通過輸入接口和輸出接口所實現的組件之間

的依賴稱為輸入依賴(ImportDependency)。

Home

9.1.3組件的聯系

?b例:組件的依賴接口示例,如圖9.4所

7KO

(a)

《interface〉

ImageObserver

—>■abort:int{fanalstatic}

error:int{fanalstatic!

imageUpdate():Boolean

(b)

圖9.4組件的依賴接口示例

Home

9.1.3組件的聯系

?丁根據組件的種類的不同,組件之間的依

賴可以分為兩種:開發期間的依賴和調

用依賴。

?▼開發期間的依賴是指在編譯階段和連接

階段的組件之間的依賴。

Home

9.1.3組件的聯系

?,例如,在圖9.5中,客戶組件依賴于供

應者組件。供應者組件在開發期間存在,

但并不需要在運行期間存在。

圖9.5組件的開發期間的依賴

Homeia

9.1.3組件的聯系

?b調用依賴(Call

Dependency)是指一個組

件調用或使用另一個組件

的服務,如圖9.6所示。

?,客戶組件調用或使用供應

者組件的服務,調用可以

直接進行,或通過接口進

行。供應者組件的元素可

以是組件的型或對象。

■,調用依賴可以發生在開發

期間的組件的型之間,用

組件圖表示;調用依賴也

可以發生在運行期間的組

件的實例之間,可在配置圖9.6組件的調用依賴

圖中表不。

Home

9.1.4組件圖的應用

?,組件圖由組件、接口和組件之間的聯系

構成,其中的組件可以是源碼、二進制

碼或可執行程序。

■,組件圖表示系統中的不同物理部件及其

聯系,它表達的是系統代碼本身的結構。

?,組件圖只有型(Type)的形式,沒有

實例形式。為了顯示組件的實例需要使

用配置圖。

Homeia

9.1.4組件圖的應用

?b組件圖用于下列事物建立模型:系統的

源代碼、系統的發布版本、物理數據庫、

自適應系統等。

■,組件圖也可以用于建立業務模型,此時

的組件是業務的過程和文檔。

?,組件圖還可以用于建立開發期間的軟件

產物的依賴關系,用于系統開發的管理。

Homeia

9.1.4組件圖的應用

?,例:一個組件圖的

示例,如圖9.7所示。

它由組件“調度程

序”、“計劃程序”、

“GU『(圖形界面),

接口“注冊登記”、

“更新”,以及它們

的聯系構成。

圖9.7組件圖示例

Homeia

9.1.4組件圖的應用

?,建立一個可執行系統的組件圖可按以下

步驟進行:

?(1)確定組件。

?(2)對組件加上必要的構造型。如標

準構造型〈〈executable〉〉、?library?>

?table?>?file?>?document?,

或自定義新的構造型。

Homeia

9.1.4組件圖的應用

?。建立一個可執行系統的組件圖可按以下

步驟進行:

?(3)確定組件之間的聯系。最常見的

組件之間的聯系是通過接口依賴。一個

組件使用(輸入)某個接口,另一個組

件實現(輸出)該接口。

?(4)必要時把組件組織成包。

?(5)繪制組件圖。

Home

9.1.4組件圖的應用

?,例:一個軟件產品的系統構成模型,如

圖9.8所示。它由可執行程序和動態連接

庫構成。

1animator,exe

]{version=5.0.1}

I

w

raytrce.dll

圖9.8可執行程序和動態連接庫建模示例

Home

9.1.4組件圖的應用

?,采用同樣的方法可以

為報表、文件與文檔建

??animator,exe

模。「{version=5.0.1}

-

?,例如,圖9.9是在圖w

9.8的基礎上增加了程animator,hip

序的初始化文件

“animator.ini”、數據眉render,dllshapes,tbl/

表“shapes.tb『和幫助

文件“animator.hlp,它t

們都用注釋節點表示。raytree,dll

圖9.9報表、文件與文檔建模

Homeia

9.1.4組件圖的應用

?,例:項目與資源管理系統PRMS的一個系統組件圖,如圖

9.10所示,它表示了開發期間和運行期間的實現系統的對象。

9.1.5UML2.0中的相關變化

?,在UML2.0中規定的組件圖標,如圖9.11所示。

?,在UML1.X中,組件用于代表物理結構,特別是運行時的系統

物理塊,如動態連接庫(DLL)等。在UML2.0中,組件代表系

統的一個模塊化部分,可以是指邏輯的,也可以是指物理的。

■,按照基于組件的開發方法,一個系統可以看作是由若干個組件

通過接口連接而成的。

圖9.11UML2.0的組件圖標

Home

9.1.5UML2.0中的相關變化

?,組件通過供給接口和需要接口定義其行

為。

?,組件的服務是一種型(Type)o

?▼組件在其環境中是一個可替換的單元。

不論是在系統的分析設計階段或運行時,

只要型相合(TypeConformant),即接

口的功能等價,一個組件可以重用,也

可以被另一個組件完全代替。

Home

9.1.5UML2.0中的相關變化

■▼在組件中,供給接口和需要接口可以組

織成端口(port),它們常在運行時被訪

問。

■,對于包含復雜內容的組件,常使用復合

結構把組件的內容進行劃分和聚集,使

得結構關系更為清晰。

Home

9.1.5UML2.0中的相關變化

?▼例:一個按照UML2.0規定圖標繪制的

簡單的組件圖,如圖9.12所示。

Home1a圖9.12組件圖示例

9.2復合結構

▼復合結構(CpmpositeStructure)和復合結構圖是

UML2.0中的新成分。

▼復合結構描述系統中某一部分(復合結構)的內部

結構,包括該部分與系統的其它部分的交互。復合

結構圖能夠展示這些部分的“內部”參與者的配置

情況。

V通過復合結構可以把一個復雜類或組件等分解成若

干部分,便于清晰地描述它們(系統)的內部組織

構造情況,明確地說明了支持該復合結構所包含的

分類符(類、組件等)的結構特性(Property)o

這里說的分類符可以是類、對象、組件等。

Homeia

9.2復合結構

,復合結構與包都是一種聚組機制。

,復合結構是模型元素在運行時刻的聚組,包

是編譯時刻的聚組。

b復合結構圖常用于組件圖,適宜表示組件,

以及如何把組件分解為不同的部件。

,復合結構圖類似于類圖,但它所表示的是內

部結構所包含的部件和連接符。

h部件(Part)是分類符將扮演的角色

(Role),不代表特定的實例(Instance)。

Homeia

g2復合結構

,部件的圖標與力象的圖層吳似,也是一個矩形

框,它的命名形式為:部件名:類名,但是名

稱之下不帶下劃線。

b部件之間可以有連接符(Connector)連接,

連接符用一條直線表示。連接符使得兩個部件

(或模型元素)之間能夠通信。

b委托連接符(DelegationConnector)是一種

連接該復合結構的對外委托端口和內部實現部

件的連接符,委托連接符用一條虛箭線表示。

,連接符的實現可以是一個簡單指針,或是復雜

H徽ome峰連接。

9.2復合結構

,例:一個表示對象類的復合結構的示例,如圖9.13所示。

,其中,“輪胎”類是一個簡單類。“轎車”類的內部結

構是一種復合結構,它包含四個部件:“左前輪”、

“右前輪”、“左后輪”、“右后輪”,代表轎車的四

個輪子,它們的型都是“輪胎”。兩個前輪部件和兩個

圖9.13類的復合結構示例

Homeia

9.2復合結構

在復合結構圖中還常需要表示復合結構和部

件所需要的接口和端口,以及部件的多重性。

,例:一個組件“訂貨”的復合結構,如圖

9.14所不,它有兩個端口。

HomeI〉圖9.14組件的復合結構圖示例

9.3配置圖

9.3.1節點

9.3.2節點的聯系

9.3.3配置圖的應用

9.3.4UML2Q中的相關變化

Bl[Home

9.3.1節點

?,節點(Node)是存在于運行期間的系

統的物理元素,節點代表計算機資源,

通常為處理器(Processor)或其他硬件

設備,系統的組件可以配置在節點上。

?,節點的圖標為一個三維立方體圖形,如

圖9.15所示。

圖9.15簡單節點與擴充節點示例

Homeia

9.3.1節點

?,節點必須有名字。節點的名字可以是一

個簡單名,或用路徑名。

?▼與對象類一樣,節點可以用標記值說明

名字的性質。

■,節點和對象類一樣可以區分為型和實例。

節點的型代表計算資源的不同類型,節

點的實例代表特定的具體的計算機資源。

Home

9.3.1節點

?▼對象和組件實例可以駐留在節點實例上,

而且可以從一個節點向另一個節點遷移。

■。節點執行組件,組件是被節點執行的事

物。

?。一個節點可以與其它的節點、組件、對

象有關聯。

■。節點和對象類、協同、組件等模型元素

一樣可以組織成包。

Homeia

9.3.1節點

?b例:在節點上安置組件,如圖9.16所示。

圖9.16用節點安置組件

Homeia

9.3.2節點的聯系

?▼節點與節點通過物理連接(Connection)發

生聯系,物理連接如以太網絡、共享總線等,

從硬件方面保證了系統的節點協同運行。

?,節點與節點、節點與組件之間存在著多種類

型的聯系,包括關聯(通信聯系)和依賴(支

持聯系、成為聯系)。

Homeia

9.3,2節點的聯系

?,1.通信聯系

?,通信聯系是節點之間的一種關聯,是節點之

間的通信路徑或連接的模型。

?,通信聯系的表示法是用一條實關聯線連接兩

個節點,如圖9.17所示。在實關聯線上可以加

構造型以表達節點間的通信路徑或連接的性質。

Homeia

9.3.2節點的聯系

圖9.17通信聯系表示法示例

Homeia

9.3.2節點的聯系

?2.支持聯系

??支持聯系是節點與組件或對象之間的依賴聯

系。如果一個節點與一個組件或對象存在著支

持聯系,說明該節點上駐留著該組件或對象,

該組件或對象能夠在該節點上執行。

??支持聯系的表示法是用一條虛箭線從節點指

向所連接的組件或對象,并可在虛箭線上加有

構造型〈〈supports〉>,如圖9.18所示。

Home1a

9.3.2節點的聯系

圖9.18支持聯系表示法

Homeia

9.3.2節點的聯系

?3.成為聯系

??成為聯系是組件與組件、組件與對象、

對象與對象之間的依賴聯系。成為聯系

不是節點之間的聯系,但是它是組件或

對象在節點之間的遷移的模型。

?^成為聯系的表示法是用一條虛箭線從一

個節點中的組件指向另一個節點中的組

件或從一個節點中的對象指向另一個節

點中的對象,并可在虛箭線上加有構造

型vvbecomes>>,如圖9.19所示。

HomeI〉

9.3.2節點的聯系

?b成為聯系表示法,如圖9.19所示。

圖9.19成為聯系表示法

Homeia

9.3.2節點的聯系

?3.成為聯系

?▼成為聯系可以用標記值“{time=...『說

明其時間性質,即組件或對象在什么時

間發生遷移活動。

?成為聯系說明源對象(或組件)和目標

對象(或組件)是在不同時間點的同一

個對象(或組件),而且它們的狀態和

向心不同。

Home

9.3.3配置圖的應用

?,配置圖由節點與節點之間的聯系構成。

在配置圖中也可以有組件,以及節點與

組件之間、組件與組件之間的聯系。

■,配置圖表示分布式系統的軟件組件與硬

件之間的關系,它表達的是運行系統的

結構。

■,配置圖主要用于對在網絡環境運行的分

布式系統建立系統物理模型,或者對嵌

入式系統建模。

Homeia

9.3.3配置圖的應用

?,配置圖也可以用于建立業務模型,此時

的“運行系統”就是業務的組織機構和

資源(人力、設備等)。

?b例:項目與資源管理系統PRMS的配置

圖,如圖9.20所示。

Homeia

Qa2西?音圖的后田

數據庫服務需

DB:數據庫

打E|3機打印機

應用

服務招

/

資涯營理

桌面資3原錯埋

容尸(執行碼、

圖9.20項目與資源管理系統PRMS的配置圖

Homeia

9.3.3配置圖的應用

?b建立一個客戶機/服務器系統或web應用系

統的配置圖一般可按以下步驟進行:

?(1)確定節點。

?(2)對節點加上必要的構造型。

?(3)確定聯系。

?把系統的組件如可執行程序、動態連接庫等

分配到節點上,并確定節點與節點之間、節點

與組件之間、組件與組件之間的聯系,以及它

們的性質。

?(4)繪制配置圖。

Homeia

b例:一個它是一個對

象配置圖,其中每一個節點都是可視的特定節點實例:

"DatabaseUnitServer”(數搪庫服務器)、“HeartUnit

Server"(心血管病服務器)與"aWindowsPC”(客戶機),

它們通過TCP/IP網絡連接。

?,節點上的組件及組件間的聯系:

1)uDatabaseUnitServer":"Objectdatabase"(對象數據

庫);”:HeartCareDomain”(心血管病領域)。依賴大素

2)“HeartUnitServer":“HeartUnitServerApplication”

(心血管病應用程序);"Objectdatabase”(對象數據

庫);”:HeartCareDomain”(心血管病領域);

”:ConfigureKnowledge"(參數配置)接口依賴aHeartUnit

ServerApplication^^

3)“aWindowsPC":uHeartUnitClientFacade"(心血管病

客戶),通過接口依賴“HeartUnitServer”中的組件“Heart

UnitServerApplication”

Home

PattabaseUnitServer

rr~i:Obiact

i|IDatabase

?----------------------------------A

L--J:HealthCax~aJ

i:■】Domairt

L;-」:Object

L」Database

:;::HealtkCaye

i-j-】Domain

A

:Con£ignra

[1I:HeartUnitKnowTedme

I;Ser-r

I_1ADPILicatLon

:ConEigtureUsei-w

圖9.21醫院診療系統配置圖(客戶機/服務器系統)

Homeia

9.3.4UML2.0中的相關變化

?在UML2.0中規定,配置圖的節點所代

表的計算機資源,不僅是指硬件設備

(Device),如處理器、讀卡機、移動

設備、通信設備等;而且可以是指包含

在設備內的執行環境。

?始執行環境是其它軟件的宿主,如操作系

統、J2EE容器、工作流引擎、數據庫等。

Homeia

9.3.4UML2.0中的相關變化

?h制品(Artifact)配置在節點上。在配

置圖中的制品就是系統開發過程中最終

產生的各種可執行代碼文件。

?實際上,制品代表組件(或任何可包裝

模型元素,如簡單的類)的物理形式,

組件由制品實現。

■制品的圖標為一個矩形,在制品的名稱

u,,

上方給出構造型?artifact?;或者,

在矩形的右上角貼上一個圖標“”。

HomeI〉

9.3.4UML2.0中的相關變化

?b例:圖922中有一個組件“Order"和一

個制品“Order.ja己制品“Order.jad是

一個可執行的Java代碼文件。組件

“Orded由制品“Orderjad實現。

<<component>>?

o-Order-c

itemjava.sql.connection

|<<manifest>>

<<artifact>>|~

Order.jar

Home

9.3.4UML2.0中的相關變化

?,例:節點”應用服務器”上的配置,如

圖9.23配置有執行環境和制品的節點

Homeia

9.4對象約束語言

?h對象約束語言(ObjectConstraint

Language,OCL)是一種形式語言,用

于表示UML模型中施加于模型元素上的

約束。

?,OCL是一種純表達式語言,它用表達

式表示約束。

?,OCL的表達式確保沒有副作用,對一

個OCL表達式進行求值將返回一個值,

它在系統模型中不改變。

HomeI〉

9.4對象約束語言

?,OCL是一種規格說明語言

(SpecificationLanguage)。所有有關

實現的問題都不能用OCL表達。

?bOCL不是一種程序設計語言,不能用

OCL編寫程序,不能用OCL編寫程序邏

輯和控制流程。

Homeia

9.4對象約束語言

Home

9.4.1標準型

?,OCL預定義的

標準型定義了一

組基本型和集合

型(Collection

Type)o

?,OCL標準型定

義為一個層次結

構,用類圖套示,

如圖9.18所不。

圖9.18OCL標準型

Homeia

9.4.1標準型

?bOCL基本型的含義與Java語言中的數

據類型的含義類似。

?^OCL基本型的例子如下:

?1,3,5.4

?true,false

?'appleTorange','strawberry'

Home

9.4.1標準型

?,對OCL基本型能施加的運算如下:

?OCL基本型運算

?Integer*,+/,abs

?Real*,+-,/,floor

?Booleanand,or,xor,not,

implies,if-then-else

?Stringtollpper,toLower,

substring,concat

Homeia

9.4.1標準型

?▼集合型是抽象型,它預定義了大量的運算,

可以維護集合。

?▼UML定義了3種集合型:“Set”、“Bag”、

“Sequence”。

?,集合型本身又可以構成集合型,形成集合型

的嵌套。

?,“Set”型是一個數學的集合,它包含的元素

不重復。

?▼“Bag”型類似“Set”型,但它包含的元素允

許重復。

Homeia

9.4.1標準型

,“Sequence”型類似“Bag”型,但它包含的元

素有序。

??“Set”、“Bag”和“Sequence”型的表示方

法是分別用關鍵字“Set”、“Bag”和

“Sequence",后跟一個花括號,其中有組成

該型的元素值。

?例:集合型的一些例子如下:

Set{1,3,5,7,9}

Sequence{1,3,4,5,2,3}

Bag{1,3,4,3,5)

Set{Set{1,3},Set{5,7},Set{9,11}}

Homelailection”型嵌套

9.4.1標準型

?,集合型的預定義運算主要有“select”(選

擇)、“reject"(剔除)、“collect"(集合)、

“forAII"(全體)、“exists"(存在)等。

?Collection->select(...)

?Collection->reject(...)

?Collection->collect(...)

?Collection->forAII(...)

?Collection->existsl(...)

Homeia

9.4.1標準型

?▼集合型的預定義運算主要有“select”(選

擇)、“reject"(剔除)、“collect"(集合)、

“forAII"(全體)、“exists"(存在)等。

?Collection->select(...)

?Collection->reject(...)

?Collection->collect(...)

?Collection->forAII(...)

?Collection->existsl(...)

?,例:集合型運算的一些例子如下:

?self.employee->select(age>50)->

notEmpty

HomeicK/larriorl\_>

9.4.2表達式

,OCL表達式對一個OCL型求值。

▼OCL的基本表達式的擴展巴斯科范式EBNF

定義如下:

PrimaryExpression:=literalcollection|literal

|pathNametimeExpression?Qualifier?

FeatureCallParameters?

|expression|ifExpression

literal:=<string>|<number>|<name>

Homeia

9.4.2表達式

?timeExpression:="@”<name>

?featureCallParameters:="("(declarator)?

(actualParameterList)?

?ifExpression:="if'expression“then”

expression“else”expressionuendif5

?▼最簡單的OCL基本表達式是一個literal(文

字),literal可以是一個字符串,或一個數字,

或在“毋號后跟一個模型元素或操作的名字。

?,OCL基本表達式也可以是literalcollection,

即literal的集合型。

Homeia

942表達式

?,OCL基本表達式可以是一個路徑名,后面可有

選項:時間表達式、限定符(Qualifier)或特征

調用參數。

?,時間表達式的格式是在符號“@”后面跟一個

名字,它確定性質的時間值。

?b特征調用參數是運算的實在參數表。

?,OCL基本表達式可以是一個條件表達式,其值

為一個Boolean值“True”或“False”。

?把一個OCL表達式用圓括號括起來也是一個

OCL基本表達式。

Home回

?,OCL表達式也臬解自素油或行,運算符的優

先級規定由高到低依次為:

圓點“「和箭頭的優先級最高;

一元運算符“not"和“」';

乘除運算符…和“/”;

加減運算符“+”和“」';

邏輯運算符“and”、“0廣和。0廣;

邏輯運算符“

溫馨提示

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

評論

0/150

提交評論