面向?qū)ο蟪绦蛟O(shè)計-1_第1頁
面向?qū)ο蟪绦蛟O(shè)計-1_第2頁
面向?qū)ο蟪绦蛟O(shè)計-1_第3頁
面向?qū)ο蟪绦蛟O(shè)計-1_第4頁
面向?qū)ο蟪绦蛟O(shè)計-1_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第1 1講講 概述概述龔 勛 【】本課程教學(xué)概述教學(xué)特點與重點課時少,內(nèi)容多課時少,內(nèi)容多與與c語言的異同語言的異同OOP編程思想編程思想教材鄭莉、董淵等,鄭莉、董淵等,C+語言程序設(shè)計語言程序設(shè)計(第(第4版)版)自編教材自編教材學(xué)習(xí)建議認(rèn)真閱讀教材認(rèn)真閱讀教材編寫書上示例,熟練掌握編寫書上示例,熟練掌握 c+ 語法語法2這門課教授方法“能夠?qū)ΜF(xiàn)實世界中簡單問題的計算描述”面向?qū)ο蟮幕靖拍頿4類、對象、封裝、繼承、多態(tài)類、對象、封裝、繼承、多態(tài)面向?qū)ο蟪绦蛟O(shè)計最大優(yōu)點易于設(shè)計、便于維護易于設(shè)計、便于維護掌握與C的語言區(qū)別(習(xí)慣養(yǎng)成)編程方式(代碼組織、內(nèi)存管理、數(shù)據(jù)管理)編程方式(代碼組

2、織、內(nèi)存管理、數(shù)據(jù)管理)輸入輸出流輸入輸出流異常處理異常處理本講主要內(nèi)容(第1章)程序設(shè)計語言的發(fā)展面向?qū)ο笏枷肱c機制面向過程程序設(shè)計面向?qū)ο蟪绦蛟O(shè)計軟件工程化方法開發(fā)環(huán)境4軟件危機與程序設(shè)計方法論的演變軟件危機與程序設(shè)計方法論的演變“計算機軟件”一詞是1964年提出來的。這個時期,出產(chǎn)的軟件越來越多,規(guī)模越來越大。1962年美國金星探測器發(fā)射失敗并歸咎于程序錯誤,造成計算機界的巨大震動。這個時期相繼問世的大批軟件系統(tǒng),后來都紛紛發(fā)現(xiàn)其中存在不少錯誤。如:著名的IBM公司的OS360系統(tǒng)耗資2.17億美元的美國空軍高級后勤系統(tǒng),花費了幾千人年,竟需要推倒重來。阿波羅登月計劃,也毫不例外地受到了

3、軟件錯誤的沖擊。這一時期,可以說“沒有不出錯誤的軟件沒有不出錯誤的軟件”。軟件給人的印象是越來越不可靠,人們對使用軟件無不提心吊膽。1.1 程序設(shè)計方法與語言的發(fā)展歷史這幅圖景,被人們稱之為“軟件危機”,“軟件危機”的爆發(fā),促使人們總結(jié)反思出以下寶貴的經(jīng)驗教訓(xùn)寶貴的經(jīng)驗教訓(xùn):(1 1)程序的效率主要取決于算法的復(fù)雜度。)程序的效率主要取決于算法的復(fù)雜度。算法一經(jīng)確定,程序效率的大局已定;現(xiàn)有硬件速度越來越快;這兩方面使得依靠編程技巧掙來的效率已非常有限。結(jié)果:提出了算法時間算雜度與空間復(fù)雜度的概念;開設(shè)專門研究算法的“數(shù)據(jù)結(jié)構(gòu)”與“計算方法”課程。1.1 程序設(shè)計方法與語言的發(fā)展歷史(續(xù)1)(

4、2 2)軟件規(guī)模日益擴大,程序可靠性的問題越來越突出。)軟件規(guī)模日益擴大,程序可靠性的問題越來越突出。追求效率的細(xì)節(jié)而忽略了主要流程的清晰,把程序復(fù)雜化,是導(dǎo)致程序出錯的主要原因之一。同時,隨著硬件技術(shù)的進(jìn)步,新算法的涌現(xiàn),使人們在程序設(shè)計時,不必強調(diào)效率問題,指導(dǎo)思想應(yīng)當(dāng)不失時機地從“效率第一效率第一”轉(zhuǎn)向轉(zhuǎn)向“清晰第一清晰第一”。結(jié)果:于70年代末出現(xiàn)了第一個結(jié)構(gòu)化程序設(shè)計語言PASCAL;80年代初又進(jìn)一步提出和發(fā)展了面向?qū)ο蟪绦蛟O(shè)計語言。(3 3)程序生產(chǎn)要從根本上摒棄研制人員按愛好和習(xí)慣各自)程序生產(chǎn)要從根本上摒棄研制人員按愛好和習(xí)慣各自為政的個體手工業(yè)方式,而必須走向科學(xué)化、規(guī)范化

