www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 技術學院 > 基礎知識科普站
[導讀]程序接口是操作系統(tǒng)為用戶提供的兩類接口之一,編程人員在程序中通過程序接口來請求操作系統(tǒng)提供服務。面向過程語言最基本的單元是過程和函數。

程序接口是操作系統(tǒng)為用戶提供的兩類接口之一,編程人員在程序中通過程序接口來請求操作系統(tǒng)提供服務。面向過程語言最基本的單元是過程和函數。

進行接口的介紹,必須介紹一下程序語言發(fā)展的歷史才行,魯迅先生說過“治學先治史”,明白了程序語言發(fā)展的前世今生,才能知道這么多語言為什么會這樣,為什么會那樣?計算機出現以后,科學家相繼開發(fā)了多種語言,從smalltalk,Pascal,Basic,C語言,C++,java,.net等等,這些語言的發(fā)展步伐,可以看作是從面向過程向面向對象發(fā)展的一段歷史。很多面向對象的書在介紹自己的歷史的時候,都會給讀者介紹這一段歷史,并鼓吹OO(Object Oriented)編程是多么多么的優(yōu)異。問題是,很多剛開始學程序的人根本不知道為什么要有這個轉變,他們也很難理解OO語言中的虛函數,接口等概念到底為了什么而提出來。

我們在了解這一段歷史以前,首先給大家介紹一個概念:“粒度”,什么是粒度?作者認為所謂粒度其實就是一個程序中使用代碼單元的組合尺度,我們可以舉一個例子,沙礫??磚塊??房屋模板,我們設想去修建一座房子,其實有很多種修筑方法,如果你不嫌麻煩,可以使用沙礫一點點地建筑,或者將沙礫燒制為磚塊,用磚塊來砌,甚至直接從工廠購買房屋的門,窗,墻組件來堆砌。這三種不同的方法代表了三種不同的組合尺度。沙礫是最小的單位,使用它搭建小的房子說不定還可以,但是毫無疑問,我們必須使用很多很多“沙礫”,不便于管理;磚塊比沙礫聚合了一層,可以用來修建較大的房子了;房屋模板是最高的尺寸,使用它可以快速地搭建大規(guī)模的房屋。這三種尺度的區(qū)別和聯系,與我們編寫程序概念是有很大的相似之處的。在早期學習Pascal,老師告訴我們這種面向過程語言的最基本的單元是過程和函數,它們是程序中的最小的組件。過程和函數可以實現最基本的代碼重用,當我們把某些固定功能的代碼使用過程和函數編寫后,我們可以在程序中調用它們而不必在任何需要的地方都寫上這樣一段代碼,這樣的好處是顯而易見的。在一些小型的程序里面,使用過程和函數是合適的,但是在大中型程序中,它們的弊端就顯示出來,過程和函數的粒度太低了,如果我們一個系統(tǒng),有10000個函數和過程,我們的程序員將不得不花費大量的時間去尋找和維護它們,10000個沒有任何關系的函數和過程的管理難度是顯而易見的,就好像10000個人的企業(yè)一樣,如果沒有部門和職務,這還不亂了套?

