




已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第17章 對象約束語言,17.1 對象約束語言概述 17.2 標準OCL類型 17.3 OCL表達式 17.4 用OCL表達對象性質(zhì)約束,17.1 對象約束語言概述,對象約束語言簡稱OCL(Object Constraint Language),它是一種用于施加在指定的模型元素上約束的語言。 OCL表達式以附加在模型元素上的條件和限制來表現(xiàn)對該對象的約束,其中包括附加在模型元素上的不變量或約束的表達式、附加在操作和方法上的前置條件和后置條件等。,OCL的產(chǎn)生,OCL的產(chǎn)生是為了解決約束表達的問題。 OCL最初由IBM公司設(shè)計成功。 OCL已經(jīng)為標準化組織OMG所接受,成為了UML標準的一部分。 OCL語言雖然是一種形式化語言,但是它既具有形式化語言無二義性的特點,又消除了形式化語言的復(fù)雜性。,OCL的特點,OCL是一種精確的、無二義性的語言,易于使用和掌握。 OCL是一種規(guī)范說明性語言,所有有關(guān)實現(xiàn)的問題都不能用OCL來表達。 OCL是一種純表達式語言,它是具有沒有任何副作用的聲明性語言。對OCL表達式的計算將返回一個值,計算不會改變系統(tǒng)的狀態(tài)。 OCL是一種類型化語言,即OCL中的每個表達式都是具有類型的。 OCL不是一種程序設(shè)計語言,不能用OCL編寫程序邏輯和控制流程。,17.2 標準OCL類型,OCL預(yù)定義的標準類型定義了一組基本類型和集合類型。 OCL的基本類型有“Boolean”、“Integer”、“Real”和“String”等,集合類型包括“Collection”、“Set”、“Bag”和“Sequence”等,這些標準類型是OCL表達式的組成部分。,17.2 標準OCL類型,OCL標準類型的層次結(jié)構(gòu),17.2 標準OCL類型,17.2.1 OclType類型 17.2.2 OclAny類型 17.2.3 基本類型 17.2.4 集合類型 17.2.5 OCL中的關(guān)鍵字,17.2.1 OclType類型,OclType類型是OCL預(yù)定義的和在模型中定義的類型,OclType允許訪問模型的元級別。 OclType的操作見表17-1。,7.2.2 OclAny類型,OclType類型是一個模型里所有類型的上級類型。模型里所有的類都繼承由OclAny定義的特性。 OclAny的操作見表17-2。,17.2.3 基本類型,OCL定義了很多基本類型,它的基本類型和程序設(shè)計語言中的數(shù)據(jù)類型的含義類似。 OCL還在基本類型上定義了一些操作,這些操作也與程序設(shè)計語言中的操作類似。 OCL的基本類型與操作見表17-3。,17.2.4 集合類型,除了基本類型以外,OCL還定義了一些較為高級的標準OCL類型稱為集合類型。 集合是成組的對象或元素,可以用來作為表達式計算過程中的結(jié)果。 集合類型除了抽象數(shù)據(jù)類型Collection以外,還有Set(集)、Bag(袋)和序列(Sequence)等。,17.2.4 集合類型,1. Collection 2. Set 3. Bag 4. Sequence,1. Collection,Collection是OCL中所有集合的抽象的上級類型。 定義在Collection上的操作見表17-5。,2. Set,Set是不包括重復(fù)元素的對象組,Set中的元素是無序的。 定義在Set上的操作見表17-6。,3. Bag,Bag也是對象組,Bag和Set不同之處在于Bag中可以包含重復(fù)元素。 定義在Bag上的操作見表17-7。,4. Sequence,Sequence和Bag相似,也可以包含重復(fù)元素,不過Sequence中的元素是有序的。 定義在Sequence上的操作見表17-8。,17.2.5 OCL中的關(guān)鍵字,與程序設(shè)計語言一樣,OCL也定義了一些關(guān)鍵字。 OCL中的關(guān)鍵字見表17-9。,17.3 OCL表達式,17.3.1 OCL表達式的語法 17.3.2 操作符的優(yōu)先級,OCL表達式的特點,OCL表達式可以附加在模型元素上。 OCL表達式可以附加在操作上。 OCL表達式可以指定附加在模型元素上的監(jiān)護條件。 OCL表達式的計算原則是從左到右 OCL表達式既可以使用基本類型又可以使用集合類型。,17.3.1 OCL表達式的語法,OCL表達式的語法用擴展的巴斯科范式(EBNF)定義,在EBNF中: “|”表示選擇 “?”表示可選項 “*”表示零次或多次 “”表示一次或多次,17.3.1 OCL表達式的語法,OCL基本表達式的語法用EBNF定義如下: PrimaryExpression:=literalCollection | literal | pathName time Expression ? FeatureCallparameters? | “(“ expression ”)” | ifExpression Literal:= | | “#” timeExpression:=” featrueCallParameters:=”(”(declarator)?(actualParameterList)?”)” ifExpression :=”if” expression “then” expression “else” expression “endif”,17.3.2 操作符的優(yōu)先級,OCL中的操作符有優(yōu)先級順序。 操作符的優(yōu)先級從高到低見表17-10。 改變操作符的優(yōu)先順序可以使用括號。,17.4 用OCL表達對象性質(zhì)約束,所謂對象性質(zhì),就是指一個對象的屬性、操作等對象有關(guān)的特性,在建模中具體是指定義的模型元素的特性。 OCL表達式可以表達對模型元素性質(zhì)的約束,常見的使用情況有三種:不變量、前置條件與后置條件和let表達式。,17.4 用OCL表達對象性質(zhì)約束,17.4.1 不變量 17.4.2 前置條件和后置條件 17.4.3 let表達式與約束,17.4.1 不變量,不變量常用于附加在模型元素上,它規(guī)定的約束條件通常需要該模型元素的所有實例都滿足。,17.4.2 前置條件和后置條件,OCL表達式附加在操作上可以規(guī)定一個前置條件或后置條件。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年無菌注射針行業(yè)深度研究分析報告
- 2025年高頻焊管型鋼項目可行性研究報告
- 2021-2026年中國矮壯素市場供需現(xiàn)狀及投資戰(zhàn)略研究報告
- 2025年鱈魚項目評估報告
- 2025年裝訂文件用釘項目投資可行性研究分析報告
- 2025年ABS制動系統(tǒng)實驗臺行業(yè)深度研究分析報告
- 科技公司如何實施綠色辦公與環(huán)保策略
- 科技產(chǎn)業(yè)如何踐行綠色環(huán)保
- 石墨行業(yè)市場調(diào)研與消費者行為分析
- 2025年中國電極夾頭市場調(diào)查研究報告
- 《設(shè)備科安全培訓(xùn)》課件
- 延長石油招聘筆試題庫
- 糖尿病與飲酒
- 建筑安全施工勞動保護考核試卷
- 烹飪工藝與營養(yǎng)基礎(chǔ)知識單選題100道及答案解析
- DB52T 1036-2015 建材產(chǎn)品中廢渣摻加量的測定方法
- 磁力聚星星選達人認證考試-初階
- 《心態(tài)管理》課件
- 裝修垃圾清運方案
- 2024年三違人員培訓(xùn)制度(四篇)
- 急救藥品課件教學(xué)課件
評論
0/150
提交評論