5、、工為政的個體手工業(yè)方式,而必須走向科學(xué)化、規(guī)范化、工程化、工業(yè)化。程化、工業(yè)化。結(jié)果:于60年代末提出了軟件工程方法學(xué)并逐步完善。1.1 程序設(shè)計方法與語言的發(fā)展歷史(續(xù)2)符合人類思維方式的編碼方式才是最清晰的。1.1 程序設(shè)計方法與語言的發(fā)展歷史(續(xù)3)1.1 C+ 與 JavaJAVA教科書如是說:教科書如是說:JAVA和C+都是面向?qū)ο笳Z言。也就是說,它們都能夠?qū)崿F(xiàn)面向?qū)ο笏枷耄ǚ庋b,繼承,多態(tài))。而由于c+為了照顧大量的C語言使用者, 而兼容了C,使得自身僅僅成為了帶類的C語言,多多少少影響了其面向?qū)ο蟮膹氐仔?!JAVA則是完全的面向?qū)ο笳Z言,它句法更清晰,規(guī)模更小,更易學(xué)它是在對

6、多種程序設(shè)計語言進(jìn)行了深入細(xì)致研究的基礎(chǔ)上,據(jù)棄了其他語言的不足之處,從根本上解決了c+的固有缺陷。 Java和c+的相似之處多于不同之處,但兩種語言問幾處主要的不同使得Java更容易學(xué)習(xí),并且編程環(huán)境更為簡單。1指針 JAVA語言讓編程者無法找到指針來直接訪問內(nèi)存。2多重繼承 c+支持多重繼承,Java不支持多重繼承3數(shù)據(jù)類型及類 Java是完全面向?qū)ο蟮恼Z言,Java中取消了cc+中的結(jié)構(gòu)和聯(lián)合, 消除了不必要的麻煩。4自動內(nèi)存管理5操作符重載6. Java不支持缺省函數(shù)參數(shù),而c十十支持7.“goto“語句 “可怕”的goto語句是c和c+的“遺物”8類型轉(zhuǎn)換 Java不支持c十十中的自

7、動強制類型轉(zhuǎn)換,如果需要,必須由程序 顯式進(jìn)行強制類型轉(zhuǎn)換。1.1 C+ 與 Java(續(xù))1.1.人類認(rèn)識世界和發(fā)展世界的過程人類認(rèn)識世界和發(fā)展世界的過程1.2 面向?qū)ο笏枷肱c機制 個體個體個性個性共性共性共性共性個性個性個體個體抽象抽象派生派生繼承機制繼承機制1.1.面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍顨w納的過程需要以大量的“實例”為基礎(chǔ)。這些實例稱為“對象對象”。對象在現(xiàn)實世界中也稱為“實體”,在知識層面也稱為“實例”。包括:物理對象物理對象(物理實體):在現(xiàn)實生活中看得見摸得著具有一定實際尺寸的實際存在的“物體”。比如:張三(人),太陽,這只花貓,那棵白菜等。邏輯對象邏輯對象(邏輯實體

8、):這類對象也是真實存在的,但不一定看得見摸得著。比如課堂上的“例子”,法官斷案時的“證據(jù)”,講道理時所需要擺的“事實”等。1.2 面向?qū)ο笏枷肱c機制(續(xù)2)“類類”是相似物體的高度抽象,或者說,類是相似對象的特征抽象。簡單來說,一個類都包含若干“成員”,這些成員代表了同類對象的“特征”:每個類的特征數(shù)量雖然有多有少,但都可以分為靜態(tài)部分和動態(tài)部分。前者稱為物理特征,或?qū)傩裕驍?shù)據(jù),后者稱為行為特征,或動作,或方法。歸結(jié)起來,一個類類是是由數(shù)據(jù)成員和方法成員構(gòu)成由數(shù)據(jù)成員和方法成員構(gòu)成的。1.2 面向?qū)ο笏枷肱c機制(續(xù)3)人人有有姓名、年齡、身高、體重,思想姓名、年齡、身高、體重,思想遇到突發(fā)

