17--對(duì)象約束語言_第1頁
17--對(duì)象約束語言_第2頁
17--對(duì)象約束語言_第3頁
17--對(duì)象約束語言_第4頁
17--對(duì)象約束語言_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第17章 對(duì)象約束語言 17.1 對(duì)象約束語言概述17.2 標(biāo)準(zhǔn)OCL類型17.3 OCL表達(dá)式17.4 用OCL表達(dá)對(duì)象性質(zhì)約束117.1 對(duì)象約束語言概述對(duì)象約束語言簡(jiǎn)稱OCL(Object Constraint Language),它是一種用于施加在指定的模型元素上約束的語言。OCL表達(dá)式以附加在模型元素上的條件和限制來表現(xiàn)對(duì)該對(duì)象的約束,其中包括附加在模型元素上的不變量或約束的表達(dá)式、附加在操作和方法上的前置條件和后置條件等。 2OCL的產(chǎn)生OCL的產(chǎn)生是為了解決約束表達(dá)的問題。OCL最初由IBM公司設(shè)計(jì)成功。OCL已經(jīng)為標(biāo)準(zhǔn)化組織OMG所接受,成為了UML標(biāo)準(zhǔn)的一部分。 OCL語言雖

2、然是一種形式化語言,但是它既具有形式化語言無二義性的特點(diǎn),又消除了形式化語言的復(fù)雜性。 3OCL的特點(diǎn)OCL是一種精確的、無二義性的語言,易于使用和掌握。OCL是一種規(guī)范說明性語言,所有有關(guān)實(shí)現(xiàn)的問題都不能用OCL來表達(dá)。OCL是一種純表達(dá)式語言,它是具有沒有任何副作用的聲明性語言。對(duì)OCL表達(dá)式的計(jì)算將返回一個(gè)值,計(jì)算不會(huì)改變系統(tǒng)的狀態(tài)。OCL是一種類型化語言,即OCL中的每個(gè)表達(dá)式都是具有類型的。OCL不是一種程序設(shè)計(jì)語言,不能用OCL編寫程序邏輯和控制流程。417.2 標(biāo)準(zhǔn)OCL類型OCL預(yù)定義的標(biāo)準(zhǔn)類型定義了一組基本類型和集合類型。 OCL的基本類型有“Boolean”、“Intege

3、r”、“Real”和“String”等,集合類型包括“Collection”、“Set”、“Bag”和“Sequence”等,這些標(biāo)準(zhǔn)類型是OCL表達(dá)式的組成部分。 517.2 標(biāo)準(zhǔn)OCL類型OCL標(biāo)準(zhǔn)類型的層次結(jié)構(gòu)617.2 標(biāo)準(zhǔn)OCL類型17.2.1 OclType類型17.2.2 OclAny類型17.2.3 基本類型17.2.4 集合類型17.2.5 OCL中的關(guān)鍵字717.2.1 OclType類型OclType類型是OCL預(yù)定義的和在模型中定義的類型,OclType允許訪問模型的元級(jí)別。OclType的操作見表17-1。 87.2.2 OclAny類型OclType類型是一個(gè)模型里

4、所有類型的上級(jí)類型。模型里所有的類都繼承由OclAny定義的特性。OclAny的操作見表17-2。 917.2.3 基本類型OCL定義了很多基本類型,它的基本類型和程序設(shè)計(jì)語言中的數(shù)據(jù)類型的含義類似。OCL還在基本類型上定義了一些操作,這些操作也與程序設(shè)計(jì)語言中的操作類似。 OCL的基本類型與操作見表17-3。1017.2.4 集合類型除了基本類型以外,OCL還定義了一些較為高級(jí)的標(biāo)準(zhǔn)OCL類型稱為集合類型。集合是成組的對(duì)象或元素,可以用來作為表達(dá)式計(jì)算過程中的結(jié)果。集合類型除了抽象數(shù)據(jù)類型Collection以外,還有Set(集)、Bag(袋)和序列(Sequence)等。1117.2.4

5、集合類型1. Collection 2. Set3. Bag4. Sequence121. Collection Collection是OCL中所有集合的抽象的上級(jí)類型。定義在Collection上的操作見表17-5。132. SetSet是不包括重復(fù)元素的對(duì)象組,Set中的元素是無序的。定義在Set上的操作見表17-6。 143. BagBag也是對(duì)象組,Bag和Set不同之處在于Bag中可以包含重復(fù)元素。定義在Bag上的操作見表17-7。 154. SequenceSequence和Bag相似,也可以包含重復(fù)元素,不過Sequence中的元素是有序的。定義在Sequence上的操作見表17

6、-8。 1617.2.5 OCL中的關(guān)鍵字與程序設(shè)計(jì)語言一樣,OCL也定義了一些關(guān)鍵字。OCL中的關(guān)鍵字見表17-9。 1717.3 OCL表達(dá)式 17.3.1 OCL表達(dá)式的語法17.3.2 操作符的優(yōu)先級(jí)18OCL表達(dá)式的特點(diǎn)OCL表達(dá)式可以附加在模型元素上。OCL表達(dá)式可以附加在操作上。OCL表達(dá)式可以指定附加在模型元素上的監(jiān)護(hù)條件。OCL表達(dá)式的計(jì)算原則是從左到右OCL表達(dá)式既可以使用基本類型又可以使用集合類型。 1917.3.1 OCL表達(dá)式的語法OCL表達(dá)式的語法用擴(kuò)展的巴斯科范式(EBNF)定義,在EBNF中:“|”表示選擇“?”表示可選項(xiàng)“*”表示零次或多次“”表示一次或多次

7、2017.3.1 OCL表達(dá)式的語法OCL基本表達(dá)式的語法用EBNF定義如下:PrimaryExpression:=literalCollection | literal | pathName time Expression ? FeatureCallparameters?| “(“ expression ”)” | ifExpressionLiteral:= | | “#” timeExpression:=”featrueCallParameters:=”(”(declarator)?(actualParameterList)?”)”ifExpression :=”if” expressio

8、n “then” expression “else” expression “endif” 2117.3.2 操作符的優(yōu)先級(jí)OCL中的操作符有優(yōu)先級(jí)順序。操作符的優(yōu)先級(jí)從高到低見表17-10。改變操作符的優(yōu)先順序可以使用括號(hào)。 2217.4 用OCL表達(dá)對(duì)象性質(zhì)約束 所謂對(duì)象性質(zhì),就是指一個(gè)對(duì)象的屬性、操作等對(duì)象有關(guān)的特性,在建模中具體是指定義的模型元素的特性。OCL表達(dá)式可以表達(dá)對(duì)模型元素性質(zhì)的約束,常見的使用情況有三種:不變量、前置條件與后置條件和let表達(dá)式。 2317.4 用OCL表達(dá)對(duì)象性質(zhì)約束17.4.1 不變量17.4.2 前置條件和后置條件17.4.3 let表達(dá)式與約束2417.4.1 不變量不變量常用于附加在模型元素上,它規(guī)定的約束條件通常需要該模型元素的所有實(shí)例都滿足。 2517.4.2 前置條件和后置條件OCL表達(dá)式附加在操作上可以規(guī)定一個(gè)前置條件或后置條件。前置條件

溫馨提示

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

評(píng)論

0/150

提交評(píng)論