資源描述:
《高級軟件工程(IDL與ORB接口)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、4、OMGIDLOMGIDLIDL特點IDL規(guī)范模塊接口提前聲明常量類型聲明序列any類型屬性例外操作簽名預(yù)編譯構(gòu)件對象模型:COM1、IDL特點CORBA規(guī)范中最有意義的內(nèi)容IDL類似于應(yīng)用程序接口(API)在客戶代碼與對象實現(xiàn)(服務(wù))之間定義了一個清晰的邊界OMGIDL是一個穩(wěn)定的標準自1991年公布以來,基本未改變是OMG其它被采納規(guī)范的基礎(chǔ)已經(jīng)被ISO采納(ISODIS14750)OMGIDL一個IDL文件可以向多個編程語言映射IDL是獨立于語言的CORBA規(guī)范包含IDL向具體編程語言的映射已經(jīng)發(fā)布映射規(guī)范的語言包括
2、:C,C++,SmallTalk,Ada95等IDL支持平臺獨立性IDL是獨立于平臺的由IDL指定的接口可以在不同的ORB與平臺上一致地表達只要程序員使用由IDL定義的接口不會遇到由于使用CORBA導致的平臺移植問題OMGIDL構(gòu)件對象模型:COMIDL是一個純規(guī)范,不涉及實現(xiàn)問題:IDL定義的接口不對對象實現(xiàn)進行任何約束例如:編程語言進程算法等將客戶從對象實現(xiàn)細節(jié)中清晰地分離出來有利于:軟件復用軟件演化這是IDL被廣泛接收的重要原因OMGIDL構(gòu)件對象模型:COMIDL設(shè)計的質(zhì)量至為重要IDL通常被用于定義應(yīng)用系統(tǒng)中的重要
3、接口例如:子系統(tǒng)接口企業(yè)模型接口庫接口等這些接口是復用、互操作的關(guān)鍵部分IDL的變化將影響系統(tǒng)中的多個軟件模塊好的IDL將:提高復用與互操作性提高系統(tǒng)的適應(yīng)性降低維護費用OMGIDL2、IDL規(guī)范IDL是一個嚴格的定義用OMGIDL編寫的接口定義完整地定義了接口并且完全指定了每個操作的參數(shù)OMGIDL接口提供的信息被用于開發(fā)使用接口操作的客戶客戶程序不用純描述性語言O(shè)MGIDL編寫而是用事先定義的映射從OMGIDL概念映射到的語言編寫的OMGIDL構(gòu)件對象模型:COMOMGIDL詞法遵循C++的詞法規(guī)則OMGIDL語法是已被
4、提議的ANSIC++標準的子集但比C++更嚴格:函數(shù)返回類型是強制的對操作聲明的每個正式參數(shù)都必須提供名稱由單個符號void組成的參數(shù)列表不允許作為空參數(shù)列表的同義字結(jié)構(gòu)、discriminated聯(lián)合和枚舉要求被標記整數(shù)類型不能定義為簡單的int或unsigned它們必須顯式聲明為short或longchar不能由signed或unsigned關(guān)鍵字限定OMGIDL構(gòu)件對象模型:COM(1)IDL模塊(Modules)為IDL定義創(chuàng)建分離的名空間防止不同領(lǐng)域中標識之間的沖突模塊可以嵌套以創(chuàng)建具有一定長度的限定范圍的名字引用
5、名字引用例子:Part::Assembly::ComponentWidgetOMGIDL3個模塊例子:moduleAssembly{typedefstringWidget;};modulePart{typedef::Assembly::WidgetPartWidget;moduleComponentPart{typedefPartWidgetComponentWidget;};};CORBAServices對模塊進行擴充使用每個服務(wù)定義了一個或多個模塊OMGIDL構(gòu)件對象模型:COM(2)IDL接口(Interface)ID
6、L接口定義分布對象顯露的細節(jié)每個IDL接口定義了一個新對象類型操作簽名是接口的核心是服務(wù)請求的入口點接口清晰地劃分了服務(wù)的實現(xiàn)與客戶之間的邊界接口的不足之處:未顯示代碼之間的關(guān)系OMGIDL構(gòu)件對象模型:COM例子:InterfaceAccount{//Accountdefinitions}InterfaceCheking:Account{//InheritsallAccountdefinitions//addsCheckingdefinitions};InterfaceSaving:Account{//Inheritsal
7、lAccountdefinitions//addsSavingsdefinitions};IDL支持多繼承OMGIDL構(gòu)件對象模型:COM(3)IDLForward用于聲明一個未定義的接口例子:interfaceEmployee;//forwarddeclarationstructEmployeeContacts{Employeesupervisor;Employeesecretary;Employeeunion_shop_leader;}interfaceEmployee{attributeEmployeeContacts
8、contacts;typedefstringJobTitle;//otherdefinitions}OMGIDL(5)IDL類型聲明(4)IDL常量(Constants)IDL中類型定義的目的在于支持操作簽名的強類型檢查類型聲明包括:IDL中特殊類型的重命名創(chuàng)建用戶定義的類型例如:枚舉結(jié)構(gòu)