999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

STEP中EXPRESS語言到Java語言的映射方法

2022-02-19 10:12:18吳華李湉張世貴李心靈楊滔
機械工程師 2022年2期
關鍵詞:規則語言功能

吳華,李湉,張世貴,李心靈,楊滔

(1.中國航發成都發動機有限公司,成都 610503;2.西南石油大學機電工程學院, 成都 610500)

0 引言

為了實現我國由制造大國向制造強國的轉變,云制造、智能制造等先進的制造模式相繼被提出[1-3]。它們是面向產品全生命周期的數字化、網絡化、智能化制造系統。要實現這些先進的制造模式,實現產品信息建模方法標準化是十分重要的基礎性研究之一[4]。

產品模型數據交互規范(Standard for the Exchange of Product Model Data,STEP)是國際標準化組織(ISO)制定的描述整個產品生命周期內產品信息的標準,它提供了一種獨立于任何特定系統、能夠描述產品數據的中性機制[5]。

EXPRESS語言是產品描述性語言,不是一種實現語言,因此需要通過語言映射來實現對產品信息模型的利用。已有映射研究中,周受欽[4]認為要完成集成CAD系統的信息,EXPRESS與應用開發語言C++/Java之間映射關系是基礎,并簡述了映射的兩個關鍵點,數據類型的映射和數據關系的映射。趙繼政[6]認為EXPRESS語言和Java語言存在描述能力和計算能力的對比差距,但EXPRESS作為一種描述性語言,并不具備計算能力。此外,由于未建立一般的映射方法,部分研究者存在映射不正確、不準確、不完整的情況(例如:EXPRESS的REAL數據類型不需要考慮精度的問題; 未定義表達式及關鍵操作符如:=:、IN、LIKE等)。這使得在面向大量的EXPRESS描述的產品信息模型,實現映射的通用性、正確性難以保證。大多數CAx系統采用的是C/S模式,研究映射的目標語言多為C++語言。相比EXPRESS語言到C++語言的映射研究[7-10],建立EXPRESS到Java的映射研究較少[11]。要加快STEP的產品信息模型的快速應用,對于采用Java語言用于開發的研究者來說,建立一種通用性強的EXPRESS到Java的映射方法是必要的。

1 EXPRESS到Java的映射的總體框架

EXPRESS語言符合傳統設計語言,又在此基礎上吸收了面向對象的技術特性,這使其兼具了較強的語言表達力和描述優勢。EXPRESS語言對Java語言的映射可實施性較強,總體的映射復雜度相對較小。

本文在總結EXPRESS和Java的特點的基礎上,將映射方法分類為一致映射、簡易映射、預定義映射、功能改進映射、功能置換映射。依據上述具體情況說明所對應的映射方法,將EXPRESS語言的所有元素依據層級關系建立了到Java映射的總體框架,如圖1所示。

圖1 EXPRESS到Java映射總體框架

EXPRESS中的SCHEMA與Java中的包package進行簡易映射,映射方法和總體框架的關鍵內容映射在后文做進一步說明。

2 EXPRESS到Java的映射方法

2.1 數據類型的映射

EXPRESS語言的數據類型有簡單數據類型、聚合數據類型、命名數據類型、構造數據類型、廣義數據類型。大部分簡單數據類型和聚合數據類型的定義于與Java語言常見數據類型是一致的,但在相對復雜的數據類型有較大差距,如表1所示。

表1 數據類型的映射表

2.1.1 簡單數據類型

簡單數據類型有數字型(NUMBER)、實型(REAL)、整型(INTEGER)、字符串型(STRING)、布爾型(BOOLEAN)、邏輯型(LOGICAL)和二進制型(BINARY)。Java中存在雙精度浮點數double、整數類型int、字符串類型String、布爾類型boolean、enum(自定義)、二進制數類型byte與之映射。

2.1.2 聚合數據類型

聚合數據類型包括數組(ARRAY)、列表(LIST)、包(BAG)和集合(SET)。除BAG以外,在Java中存在Arrays類、ArrayList類、Set類與之映射。前兩者為簡易映射,只是聲明的關鍵詞不同,后者的SET聲明的關鍵詞相同,因此是一致映射。由于Java中不存在與BAG功能相近的類,需要預定義映射。BAG數據結構的特點是:1)允許出現重復的元素;2)元素的集合是一個無序的集合;3)包內的元素數量是可變的。

2.1.3 命名數據類型

命名數據類型是指那些可以在形式化規范中說明的數據類型,是EXPRESS語言最基本、最重要的元素,包括實體數據類型和定義數據類型。

實體數據類型需用戶賦值一個實體標識符,通過該標識符實現引用。實體映射的關鍵點有屬性、局部規則、子類和超類和抽象實體數據類型等。

