国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談用C++動態(tài)擴(kuò)展C#程序的方法

2014-04-02 14:23張儉王桂華
卷宗 2014年12期
關(guān)鍵詞:子類面向?qū)ο?/a>C語言

張儉 王桂華

摘 要:隨著計(jì)算機(jī)應(yīng)用領(lǐng)域越來越廣泛,許多軟件變得越來越復(fù)雜,代碼量也越來越龐大,開發(fā)團(tuán)隊(duì)人員不斷增加,這時(shí)候面向過程的開發(fā)模式就顯得有些吃力了,于是一種稱為面向?qū)ο蟮能浖_發(fā)方法應(yīng)運(yùn)而生,這就是后來的C++,它在C語言的基礎(chǔ)上增加了面向?qū)ο蟮墓δ?,故從某種程度上講,C語言是C++的子集。本文將主要探討用C++動態(tài)擴(kuò)展C#程序的方法。

關(guān)鍵詞:C++;擴(kuò)展;C#程序

C語言是一種結(jié)構(gòu)化語言,它主要側(cè)重于算法和數(shù)據(jù)結(jié)構(gòu),因此C程序設(shè)計(jì)是一種面向過程的開發(fā)方式,它強(qiáng)調(diào)的更多的是解決問題的算法,并通過適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)將相應(yīng)的過程轉(zhuǎn)化為可執(zhí)行的代碼。需要注意的是,雖然C++是在C語言的基礎(chǔ)上發(fā)展起來的,但并不是說C++比C語言高級,兩者的編程思想和應(yīng)用的領(lǐng)域不一樣,在各自的領(lǐng)域誰也不能替代誰。之所以說C++比C語言先進(jìn),只是因?yàn)槊嫦驅(qū)ο笤O(shè)計(jì)的概念使得C++程序設(shè)計(jì)更符合設(shè)計(jì)理念。C++中的C語言相對于原來的C語言有所加強(qiáng),因?yàn)樗肓酥剌d、內(nèi)聯(lián)函數(shù)等新功能,C++更是拓展了面向?qū)ο笤O(shè)計(jì)的內(nèi)容,如類、繼承、虛函數(shù)、模板和容器類等。

1 C++語言概述

C++語言是Bjarne Stroustup在C語言的基礎(chǔ)上開發(fā)出來的。它引進(jìn)了面向?qū)ο蟮母拍詈凸δ?,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)化程序設(shè)計(jì)十分不同的思維方法。C++是在C語言基礎(chǔ)上擴(kuò)充而成的,除了一些細(xì)微的差別外,C++可以算作是C的超集。C語言功能強(qiáng)、效率高、風(fēng)格簡潔,適用于大多數(shù)的系統(tǒng)程序設(shè)計(jì)任務(wù)。C++保留了C的這些優(yōu)點(diǎn)。C++的一條設(shè)計(jì)原則是擴(kuò)充C語言但不修改C語言。這樣,使得C++與C之間取得了兼容性。

面向?qū)ο蟪绦蛟O(shè)計(jì)一般從對象模型入手,讓這個(gè)模型能夠契合與之對應(yīng)的問題空間,通過對象來描述系統(tǒng)空間的實(shí)體,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程控制。關(guān)于對象這一概念,目前還沒有統(tǒng)一的定義。一般的,我們認(rèn)為對象是包含現(xiàn)實(shí)世界物體特征的抽象實(shí)體,而這些實(shí)體具有它,ff]自己的一些屬性和相關(guān)的操作方法,比如把人抽象化為一個(gè)對象,那么它就有性別、身高、體重、年齡等屬性,并且具有說話、眨眼、動手、動腳等能力。在程序設(shè)計(jì)領(lǐng)域,我們不妨用這樣的等式來進(jìn)行描述:對象=數(shù)據(jù)+作用于這些數(shù)據(jù)上的操作方法。

2 用C++動態(tài)擴(kuò)展C#程序的方法

在C++中,用類來描述具有相同屬性和操作方法的對象的集合,即類規(guī)定了這些對象的公共屬性和方法,而對象是類的一個(gè)實(shí)例。例如,假設(shè)人是一個(gè)類,那么,具體到某個(gè)人,則這個(gè)人(比如張三)就是一個(gè)對象。類與對象之間的關(guān)系,有點(diǎn)類似于程序設(shè)計(jì)語言中變量類型和變量的關(guān)系。面向?qū)ο蟮木幊谭椒ㄖ饕哂腥缦聨讉€(gè)基本特征:

