當前位置:編程學習大全網 - 編程語言 - 面向對象的編程接口

面向對象的編程接口

面向對象語言的出現就是為了解決這個問題。不要聽信OO語言的炒作。實際上,它的出現只有壹個原因:提高編程的粒度。面向對象語言的基本單位是類,它封裝了許多數據成員和成員函數、過程,將最小組件的粒度提高了壹個級別。我們需要直接操作的不是過程和函數,而是更高層次的類。我們把10000人分成了很多部門,不同的部門負責不同的事情,讓公司最終走上正軌。

上課可以嗎?不壹定,新的問題會隨之而來。也許我們有壹個部門,有很多人可以做很多事情。我們怎樣才能在部門內部實現更好的管理?例如,我們有壹個提供許多方法和屬性的類。這些方法和屬性其實可以分成堆來服務不同的功能,但是我們的類不做這種管理。在AO中,地圖對象有許多功能,如管理圖層、管理元素、管理選擇集和顯示地圖。每個不同的函數都有許多方法和屬性。這些屬性和方法是無序的,堆在壹個類裏,沒有任何區別。我們程序員需要找方法的時候,要壹個壹個找,很不方便。

這時,介介出現了。當C++的發明者第壹次提出純虛函數(實際上是接口)的概念時,遇到了很大的阻力。許多人沒有理解接口的重要性。虛函數我們用的好好的,為什麽出來壹個空架子什麽都沒有?假設是類,但不能產生對象;假設它是壹個對象,沒有方法體可以使用。接口做了壹件好事,就是對類內部進行分類。對於map對象,我們可以做幾個接口,分別定義不同函數的方法、函數和屬性,map類實現這些接口,這樣就可以用接口定義來實現對象。所以,所謂接口就是壹系列相關方法和屬性集的定義。

Dim pGraphicsContainer作為iGraphicsContainer

pGraphicsContainer = application . document . active view . focus map

pGraphicsContainer可以使用的屬性和方法只能是其定義的部分,而不能是管理元素等接口定義的方法和屬性。那我們怎麽用其他功能呢?這就是所謂的QI(查詢接口)功能。從壹個接口到另壹個接口的查詢。

Dim pGeoFeatureLayer作為iGeofeatureLayer

pGeoFeatureLayer = pGraphicsContainer QI

好了,我們講了這麽多,已經進入了COM的概念。在正式介紹COM之前,我們還得說最後壹件事:計算機語言的發展史,其實就是壹部不斷提高組件粒度和代碼重用的歷史。我們以前用過程和函數,後來用類和接口,都是為了壹個目的,讓我們操作的組件在具體和抽象之間找到平衡。太具體,比如程序和功能,沒有框架;太抽象了,比如階級,分不清。

壹個代碼示例:public interface form { void show();voidShowDialog();} public class A:IForm { publicvidshow(){ } publicvidshowdialog(){ } } public classb:IForm { publicvidshow(){ } publicvidshowdialog(){ } } public classformfactory { publicstaticIFormCreateInstance(string parm){ if(parm = = A){ return newa();else if(parm = = B)return new B();} returnnull}}這是邏輯的抽象。

這是具體的方法。

這就是編程的哲學。

  • 上一篇:表白送禮方式。
  • 下一篇:汽車方向盤向右偏壹點怎麽調整方向機的螺絲
  • copyright 2024編程學習大全網