1)屬性。屬性在EXPRESS語言中是描述實體的本質特征、特點和特性,這與Java中用成員變量描述實例的狀態是類似的。屬性主要分為顯示屬性、導出屬性和反向屬性。盡管ENTITY數據類型的屬性與Java類的成員變量有共同之處,但在導出屬性和反向屬性上仍然需要功能置換映射,其映射到Java屬性的處理過程及示例如表2所示。

表2 屬性映射表

屬性映射過程中,需要注意的是導出屬性需定義導出函數,并將該函數放置于構造函數與相關屬性的set函數中的尾部。從而達到EXPRESS導出屬性的功能。

2)局部規則。局部規則分為唯一性規則和定義域規則。唯一性規則在所給實體數據類型的所有實例之間控制屬性值的唯一性。定義域規則對給定實體數據類型的每個實例的屬性值或這些值之間的其他約束條件進行描述。

唯一性規則的映射為功能置換映射。主要是約束實體的所有實例的某個屬性的值不能相等,在Java中不存在約束成員變量的值唯一性的規則,因此需要功能置換映射。具體實現方法是先定義一個與約束規則對應的類變量的數組,以及監測該數組是否有重復元素的唯一性函數。唯一性函數要求放置于構造函數和相關屬性的set函數中的尾部。當數組有重復的值,唯一性函數將會有提示,從而實現唯一性規則。

定義域規則的映射也為功能置換映射,需要定義一個私有變量作為是否滿足定義域規則的狀態變量,同時需要定義一個定義域函數來判斷屬性是否屬于定義域內,若不在定義域內,則提示。與唯一性規則一樣,定義域函數應放置于構造函數和相關屬性的set函數中的尾部。

3)其它。子類與超類:EXPRESS的子類與超類與Java是一致的,是簡易映射。EXPRESS 通過SUPERTYPE、和SUBTYPE的關鍵字進行超類和子類的聲明,Java則采用extends關鍵字。EXPRESS的子類和超類聲明在ENTITY和ENDENTITY之間,而Java則在類定義的頭部。

抽象實體數據類型:EXPRESS允許聲明不能直接被實例化而僅可通過其子類實例化的ENTITY數據類型-抽象實體數據類型。這與Java的抽象類的功能是一致的,可以通過抽象類的方法簡易映射達到抽象實體數據類型的功能。

定義數據類型的映射:定義數據類型是定義某個數據類型的變量聲明操作,可與Java中變量和類實例的初始化映射。

2.2 表達式的映射

表達式由操作符、操作數及函數調用組合而成,并且要對它們進行運算以產生一個結果值。EXPRESS語言對操作符進行了定義并規定了與每一種操作符一起使用的操作數的數據類型,實現操作符的優先級映射和操作符的映射亦是模式映射的主要內容之一。

EXPRESS語言的操作運算符分為組件引用、一元操作符、取冪運算、乘法/除法運算、加法/減法運算、關系運算,共6個優先級。Java語言的操作符分為后綴、一元、乘性、加性、移位、關系、相等、按位與、按位異或、按位或、邏輯與、邏輯或、條件、賦值、逗號,共15個優先級。映射過程中,有以下3個注意點:

1)在Java中取冪、實例比較、成員操作、相似操作符在Java中沒有直接操作符與之對應,因此需要一定的處理以完成映射。對于取冪運算,采用Math.pow進行替代,對于實例比較、相似操作、賦值操作符的功能則需自定義映射,在Java中設計全局靜態函數實現其功能。

2)在映射過程中,部分操作符的優先級順序發生改變。例如或運算符及異或運算符的優先級低于了等號運算符和不等號運算符。又如取冪函數Math.pow的優先級上升到最高的0優先級。對于運算優先級上的改變,本文的解決方案是對于映射過程中只要存在運算符是帶有下劃線的操作符,一律加花括號( ),以保證運算先后順序的正確性。

3)當操作符是同一優先級別時,就需要考慮操作符的結合性,EXPRESS語言一律采用從左至右,部分操作符與Java操作符不同,這也影響這運算的順序。為了保證映射正確性,同樣采用花括號( )避免映射結合性的秩序問題。

此外,EXPRESS語言操作符中還存在實例比較、成員操作、相似操作三種操作符,需要在Java中預定義映射。實例比較操作符的映射:數字型、邏輯型、字符串型、二進制型及枚舉數據類型的實例比較,等價于對應的值比較操作符。因此Java映射對于上述類型采用值比較操作符進行返還結果值。EXPRESS的聚合實例和實體實例的比較操作符,需定義對應功能的全局靜態函數實現自定義映射。

