第四章編寫對象接口_第1頁
第四章編寫對象接口_第2頁
第四章編寫對象接口_第3頁
第四章編寫對象接口_第4頁
第四章編寫對象接口_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、山東大學計算機科學與技術(shù)學院第四章編寫對象接口第四章編寫對象接口山東大學計算機科學與技術(shù)學院編寫對象接口編寫對象接口對象接口與對象實現(xiàn)對象接口與對象實現(xiàn)omg idl的語法與語義的語法與語義使用值類型使用值類型使用接口庫使用接口庫設(shè)計對象接口的準則設(shè)計對象接口的準則山東大學計算機科學與技術(shù)學院4.1 對象接口與對象實現(xiàn)對象接口與對象實現(xiàn)接口與對象實現(xiàn)之間是多對多關(guān)系接口與對象實現(xiàn)之間是多對多關(guān)系對象接口的定義應(yīng)包括對象的類型名字,對象上可對象接口的定義應(yīng)包括對象的類型名字,對象上可進行的操作,屬性,相關(guān)的數(shù)據(jù)類型定義,常量定進行的操作,屬性,相關(guān)的數(shù)據(jù)類型定義,常量定義,異常定義等信息義,異常

2、定義等信息山東大學計算機科學與技術(shù)學院4.1.2 接口定義語言接口定義語言對象實現(xiàn)對外提供信息和服務(wù)對象實現(xiàn)對外提供信息和服務(wù)信息和服務(wù)是對象實現(xiàn)與客戶程序之間的一種合約信息和服務(wù)是對象實現(xiàn)與客戶程序之間的一種合約接口定義語言是書寫這種合約的標準語言接口定義語言是書寫這種合約的標準語言idl是一種說明性語言,不是程序設(shè)計語言是一種說明性語言,不是程序設(shè)計語言山東大學計算機科學與技術(shù)學院idl的特點的特點面向?qū)ο竺嫦驅(qū)ο笥糜诙x分布式服務(wù)的規(guī)格說明用于定義分布式服務(wù)的規(guī)格說明定義復(fù)雜的數(shù)據(jù)類型定義復(fù)雜的數(shù)據(jù)類型獨立于具體的程序設(shè)計語言和特定的硬件,網(wǎng)絡(luò)和獨立于具體的程序設(shè)計語言和特定的硬件,網(wǎng)絡(luò)

3、和操作系統(tǒng)平臺操作系統(tǒng)平臺山東大學計算機科學與技術(shù)學院4.2 語法與定義語法與定義詞法規(guī)則詞法規(guī)則模塊聲明模塊聲明類型的聲明類型的聲明常量常量異常異常接口接口值類型值類型山東大學計算機科學與技術(shù)學院4.2.1 詞法規(guī)則詞法規(guī)則類似類似ansi c+詞法規(guī)則和預(yù)處理特性詞法規(guī)則和預(yù)處理特性關(guān)鍵字是大小寫敏感;標識符大小寫無關(guān)關(guān)鍵字是大小寫敏感;標識符大小寫無關(guān)山東大學計算機科學與技術(shù)學院4.2.2 模塊的聲明模塊的聲明用于限制標識符的作用域用于限制標識符的作用域一般將邏輯上密切相關(guān)的接口,類型,常量,異常一般將邏輯上密切相關(guān)的接口,類型,常量,異常等存放在同一模塊中等存放在同一模塊中山東大學計算

4、機科學與技術(shù)學院4.2.3 類型的聲明類型的聲明基本數(shù)據(jù)類型基本數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型 枚舉枚舉 結(jié)構(gòu)結(jié)構(gòu) union 序列和數(shù)組序列和數(shù)組山東大學計算機科學與技術(shù)學院4.2.4 常量的聲明常量的聲明轉(zhuǎn)換為該轉(zhuǎn)換為該idl接口生成的操作接口中的常量聲明接口生成的操作接口中的常量聲明接口內(nèi)接口內(nèi)接口外接口外山東大學計算機科學與技術(shù)學院4.2.5 異常的聲明異常的聲明引入關(guān)鍵字引入關(guān)鍵字exception專門定義異常專門定義異常山東大學計算機科學與技術(shù)學院4.2.6 接口的聲明接口的聲明屬性聲明屬性聲明參數(shù)傳遞參數(shù)傳遞單向傳遞單向傳遞上下文傳遞上下文傳遞繼承機制繼承機制抽象接口抽象接口山