9、事件時有回應(yīng)遇到突發(fā)事件時有回應(yīng)樹有高度、寬度、命名適度澆水可以生長,扒掉樹皮就會死亡電腦有品牌、顯示器、主板、CPU加電就會運行,點擊就有反應(yīng)一個對象是個體存在,一個類只具有特征,但每一個特征都沒有具體值。一個簡單名詞構(gòu)成類。人們認(rèn)識世界的過程,是從對象到類的過程。1.2 面向?qū)ο笏枷肱c機制(續(xù)4)一個類是相同對象的共性。一個對象不僅具有特征,而且每一個特征都可以賦予具體值。在該名字前加上“這個”、“那個”等限定詞后則構(gòu)成對象。人們發(fā)展世界的過程,是從類到對象的過程。2. 類與對象類與對象對象和對象之間是有關(guān)系的,彼此在“通信”和“交互”。這種交互過程就稱為對象之間的消息傳遞消息傳遞。對象之

10、間的消息傳遞是依靠“消息請求”、“消息處理”和“消息應(yīng)答”過程來完成的。其中的“消息請求”和“消息應(yīng)答”存在與兩個對象之間,“消息處理”則是對象內(nèi)部的動作或活動。消息傳遞機制可以有效地屏蔽消息處理的具體過程和內(nèi)部細(xì)節(jié),只對外呈現(xiàn)出相應(yīng)的“接口”。1.2 面向?qū)ο笏枷肱c機制(續(xù)5)3. 消息傳遞消息傳遞正如,人對外提供的接口包括正如,人對外提供的接口包括“口口”、“耳耳”、“眼眼”等,但等,但“消息處理消息處理”的過的過程程大腦活動的細(xì)節(jié)和思維方法則是對大腦活動的細(xì)節(jié)和思維方法則是對外隱藏的。外隱藏的。1.2 面向?qū)ο笏枷肱c機制(續(xù)6完)3. 面向?qū)ο蟮臋C制面向?qū)ο蟮臋C制1. 1. 什么是面向過

11、程程序設(shè)計什么是面向過程程序設(shè)計? ?指程序設(shè)計工作主要圍繞設(shè)計解題過程來進(jìn)行。傳統(tǒng)指程序設(shè)計工作主要圍繞設(shè)計解題過程來進(jìn)行。傳統(tǒng)的程序設(shè)計語言稱為過程性語言。的程序設(shè)計語言稱為過程性語言。2. 2. 什么是結(jié)構(gòu)化程序設(shè)計思想?什么是結(jié)構(gòu)化程序設(shè)計思想?自頂向下、逐步求精;自頂向下、逐步求精;其程序結(jié)構(gòu)是按功能劃分為若干個基本模塊,這些模塊形成一個樹狀結(jié)構(gòu);各模塊之間的關(guān)系盡可能簡單,在功能上相對獨立;每一個模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成;其模塊化實現(xiàn)的具體方法是使用子程序。1.3 面向過程程序設(shè)計3. 結(jié)構(gòu)化程序設(shè)計的優(yōu)點(1)自頂向下逐步求精的方法符合人類解決復(fù)雜問題的普遍

