深入顯出 理解程式介面

2021-09-30 12:12:45 字數 2508 閱讀 3615

程式介面是作業系統為使用者提供的兩類介面之一,程式設計人員在程式中通過程式介面來請求作業系統提供服務。

進行介面的介紹,必須介紹一下程式語言發展的歷史才行,魯迅先生說過「治學先治史」,明白了程式語言發展的前世今生,才能知道這麼多語言為什麼會這樣,為什麼會那樣?

首先給大家介紹乙個概念:「粒度」,

什麼是粒度?

所謂粒度其實就是乙個程式中使用**單元的組合尺度

我們可以舉乙個例子:

沙礫??磚塊??房屋模板,我們設想去修建一座房子,其實有很多種修築方法,如果你不閒麻煩,可以使用沙礫一點點地建築,或者將沙礫燒製為磚塊,用磚塊來砌,甚至直接從工廠購買房屋的門,窗,牆元件來堆砌。這三種不同的方法代表了三種不同的組合尺度。沙礫是最小的單位,使用它搭建小的房子說不定還可以,但是毫無疑問,我們必須使用很多很多「沙礫」,不便於管理;磚塊比沙礫聚合了一層,可以用來修建較大的房子了;房屋模板是最高的尺寸,使用它可以快速地搭建大規模的房屋。這三種尺度的區別和聯絡,與我們編寫程式概念是有很大的相似之處的。

老師告訴我們這種面向過程語言的最基本的單元是過程和函式,它們是程式中的最小的元件。過程和函式可以實現最基本的**重用,當我們把某些固定功能的**使用過程和函式編寫後,我們可以在程式中呼叫它們而不必在任何需要的地方都寫上這樣一段**,這樣的好處是顯而易見的。在一些小型的程式裡面,使用過程和函式是合適的,但是在大中型程式中,它們的弊端就顯示出來,過程和函式的粒度太低了,如果我們乙個系統,有10000個函式和過程,我們的程式設計師將不得不花費大量的時間去尋找和維護它們,10000個沒有任何關係的函式和過程的管理難度是顯而易見的,就好像10000個人的企業一樣,如果沒有部門和職務,這還不亂了套?!

物件導向語言的出現,就是為了解決這個問題,別聽oo語言吹的天花亂墜,其實它出現就為乙個理由:提高程式設計的粒度。物件導向語言的基本單位是類 class,類封裝了很多資料成員和成員函式,過程,將最小元件的提高了乙個等級,我們需要直接操作的不是過程和函式了,而是乙個個更高層次上的類。我們把10000人分了很多部門,不同的部門負責不同的事宜,這樣公司終於可以走上正軌了。

做成了類class是否就萬事大吉了呢?不一定,新的問題隨之而來,也許我們有乙個部門的人很多,可以做很多事情,如何在部門內部實現更好的管理呢?好比我們有乙個類,它提供了很多種方法和屬性,這些方法和屬性其實可以分為一堆堆,為不同的功能服務,但是我們的類並沒有做這個管理。在ao中,map物件擁有很多功能,比如管理圖層,管理元素,管理選擇集,進行地圖顯示,每種不同的功能都有好多方法和屬性,現在這些屬性和方法是雜亂無章,沒有任何區別堆積在乙個類裡面的,當我們的程式設計師需要尋找乙個方法的時候,不得不乙個個去尋找,很不方便。

這個時候,介面inte***ce出現了,c++的發明者第一次提出純虛函式(其實就是介面)概念的時候,遭到了很多抵制,很多人都不明白介面的意義何在,我們用虛函式好好的,何必又出來個啥東西都沒有的空架子?說它是類吧,又不能實現產生乙個物件;說它是物件吧,又沒有方法體來使用。介面出來幹了一件好事,就是將類內部進行分類。對於map物件,我們可以做好幾個介面,這些介面中定義不同功能的方法,函式和屬性,map類實現這些介面,這樣我們可以使用介面定義,實現物件。因此,所謂介面就是一系列相關方法與屬性集合的定義。

dim pgraphicscontainer as igraphicscontainer

pgraphicscontainer可以使用的屬性和方法就只能是它定義的那部分了,而不能使用管理元素等的介面定義的方法和屬性,那我們如何使用其它的功能呢?這就是所謂的qi(query inte***ce)功能。從乙個介面查詢另乙個介面。

dim pgeofeaturelayer as igeofeaturelayer 

pgeofeaturelayer= pgraphicscontainer qi

好了,說了這麼多,已經走進了com的概念了,在正式介紹com以前我們得最後羅嗦一點:

計算機語言的發展歷史,其實就是一部不斷提高元件粒度的歷史,不斷提高**重用的歷史。以前我們使用過程和函式,後來我們使用類,現在我們使用介面,都是為了乙個目的,讓我們操作的元件在具體和抽象之間尋找乙個平衡點。太具體了,如過程和函式,就沒有了框架;太抽象,如類,就無法分別。

乙個**示例:

public inte***ce iform 

public class a: iform 

public void showdialog()

}

public class b:iform 

public void showdialog()

}

public class formfactory 

return null;

} }

PV操作 深入顯出

原文出處 之前寫過作業系統的文章,然後最近發現少了點什麼,仔細檢查發現,沒寫pv操作,那麼我們接下來就單獨為pv操作寫一篇部落格,讓大家不再懼怕pv操作,我們深入淺出的分析,讓大家輕鬆學習pv操作。學習pv操作之前,我們首先來了解兩個很基礎的概念 同步 互斥 互斥 借用別人的一句話 千軍萬馬過獨木橋...

深入理解java抽象與介面

1,abstract 修飾類 抽象類 2,abstract 修飾方法 抽象方法 3,抽象方法只有宣告,而沒有具體的方法實現部分 注意 抽象類中的抽象方法,強制其子類重寫抽象方法 抽象類不能建立物件,因為其含有無具體實現的方法 抽象類建立物件的方式可仿照多型 抽象類中不一定有抽象方法,但抽象方法一定在...

介面測試之深入理解HTTPS

首先,在理解https之前需要了解http。http hyper text transfer protocol 是超文字傳輸協議,是在網際網路上廣泛使用的一種資訊傳輸方式,通常瀏覽器與伺服器進行通訊使用的都是http協議。該協議因為其使用簡單 方便,隨著網際網路的發展也同時在壯大。而http協議本身...