C 中介面與實現分離的技術

2023-02-09 01:12:04 字數 1418 閱讀 9380

在用c++寫要匯出類的庫時,我們經常只想暴露介面,而隱藏類的實現細節。也就是說我們提供的標頭檔案裡只提供要暴露的公共成員函式的宣告,類的其他所有資訊都不會在這個標頭檔案裡面顯示出來。這個時候就要用到介面與實現分離的技術。

下面用乙個最簡單的例子來說明。

類clxexp是我們要匯出的類,其中有乙個私有成員變數是clxtest類的物件,各個檔案內容如下:

檔案內容:

檔案內容:

檔案內容:

檔案內容:

為了讓使用者能使用我們的類clxexp,我們必須提供檔案,這樣類clxexp的私有成員也暴露給使用者了。而且,僅僅提供檔案是不夠的,因為檔案include了檔案,在這種情況下,我們還要提供檔案。那樣clxexp類的實現細節就全暴露給使用者了。

另外,當我們對類clxtest做了修改(如新增或刪除一些成員變數或方法)時,我們還要給使用者更新檔案,而這個檔案是跟介面無關的。如果類clxexp裡面有很多像m_lxtest那樣的物件的話,我們就要給使用者提供n個像那樣的標頭檔案,而且其中任何乙個類有改動,我們都要給使用者更新標頭檔案。還有一點就是使用者在這種情況下必須進行重新編譯!

上面是非常小的乙個例子,重新編譯的時間可以忽略不計。但是,如果類clxexp被使用者大量使用的話,那麼在乙個大專案中,重新編譯的時候我們就有時間可以去喝杯咖啡什麼的了。當然上面的種種情況不是我們想看到的!

你也可以想像一下使用者在自己程式不用改動的情況下要不停的更新標頭檔案和編譯時,他們心裡會罵些什麼。其實對使用者來說,他們只關心類clxexp的介面dosomething()方法。那我們怎麼才能只暴露類clxexp的dosomething()方法而不又產生上面所說的那些問題呢?

答案就是--介面與實現的分離。我可以讓類clxexp定義介面,而把實現放在另外乙個類裡面。下面是具體的方法:

首先,新增乙個實現類clximplement來實現clxexp的所有功能。注意:類clximplement有著跟類clxexp一樣的公有成員函式,因為他們的介面要完全一致。

檔案內容:

檔案內容:

然後,修改類clxexp。

修改後的檔案內容:

修改後的檔案內容:

通過上面的方法就實現了類clxexp的介面與實現的分離。請注意兩個檔案中的注釋。類clxexp裡面宣告的只是介面而已,而真正的實現細節被隱藏到了類clximplement裡面。.

h,就必須有前置宣告class clximplement,而且只能使用指向類clximplement物件的指標,否則就不能通過編譯。

在發布庫檔案的時候,我們只需給使用者提供乙個標頭檔案就行了,不會暴露類clxexp的任何實現細節。而且我們對類clxtest的任何改動,都不需要再給使用者更新標頭檔案(當然,庫檔案是要更新的,但是這種情況下使用者也不用重新編譯!)。

這樣做還有乙個好處就是,可以在分析階段由系統分析員或者高階程式設計師來先把類的介面定義好,甚至可以把介面**寫好(例如上面修改後的檔案和檔案),而把類的具體實現交給其他程式設計師開發。

c圖書管理系統的設計與實現

畢業 姓名指導教師 專業名稱軟體技術0801 所在系部資訊工程 二 一一年六月 畢業 設計 開題報告 目錄引言 第一章系統功能設計 1 1.1 系統設計目標 1 1.2 系統功能設計 1 1.3 開發工具的選擇 2 第二章系統資料庫設計與實現 3 2.1 系統資料庫設計 3 2.2 資料庫的實現 6...

膜分離技術在食品工業中的應用

周敏食品科學與工程 071240313 摘要 膜技術是一項新興的高效分離技術,為食品工業的發展發揮了重要的作用。在飲料工業 乳品工業 大豆蛋白分離工業 食品色素精製工業 醬油食醋生產工業 酶製劑工業中得到了廣泛應用,並產生了巨大的經濟效應和社會效應。關鍵詞 膜分離技術 食品工業 飲料工業 酶製劑工業...

GIS中的城市規劃技術及實現研究

陳俊 華南師範大學南海學院計算機系,廣東佛山 摘要 研究了基於元件的應用程式開發模型,給出了乙個基於嵌入式元件技術的 軟體開發的實施方案,設計 了乙個城市規劃管理資訊系統 關鍵詞 元件 地理資訊系統 城市規劃 中圖分類號文獻標識碼 文章編號 大多數 軟體在國內外城市規劃管理應用中,或是基於檔案系統,...