12、規(guī)律,因此可以顯著提高編程效率。(2)用先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)的程序有清晰的層次結(jié)構(gòu),因此容易閱讀理解。(3)不使用GOTO語句僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動態(tài)執(zhí)行情況比較一致,因此,程序容易閱讀和理解,開發(fā)時也較容易保證程序的正確性,即使出現(xiàn)錯誤也比較容易診斷和糾正。(4)控制結(jié)構(gòu)有確定的邏輯模式,編寫程序代碼只限于使用很少幾種直截了當(dāng)?shù)姆绞?,因此源程序清晰流暢?.3 面向過程程序設(shè)計(續(xù)1)4. 結(jié)構(gòu)化程序設(shè)計的局限性(1)數(shù)據(jù)與處理數(shù)據(jù)的過程互相獨立,當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時,需要修改所有相關(guān)的過程,增加了程序變動和維護難度,并給程

13、序的可靠性及安全性帶來潛在的隱患。(2)可升級性及可重用性較差。升級或重用若僅局限于模塊內(nèi)部,比較方便,但涉及幾個模塊甚至模塊的重新劃分,最終可能導(dǎo)致全局性重新設(shè)計。(3)對復(fù)雜問題的描述能力有限。當(dāng)程序描述的客觀對象比較復(fù)雜(涉及大量數(shù)據(jù)),或功能不容易劃分為相對比較獨立的模塊時,則模塊設(shè)計時數(shù)據(jù)的共用,模塊間的數(shù)據(jù)交換都變得十分復(fù)雜甚至難以設(shè)計。1.3 面向過程程序設(shè)計(續(xù)2 )比如,有下面的需求:張三的語文書的第38頁的第1個字符是什么?李四的數(shù)學(xué)書的第50頁的第8個字符是什么?王五的外語書的第23頁的第20個字符是什么?1.3 面向過程程序設(shè)計(續(xù)4)結(jié)構(gòu)化抽象的例子char getx

14、(char *who,char *book,int page,int pos) /函數(shù)具體操作 void main()coutgetx(張三,語文,38,1);coutgetx(李四,數(shù)學(xué),50,8);coutgetx(王五,外語,23,20);需求大致一樣,區(qū)別的地方有4個:誰的書,什么書,第多少頁,第多少個字符面向?qū)ο蟪橄蟮睦觱oid main()cout 張三.語文.C381;cout 李四.數(shù)學(xué).C508;cout 王五.外語.C2320;1.3 面向過程程序設(shè)計(續(xù)5完)在該例子中,張三的語文和李四在該例子中,張三的語文和李四的語文完全可以不同,彼此獨立,的語文完全可以不同,彼此獨

15、立,能夠很好地實現(xiàn)個體維護而不影能夠很好地實現(xiàn)個體維護而不影響其他。響其他。面向?qū)ο蟪绦蛟O(shè)計方法主張以對象為單位。需求中的人(張三、李四等)都是對象,不同的書也都是對象,每個對象彼此獨立存在,互不干擾。1. 什么是面向?qū)ο蠓椒??首先,它將?shù)據(jù)及對數(shù)據(jù)的操作方法放在一起,作為一個它將數(shù)據(jù)及對數(shù)據(jù)的操作方法放在一起,作為一個相互依存、不可分離的整體(相互依存、不可分離的整體(稱為對象稱為對象)。對同類型對象)。對同類型對象抽象出其共性,形成類:類中的大多數(shù)數(shù)據(jù),只能用本類抽象出其共性,形成類:類中的大多數(shù)數(shù)據(jù),只能用本類的方法進(jìn)行處理(的方法進(jìn)行處理(封裝性封裝性)。類通過一個簡單一外部接口。類通

16、過一個簡單一外部接口與外界發(fā)生關(guān)系,對象與對象之間通過消息進(jìn)行通信與外界發(fā)生關(guān)系,對象與對象之間通過消息進(jìn)行通信。這樣,程序模塊間的關(guān)系就更為簡單,程序模塊的獨立性、數(shù)據(jù)的安全性就有了很好的保障。另外,類還具有繼承性繼承性與多多態(tài)性態(tài)性,還可以大大提高程序的可重用性可重用性,使得軟件的開發(fā)與維護都更為方便。1.4 面向?qū)ο蟪绦蛟O(shè)計(1)認(rèn)為客觀世界是由各種對象對象組成的,任何事物都是對象,復(fù)雜的對象可以由比較簡單的對象以某種方式組合而成。(2)對象用程序語言中稱為類類(class)的數(shù)據(jù)結(jié)構(gòu)來描述。一個類由一組數(shù)據(jù)(稱為成員變量或?qū)傩裕┖鸵唤M方法(即一組操作,由若干子程序?qū)崿F(xiàn))構(gòu)成。數(shù)據(jù)表示類