1.抽象:抽象是指在描述一個(gè)目標(biāo)時(shí),只關(guān)注我們感興趣并對我們有用的部分,不必關(guān)心其中的細(xì)節(jié)。比如,我們在做一個(gè)員工考勤系統(tǒng)時(shí),對于對象員工,我們只關(guān)心他的姓名、工號以及所在的部門,而不必關(guān)心他的身高、體重等信息。抽象通常包括兩個(gè)方面,一是處理過程抽象,二是數(shù)據(jù)抽象。封裝是一種機(jī)制。封裝性是借助于一種新的結(jié)構(gòu)和數(shù)據(jù)類型機(jī)制類(class)來實(shí)現(xiàn)的。事物的組成成分用各種數(shù)據(jù)類型存儲,對這些成分的操作用函數(shù)來實(shí)現(xiàn)。把一個(gè)數(shù)據(jù)結(jié)構(gòu)同操作數(shù)據(jù)的函數(shù)(行為或方法)組合在一起,即把這些數(shù)據(jù)和函數(shù)封裝在一個(gè)類中,便于分辨事物的描述。這種封裝性還會保護(hù)類中的數(shù)據(jù)與函數(shù)安全,以防止外界干擾和誤用。例如,有一組數(shù)據(jù)是準(zhǔn)備畫一個(gè)圖形所需的信息,傳統(tǒng)的c方法是將數(shù)據(jù)與程序分別處理,程序設(shè)計(jì)者可以直接讀取數(shù)據(jù),但日后若發(fā)現(xiàn)這樣的處理結(jié)構(gòu)不太好需要修改時(shí),則需修改整個(gè)程序,而在C++中就不必如此麻煩。可通過關(guān)鍵字class重新定義類,使用原來的程序達(dá)到修改后的結(jié)果。

2.繼承:對象的一個(gè)新類從現(xiàn)有的類中派生,這個(gè)過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。假如把水果抽象為一個(gè)類,并把它作為基類,那么蘋果類就可以從水果類中派生出來并成為它的子類:派生類共有三種C++類繼承方式:公有繼承(public)、私有繼承(private)和保護(hù)繼承(protected),上面的例子使用的是公有繼承。對于公有繼承,基類的公有成員和保護(hù)成員可以作為其派生類的公有成員和保護(hù)成員,派生類的成員函數(shù)可以訪問基類中的公有成員和保護(hù)成員,無法訪問基類中的私有成員,派生類的對象可以訪問基類的公有成員:對于私有繼承,基類的公有成員和保護(hù)成員都作為其派生類的私有成員,在私有繼承時(shí),基類的成員只能由直接派生類訪問,而無法再往下繼承;對于保護(hù)繼承,基類的所有公有成員和保護(hù)成員都成為派生類的保護(hù)成員,基類的公有成員和保護(hù)成員只能被它的直接派生類成員函數(shù)或友元訪問。

構(gòu)造函數(shù)和析構(gòu)函數(shù)不能被繼承,因此構(gòu)造派生類的對象時(shí),需要對基類數(shù)據(jù)成員、新增數(shù)據(jù)成員和成員對象的數(shù)據(jù)成員進(jìn)行初始化,派生類構(gòu)造函數(shù)的參數(shù)表部分既需要包含子類某些數(shù)據(jù)成員的初始值,也要包含基類的數(shù)據(jù)成員的初始值。如果基類沒有默認(rèn)的構(gòu)造函數(shù),那么派生類必須具有給基類構(gòu)造函數(shù)提供參數(shù)的構(gòu)造函數(shù)。

C++的繼承特性很好地解決了軟件的可重用性問題。例如,所有的Windows應(yīng)用程序都有一個(gè)窗口,它們可以看作都是從一個(gè)窗口類派生出來的。但不同的應(yīng)用程序都有不同的用途,有的用于文字處理,有的用于圖像處理,有的用于音頻處理等,這是由于派生出了不同的子類,而各個(gè)子類都添加了各自不同的特性。