成員操作符的映射:成員操作符的功能主要是判斷某個元素是否存在于某個聚合數據類型中,為真則返還TRUE,否則返還FALSE。實現方法同實例比較操作符。相似比較符的映射:相似比較符用于兩字符串的匹配。如果對應的任何字符不存在,則匹配失敗,結果為FALSE,匹配成功返還TRUE。在Java存在Pattern類可以實現這個匹配功能。

3 案例分析

現有一個EXPRESS模式,SCHEMA s。有4個實體數據類型:person、teacher、student、graduate。person實體含有屬性身份證ss_no(整型)、出生日期date(日期型)、編號id(String字符串型)。teacher實體繼承了person,將person中的id重寫為INTEGER整型,同時有定義域約束年齡小于21。student實體繼承person,定義域約束年齡大于5,選的課程需為定義的course枚舉數據類型的范圍中。graduate實體繼承student和teacher,定義域約束GRAD LEVEL IN teachers。定義course枚舉數據類型。利用上述映射方法,從EXPRESS模式到Java模式的映射結果如圖2所示。

圖 2 EXPRESS模式到Java模式的映射

4 結語

本文將映射方法總結并歸類為一致映射、簡易映射、預定義映射、功能改進映射和功能置換映射,構建了從EXPRESS語言到Java語言的總體框架。詳細論述了EXPRESS的數據類型、表達式等元素到Java的映射具體實現方法。依據該一般化映射方法實現了對SCHEMA s的EXPRESS模式到Java模式的映射。文中建立的一般化映射方法,適用于STEP標準中EXPRESS語言描述的信息模型的Java映射。大量現有的信息模型標準知識,為基于Java語言開發的CAD、CAPP、STEP-NC等系統提供了可借鑒的標準。

猜你喜歡
規則語言功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
撐竿跳規則的制定
數獨的規則和演變
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
讓規則不規則
Coco薇(2017年11期)2018-01-03 20:59:57
關于非首都功能疏解的幾點思考
TPP反腐敗規則對我國的啟示
累積動態分析下的同聲傳譯語言壓縮
我有我語言
主站蜘蛛池模板: 97免费在线观看视频| 国产中文一区a级毛片视频| 91国语视频| 欧美日韩第三页| 特级做a爰片毛片免费69| 五月天福利视频| 18黑白丝水手服自慰喷水网站| 91美女视频在线| 狠狠干综合| 国产一区二区三区精品久久呦| 情侣午夜国产在线一区无码| 日韩欧美国产中文| 欧美一级高清片久久99| 国产午夜在线观看视频| 一级香蕉视频在线观看| 亚洲人成影院在线观看| 欧美激情福利| 国产午夜精品一区二区三| 中文成人在线| 波多野结衣亚洲一区| 成年A级毛片| 精品国产乱码久久久久久一区二区| 国产九九精品视频| 四虎国产精品永久一区| 亚洲一区二区三区在线视频| 成人在线亚洲| a亚洲视频| 91香蕉国产亚洲一二三区 | 国产swag在线观看| 日韩福利视频导航| 日韩专区第一页| 亚洲娇小与黑人巨大交| 好紧好深好大乳无码中文字幕| 99久久国产综合精品2020| 九九久久精品国产av片囯产区| 色成人综合| 青青热久免费精品视频6| 国产精品99久久久久久董美香 | 亚洲福利网址| 美女内射视频WWW网站午夜| 欧美成人手机在线视频| 国产男人天堂| 亚洲欧洲国产成人综合不卡| 久久婷婷五月综合色一区二区| 青青草国产在线视频| 亚洲综合18p| 国产一级二级在线观看| 久青草免费在线视频| 免费毛片a| 成人在线观看一区| 色偷偷男人的天堂亚洲av| 狠狠色香婷婷久久亚洲精品| 欧洲成人免费视频| 国产精品三级av及在线观看| 青青青草国产| 国产麻豆精品手机在线观看| 国产亚洲精品97在线观看| 日韩成人午夜| 国产成人亚洲精品色欲AV | 国产精品毛片一区| 国产天天射| 天天摸夜夜操| 五月激情婷婷综合| 日日摸夜夜爽无码| 欧洲日本亚洲中文字幕| 手机在线免费不卡一区二| 一本视频精品中文字幕| 国产欧美高清| 毛片视频网| 人妻精品久久无码区| 91破解版在线亚洲| 人妻丰满熟妇av五码区| 国产白浆视频| 99re这里只有国产中文精品国产精品| www.91在线播放| 欧美色香蕉| 幺女国产一级毛片| 无码专区国产精品一区| 国产小视频在线高清播放| 国产在线观看一区精品| 亚洲中文字幕精品| 无码'专区第一页|