17、的狀態(tài)、性質(zhì)、屬性等,而方法完成對數(shù)據(jù)的處理。(3)按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。子類具有基類的共性(稱為繼承繼承-Inheritance)與自身的個性。(4) 對象彼此之間僅能通過傳遞消息傳遞消息互相聯(lián)系。2. 面象對象方法的四個要點:一切局部于對象的私有信息,都被封裝在該對象類的定義中,就好象裝在一個不透明的黑盒子中,在外界是看不見的,更不能直接使用,這就是“封裝性”。面向?qū)ο蟮姆椒梢杂萌缦碌姆匠淌絹砀爬ǎ篛OObjects+Classes+Inheritance+Communication With Messa

18、ges注意:注意:只有同時使用了以上四個要素(對象、類、繼承和消息)的方法,才是真正面象對象的方法。例:對象抽象化的實例。(1) 客觀世界中“筆”的概念就可以抽象為一個基類對象,筆又可分為鋼筆、鉛筆、圓珠筆、毛筆等,因此可以在基類的基礎(chǔ)上派生出如下的類對象體系。1.4 面向?qū)ο蟪绦蛟O(shè)計(續(xù)2)筆筆鋼筆鋼筆鉛筆鉛筆圓珠筆圓珠筆毛筆毛筆基類子類(2)考察學(xué)校的所有人員,包括學(xué)生、教師、工人、職員、干部,我們可以將“人”抽象為一個基類對象,用姓名、生日、性別、民族、籍貫等數(shù)據(jù)項構(gòu)成“人”這一基類的屬性;在此基礎(chǔ)上派生出學(xué)生、教師、工人、職員、干部各個子類。進(jìn)一步以“學(xué)生”類為例,又可派生出本科生、專

19、科生、研究生子類,“本科生”子類又可派生出統(tǒng)招本科生、網(wǎng)院本科生、成教本科生等。以“學(xué)生”子類為例,它具有基類“人”所具有的公共屬性,并擴展出個性化的新屬性,比如:學(xué)號、班級、專業(yè)、成績等。1.4 面向?qū)ο蟪绦蛟O(shè)計(續(xù)3)對基類“人”的基本操作可包括:對各屬性域賦值,輸入輸出各屬性域等;對“學(xué)生”類的基本操作顯然可繼承基類“人”的上述操作,它還可以具有自己的基本操作,比如:登記、修改、查詢、打印成績;變更班級和專業(yè)等。人人學(xué)生學(xué)生教師教師工人工人基類基類子類子類本科生本科生??粕鷮?粕芯可芯可?.4 面向?qū)ο蟪绦蛟O(shè)計(續(xù)4)3. 面象對象方法的主要優(yōu)點(1)與人類習(xí)慣的思維方法比較一致)與