面向對象語言的出現,就是為了解決這個問題,別聽OO語言吹的天花亂墜,其實它出現就為一個理由:提高編程的粒度。面向對象語言的基本單位是類 CLASS,類封裝了很多數據成員和成員函數,過程,將最小組件的粒度提高了一個等級,我們需要直接操作的不是過程和函數了,而是一個個更高層次上的類。我們把10000人分了很多部門,不同的部門負責不同的事宜,這樣公司終于可以走上正軌了。做成了類CLASS是否就萬事大吉了呢?不一定,新的問題隨之而來,也許我們有一個部門的人很多,可以做很多事情,如何在部門內部實現更好的管理呢?好比我們有一個類,它提供了很多種方法和屬性,這些方法和屬性其實可以分為一堆堆,為不同的功能服務,但是我們的類并沒有做這個管理。在AO中,map對象擁有很多功能,比如管理圖層,管理元素,管理選擇集,進行地圖顯示,每種不同的功能都有好多方法和屬性,這些屬性和方法是雜亂無章,沒有任何區(qū)別堆積在一個類里面的,當我們的程序員需要尋找一個方法的時候,不得不一個個去尋找,很不方便。這個時候,接口interface出現了,C++的發(fā)明者第一次提出純虛函數(其實就是接口)概念的時候,遭到了很多抵制,很多人都不明白接口的意義何在,我們用虛函數好好的,何必又出來個啥東西都沒有的空架子?說它是類吧,又不能實現產生一個對象;說它是對象吧,又沒有方法體來使用。接口出來干了一件好事,就是將類內部進行分類。對于map對象,我們可以做好幾個接口,這些接口中定義不同功能的方法,函數和屬性,map類實現這些接口,這樣我們可以使用接口定義,實現對象。因此,所謂接口就是一系列相關方法與屬性集合的定義。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

北京——2024年10月29日 亞馬遜云科技日前宣布,通過與光環(huán)新網與西云數據的緊密合作,在亞馬遜云科技(北京)區(qū)域和(寧夏)區(qū)域推出Amazon Lambda SnapStart功能,將基于Java Lambda函數的...

關鍵字: 函數 數據處理

北京2024年10月29日 /美通社/ -- 亞馬遜云科技日前宣布,通過與光環(huán)新網與西云數據的緊密合作,在亞馬遜云科技(北京)區(qū)域和(寧夏)區(qū)域推出Amazon Lambda SnapStart功能,將基于Java La...

關鍵字: START 亞馬遜 PS 函數

關于數據分析與可視化,以下介紹Pandas讀取數據以及保存數據的方法,畢竟我們很多時候需要讀取各種形式的數據,以及將我們需要將所做的統(tǒng)計分析保存成特定的格式。

關鍵字: 函數 Panda

深圳2024年8月15日 /美通社/ -- 近日,知名量化交易平臺水母量化正式推出了突破性的輪動交易策略回測功能,目前已進入公測階段。該功能實現了從策略設計、歷史回測到實盤自動交易一體化流程,幫用戶解決了策略驗證難、交易...

關鍵字: 編程 仿真 函數 開源

Python由荷蘭數學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。

關鍵字: python 函數 對象編程

測試數據綜合分析的絕佳工具,深受工程師和研究員歡迎

關鍵字: 后處理分析軟件 向導 函數

由上圖中可以知道進程地址空間中最頂部的段是棧,代碼中調用函數、定義局部變量(但不包含static修飾的變量)或聲明的類的實例等等都要使用??臻g,當函數執(zhí)行完(也就是程序執(zhí)行超過了這個函數的作用范圍的時候),操作系統(tǒng)會把該...

關鍵字: 進程地址 局部變量 函數

星標/置頂?公眾號,硬核文章第一時間送達!鏈接|?https://zhuanlan.zhihu.com/p/274473971題很多,先上題后上答案,便于大家思考問題點:1、C和C的特點與區(qū)別?2、C的多態(tài)3、虛函數實現...

關鍵字: 騰訊 函數 進程 AI

星標「嵌入式大雜燴」,一起進步!鏈接:https://www.cnblogs.com/jozochen/p/8541714.html一、問題復現穩(wěn)定復現問題才能正確的對問題進行定位、解決以及驗證。一般來說,越容易復現的問...

關鍵字: 嵌入式開發(fā) 函數 代碼 寄存器

基本上,沒有人會將大段的C語言代碼全部塞入main()函數。更好的做法是按照復用率高、耦合性低的原則,盡可能的將代碼拆分不同的功能模塊,并封裝成函數。C語言代碼的組合千變萬化,因此函數的功能可能會比較復雜,不同的輸入,常...

關鍵字: 函數 PEN C語言代碼 C語言程序
關閉