5、東大學計算機科學與技術(shù)學院接口接口屬性屬性屬性不應(yīng)看作對象的狀態(tài)數(shù)據(jù),是一種特殊的操作屬性不應(yīng)看作對象的狀態(tài)數(shù)據(jù),是一種特殊的操作(0元操作元操作)可讀寫屬性被映射為可讀寫屬性被映射為java中重載的方法中重載的方法(getter(),setter()idl接口中的屬性被映射為接口中的屬性被映射為java語言的方法而不是語言的方法而不是變量,因此變量,因此idl接口可直接映射到接口可直接映射到j(luò)ava的接口而不的接口而不是類是類山東大學計算機科學與技術(shù)學院接口接口參數(shù)傳遞方向參數(shù)傳遞方向in:客戶到對象實現(xiàn)客戶到對象實現(xiàn)out:對象實現(xiàn)到客戶對象實現(xiàn)到客戶inout:雙向雙向in可直接映射到可

6、直接映射到j(luò)ava方法的參數(shù)方法的參數(shù)out,inout無法直接映射,利用持有類解決無法直接映射,利用持有類解決山東大學計算機科學與技術(shù)學院接口接口單向操作單向操作沒有返回值的操作可設(shè)計為沒有返回值的操作可設(shè)計為oneway操作操作對象實現(xiàn)不確認請求是否真的收到對象實現(xiàn)不確認請求是否真的收到山東大學計算機科學與技術(shù)學院接口接口上下文表達式上下文表達式附帶于操作中附帶于操作中指明客戶端那些影響對象請求執(zhí)行結(jié)果的,與發(fā)出指明客戶端那些影響對象請求執(zhí)行結(jié)果的,與發(fā)出調(diào)用請求的客戶環(huán)境有關(guān)的因素調(diào)用請求的客戶環(huán)境有關(guān)的因素山東大學計算機科學與技術(shù)學院4.2.7 值類型的聲明值類型的聲明作用作用典型用法

7、典型用法聲明形式聲明形式 抽象抽象 具體具體 動態(tài)確定參數(shù)傳遞動態(tài)確定參數(shù)傳遞 盒裝值類型盒裝值類型 定制值類型與可截斷值類型定制值類型與可截斷值類型山東大學計算機科學與技術(shù)學院值類型值類型作用作用在網(wǎng)絡(luò)中傳遞對象狀態(tài)信息,即為了實現(xiàn)按值傳遞在網(wǎng)絡(luò)中傳遞對象狀態(tài)信息,即為了實現(xiàn)按值傳遞對象對象山東大學計算機科學與技術(shù)學院值類型值類型典型用法典型用法按值調(diào)用傳遞參數(shù):創(chuàng)建實參的副本按值調(diào)用傳遞參數(shù):創(chuàng)建實參的副本遠程操作返回一個對象時創(chuàng)建返回的副本遠程操作返回一個對象時創(chuàng)建返回的副本實質(zhì):一個對象的目的是為了封裝數(shù)據(jù),或一個實質(zhì):一個對象的目的是為了封裝數(shù)據(jù),或一個app需要顯式地對某一對象進行

8、復(fù)制,該對象應(yīng)使需要顯式地對某一對象進行復(fù)制,該對象應(yīng)使用用idl值類型而不是接口類型,此時的對象實例稱值類型而不是接口類型,此時的對象實例稱為為“值值”山東大學計算機科學與技術(shù)學院值類型值類型抽象值類型抽象值類型只含操作的基調(diào)而沒有狀態(tài)數(shù)據(jù)和初始化數(shù)據(jù),因只含操作的基調(diào)而沒有狀態(tài)數(shù)據(jù)和初始化數(shù)據(jù),因而不能創(chuàng)建值的實例而不能創(chuàng)建值的實例可繼承多個抽象值類型,但不能繼承具體值類型可繼承多個抽象值類型,但不能繼承具體值類型山東大學計算機科學與技術(shù)學院值類型值類型具體值類型具體值類型類似類似idl結(jié)構(gòu)類型,但允許包含狀態(tài)數(shù)據(jù)和初始化結(jié)構(gòu)類型,但允許包含狀態(tài)數(shù)據(jù)和初始化數(shù)據(jù)數(shù)據(jù)可繼承單個具體值和多個抽

9、象值類型,還可支持單可繼承單個具體值和多個抽象值類型,還可支持單個具體接口和多個抽象接口個具體接口和多個抽象接口映射為映射為java的抽象類的抽象類對接口的支持關(guān)系映射為對接口的支持關(guān)系映射為java中類對接口的實現(xiàn)關(guān)中類對接口的實現(xiàn)關(guān)系系山東大學計算機科學與技術(shù)學院值類型值類型動態(tài)確定參數(shù)傳遞方式動態(tài)確定參數(shù)傳遞方式若形參類型為若形參類型為idl接口或值類型,則分別靜態(tài)地確定接口或值類型,則分別靜態(tài)地確定了該參數(shù)的傳遞方式為按引用調(diào)用和按值調(diào)用了該參數(shù)的傳遞方式為按引用調(diào)用和按值調(diào)用抽象接口可支持運行時動態(tài)選擇參數(shù)傳遞方式抽象接口可支持運行時動態(tài)選擇參數(shù)傳遞方式a抽象接口,抽象接口,p實參實

10、參規(guī)則:規(guī)則: p屬于具體接口或其子類型;且該類型是屬于具體接口或其子類型;且該類型是a的子類型;的子類型;p已注冊已注冊到到orb,則,則p被當作一個對象引用并按引用傳遞被當作一個對象引用并按引用傳遞 p屬于值類型且該值類型支持屬于值類型且該值類型支持a,則,則p被當作一個值并按值傳遞被當作一個值并按值傳遞 引發(fā)引發(fā)bad_param異常異常山東大學計算機科學與技術(shù)學院值類型值類型盒裝值類型盒裝值類型允許將非值類型的允許將非值類型的idl數(shù)據(jù)類型包裝為值類型數(shù)據(jù)類型包裝為值類型山東大學計算機科學與技術(shù)學院值類型值類型定制值類型與可截斷值類型定制值類型與可截斷值類型不采用默認的對象打包和解包操

11、作,而是由程序員不采用默認的對象打包和解包操作,而是由程序員手工實現(xiàn)由手工實現(xiàn)由custommarshal接口繼承的接口繼承的marshal()和和unmarshal()方法方法映射的映射的java抽象類繼承抽象類繼承customvalue,而不像具體值,而不像具體值類型那樣繼承類型那樣繼承streamablevalue不生成映射的不生成映射的read(),write()方法,需自己實現(xiàn)方法,需自己實現(xiàn)山東大學計算機科學與技術(shù)學院4.3 使用值類型使用值類型idl定義定義編譯編譯idl文件文件實現(xiàn)實現(xiàn)idl接口接口實現(xiàn)值類型實現(xiàn)值類型服務(wù)程序與客戶程序服務(wù)程序與客戶程序山東大學計算機科學與技術(shù)

12、學院4.4 使用接口庫使用接口庫定義定義結(jié)構(gòu)結(jié)構(gòu)管理工具管理工具編寫接口庫客戶程序編寫接口庫客戶程序山東大學計算機科學與技術(shù)學院4.4.1 接口庫的定義接口庫的定義接口定義也可由一個專門的服務(wù)進程來存儲或管理,接口定義也可由一個專門的服務(wù)進程來存儲或管理,即把即把idl文件中地對象接口定義組織成可運行的接文件中地對象接口定義組織成可運行的接口庫服務(wù),由該服提供對象接口的相關(guān)信息口庫服務(wù),由該服提供對象接口的相關(guān)信息表達的信息與表達的信息與idl文件完全相同,更適于動態(tài)訪問文件完全相同,更適于動態(tài)訪問常見用法:查找一個對象引用的所有常見用法:查找一個對象引用的所有idl接口定義接口定義客戶程序或?qū)ο髮崿F(xiàn)利用接口庫獲取一個編譯時未客戶程序或?qū)ο髮崿F(xiàn)利用接口庫獲取一個編譯時未知類型的對象引用的詳細接口信息,從而更好地利知類型的對象引用的詳細接口信息,從而更好地利用用dii,dsi山東大學計算機科學與技術(shù)學院4.4.2 結(jié)構(gòu)結(jié)構(gòu)接口庫將接口描述看作對象,為其定義了新的接口,接口庫將接口描述看作對象,為其定義了新的接口,無需引入數(shù)據(jù)庫機制無需引入數(shù)據(jù)庫機制層次結(jié)構(gòu)層次結(jié)構(gòu)庫標識:用于唯一標識一個接口庫對象的字符串庫標識:用于唯一標識一個接

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論