20、人類習(xí)慣的思維方法比較一致(2)穩(wěn)定性好)穩(wěn)定性好OOP用類來模擬現(xiàn)實實體的狀態(tài)和行為,在軟件生命期內(nèi),客觀實體一般都具有不變性,因此程序的穩(wěn)定性教好,無需頻繁變動。(3)可重用性好)可重用性好可以用已有的類體系來構(gòu)造新的程序,OOP也稱為“軟件IC”,即類似于搭積木,在父類的基礎(chǔ)上建立對象實例或派生新的類,可以很容易對程序功能進(jìn)行修改和擴充。(4)可維護性好)可維護性好(5)特別適合軟件的工業(yè)化生產(chǎn)和連續(xù)升級開發(fā))特別適合軟件的工業(yè)化生產(chǎn)和連續(xù)升級開發(fā)1.4 面向?qū)ο蟪绦蛟O(shè)計(續(xù)5)4. 面向?qū)ο蠓椒ǖ娜秉c(1)程序的編譯和執(zhí)行對存貯空間的要求較高)程序的編譯和執(zhí)行對存貯空間的要求較高。(2

21、)OOP程序的效率在很多時候不如同樣規(guī)模的面象過程開程序的效率在很多時候不如同樣規(guī)模的面象過程開發(fā)的程序。發(fā)的程序。這主要是因為消息傳遞的方法不如直接訪問數(shù)據(jù)的交互方式效率高;大量私有數(shù)據(jù)成員的訪問需要通過函數(shù)進(jìn)行,增加了數(shù)據(jù)訪問的額外開銷。(3)針對具體應(yīng)用建立一套類體系的工作量大)針對具體應(yīng)用建立一套類體系的工作量大,OOP適合開發(fā)比較復(fù)雜的大系統(tǒng)和工業(yè)化軟件產(chǎn)品,小規(guī)模程序、數(shù)值計算以及實時控制領(lǐng)域使用面象過程的方法更合適。(4)OOP的很多概念和編程方式初學(xué)者不易理解和入門。的很多概念和編程方式初學(xué)者不易理解和入門。1.4 面向?qū)ο蟪绦蛟O(shè)計(續(xù)6)1. OOP方法并不摒棄面向過程的方法

22、,特別是結(jié)構(gòu)化程序設(shè)計方法的很多思想仍然適用于OOP。2. OOP方法中,類對象的方法(子程序)內(nèi)部的編程仍然必須采用面向過程的程序語言和設(shè)計思路。3. 由于機器語言程序仍然是面向過程的,因此OOP方法編寫的高級語言程序經(jīng)過編譯連接后,仍然是面象過程的方式來執(zhí)行的。4. 并非所有的軟件項目都適合用完整的OOP技術(shù)來開發(fā),實時控制程序(如:導(dǎo)彈制導(dǎo)系統(tǒng)程序設(shè)計)、數(shù)值計算程序等仍然以面象過程方式為主。面向過程與面向?qū)ο蟪绦蛟O(shè)計方法的關(guān)系1.4 面向?qū)ο蟪绦蛟O(shè)計(續(xù)7完)面向?qū)ο蟪绦蛟O(shè)計的一般過程面向?qū)ο蟮乃枷胧且灶悶橹鲗?dǎo)的。面向?qū)ο蟪绦蛟O(shè)計的過程也不例外。一般來說,要構(gòu)建一個面向?qū)ο蟪绦?,其過程

23、如下:一,構(gòu)造類。一,構(gòu)造類。構(gòu)造類的過程可以通過系統(tǒng)分析,對需求進(jìn)行充分理解和關(guān)鍵詞提取之后得到。二,構(gòu)建類和類之間的關(guān)系。二,構(gòu)建類和類之間的關(guān)系。包括泛化特化關(guān)系和整體部分關(guān)系。主要采用面向?qū)ο蟮睦^承機制(包括抽象、派生、組合等)。三,創(chuàng)建應(yīng)用類對象。三,創(chuàng)建應(yīng)用類對象。類是不能直接使用的。要使用類中成員(數(shù)據(jù)成員和方法成員),必須創(chuàng)建對象。應(yīng)用類對象是獨立存在的,類似于結(jié)構(gòu)化程序設(shè)計中的主函數(shù)。四,使用對象。四,使用對象。使用對象就是通過使用對象的成員來實現(xiàn),通常是調(diào)用應(yīng)用類對象中的一個主方法來實現(xiàn)。軟件工程方法是將軟件進(jìn)行工業(yè)化生產(chǎn)和管理的科學(xué)方法,OOP能與軟件工程方法很好配合,使