對象和類的概念的提出,不僅有利于模塊的重用性,而且有利于方法和數(shù)據(jù)的封裝,以保證模塊具有較好的獨(dú)立性,使得程序維護(hù)和修改較為容易,對應(yīng)用程序的修改僅限于類的內(nèi)部,因而可以將應(yīng)用程序修改帶來的影響減少到最低限度。

3.虛函數(shù)與多態(tài)性:C++的多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的,虛函數(shù)允許子類重新定義成員函數(shù),而子類重新定義父類的做法稱為覆蓋(Override),或者稱為重寫,但是,只有重寫了父類的虛函數(shù)才能體現(xiàn)多態(tài)性。那么,什么是虛函數(shù)呢?簡單地說,那些被“virtual”關(guān)鍵字修飾的成員函數(shù)就是所謂的虛函數(shù)。虛函數(shù)的作用是用來實(shí)現(xiàn)多態(tài)性(Polymorphism),多態(tài)性是將接口與實(shí)現(xiàn)進(jìn)行分離,即以共同的方法實(shí)現(xiàn),但因個(gè)體差異而采用不同的動作。

要理解好多態(tài)性,首先必須把多態(tài)性與函數(shù)重載這兩個(gè)概念區(qū)分開來。函數(shù)重載是指基于不同的參數(shù)列表(類型、個(gè)數(shù)或兩者皆不同),同一個(gè)函數(shù)名稱可以指向不同的函數(shù)定義。例如,對于如下所示的兩個(gè)同名函數(shù)Add,調(diào)用函數(shù)Add(1,2)和Add(1,2)的結(jié)果是不一致的,前者為3而后者為51。

3 結(jié)論

因此,在過去的軟件開發(fā)實(shí)踐中積累起來的大量的C的庫函數(shù)和實(shí)用程序都可以在C++中使用,而且C++語言的語法和C語言極為貼近。C語言的程序員是能夠很快和很容易地學(xué)會使用C++的。

參考文獻(xiàn)

[1]王大龍. 基于C#的動態(tài)圖形顯示設(shè)計(jì)與實(shí)現(xiàn)探討[J]. 軟件,2013,11:96-97.

[2]周建儒. 基于單繼承的“動態(tài)多態(tài)性”的分析與應(yīng)用[J]. 信息技術(shù),2014,03:162-164.

[3]王德超. 程序設(shè)計(jì)中的動態(tài)數(shù)組空間分配方法研究[J]. 軟件導(dǎo)刊,2014,04:6-8.

[4]馬瑞敏. OOPC++中的動態(tài)多態(tài)性及其底層實(shí)現(xiàn)機(jī)制研究[J]. 長治學(xué)院學(xué)報(bào),2014,02:54-56.

[5]李文娟,陳曉軒,龔立嬌,陳旭東. 基于動態(tài)性能空間的優(yōu)化控制方法設(shè)計(jì)[J]. 工程設(shè)計(jì)學(xué)報(bào),2014,05:456-468.

[6]韓翠翠. c#調(diào)用c++動態(tài)鏈接庫的分析與解決[J]. 民營科技,2013,02:67-68.

猜你喜歡
子類面向?qū)ο?/a>C語言
卷入Hohlov算子的某解析雙單葉函數(shù)子類的系數(shù)估計(jì)
基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開發(fā)
基于C語言的計(jì)算機(jī)軟件編程
關(guān)于對稱共軛點(diǎn)的倒星象函數(shù)某些子類的系數(shù)估計(jì)
面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
面向?qū)ο骔eb開發(fā)編程語言的的評估方法
論子函數(shù)在C語言數(shù)據(jù)格式輸出中的應(yīng)用
面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
大田县| 吉木乃县| 永丰县| 汉川市| 武汉市| 北票市| 盐边县| 安平县| 张家界市| 山阴县| 平原县| 伊吾县| 西青区| 瓦房店市| 铜山县| 山东省| 松滋市| 武陟县| 邓州市| 卢氏县| 内乡县| 尚志市| 高台县| 玛多县| 增城市| 石景山区| 宜州市| 江源县| 甘肃省| 康平县| 平乡县| 枣庄市| 吴堡县| 杭州市| 丰都县| SHOW| 巴彦淖尔市| 峨眉山市| 罗江县| 新野县| 偃师市|