24、得軟件產(chǎn)品的可重用性、易維護性更好。軟件工程化生產(chǎn)方法可以簡要地規(guī)納于下表中:1.5 軟件工程化方法IDE開發(fā)語言VC+C+Object PASCALC+BuilderC+VB擴展BASIC.NETC#、J#等PowerbuilderPowerScriptEclipse、Jbuilder等Java常用面向?qū)ο蟪绦蛟O(shè)計語言和工具1. VC+的發(fā)展歷史的發(fā)展歷史 VC+即Visual C+的簡稱。它是微軟公司推出的面向Windows平臺的可視化C+編程語言。VC+環(huán)境的主要發(fā)展歷程如下:1991年:VC+1.0, windows3.11996年:VC+6.0, WIN95/98/NT/2000/X

25、P2002年:VC+.NET 2003(VC+7.0), WIN95/98/NT/2000/XP/2003/Vista2005年:VC+.NET 2005, WIN2000/2003/XP/Vista2007年:Visual C+ 2008(也即Visual C+ 9.0)2010年: Visual C+ 20102012年9月:Visual Studio 20121.6 VC+開發(fā)平臺簡介2. 什么是什么是.NET編程編程? 即基于微軟.NET Framwork框架的程序開發(fā)。(1).NET Framework的組成的組成Visual Studio.NET集成開發(fā)環(huán)境集成開發(fā)環(huán)境調(diào)用調(diào)用.N

26、ET Framework服務(wù)服務(wù)VC+.NETC#J#VB.NET.NET Framework公共類型系統(tǒng)公共語言規(guī)范垃圾收集器JIT編譯器第三方語言編譯器編譯器公共語言運行時公共語言運行時類庫類庫.NET Framework框架為所有的.NET開發(fā)語言提供了一個公共的運行環(huán)境,而不是為一種語言提供各自不同的運行環(huán)境。這個 公 共 的 運 行 環(huán) 境 稱 為 C o m m o n Language Runtime(CLR),即,即公共語言運公共語言運行時行時。CLR規(guī)范現(xiàn)在收錄在ECMA(歐洲計算機制造商)的CLI(通用語言基礎(chǔ)結(jié)構(gòu),Common Language Infrastructur

27、e)標(biāo)準(zhǔn)335中,同時收錄在相應(yīng)的ISO/IEC23271標(biāo)準(zhǔn)中。 1.6 VC+開發(fā)平臺簡介(續(xù)1)(2) .NET Framework的程序開發(fā)方式的程序開發(fā)方式選擇一種開發(fā)語言選擇一種開發(fā)語言編譯為中間語言編譯為中間語言生成中間語言文件生成中間語言文件公共語言運行時公共語言運行時JIT編譯器編譯器目標(biāo)目標(biāo)CPU可執(zhí)行的代碼可執(zhí)行的代碼1.6 VC+開發(fā)平臺簡介(續(xù)2) .NET Framework為有效解決程序可移植性和跨平臺性,把應(yīng)用程序源代碼編譯為一種獨立于硬件的語言,即中間語言中間語言。 在CLR環(huán)境中,中間語言程序由JIT編譯器進(jìn)一步轉(zhuǎn)換為目標(biāo)CPU可以執(zhí)行的指令代碼。而不同語言

28、的編譯程序只需要將源程序編譯為中間語言程序即可。由于這種執(zhí)行方式需要依賴于CLR提供的服務(wù),稱為托管代碼托管代碼,而傳統(tǒng)意義上的不依賴CLR環(huán)境的獨立可執(zhí)行應(yīng)用程序稱為非非托管代碼托管代碼。基于.NET Framework框架的程序開發(fā)采用哪種程序語言并不重要,程序開發(fā)人員可能在VB、VC+、C#和J#中任意選擇。(3) .NET Framework與與Visual Studio.NET IDE的關(guān)系的關(guān)系1.6 VC+開發(fā)平臺簡介(續(xù)3) IDE:Integrated Development Environment(集成開發(fā)環(huán)境) .NET Framework框架可以視為操作系統(tǒng)的一部分,而不是Visual Studio.NET的一部分。 即.NET程序是以中間語言形式的可執(zhí)行程序(EXE文件)發(fā)布的,只要Windows平臺安裝了.NET Framework就可以正常運行。 開發(fā).NET程序可以不使用Visual Studio.NET提供的集成環(huán)境,而采用任何字符編輯器建

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論