Net面向?qū)ο蟪绦蛟O(shè)計-1-歡迎進入C#編程世界2010-2011-2-副本_第1頁
Net面向?qū)ο蟪绦蛟O(shè)計-1-歡迎進入C#編程世界2010-2011-2-副本_第2頁
Net面向?qū)ο蟪绦蛟O(shè)計-1-歡迎進入C#編程世界2010-2011-2-副本_第3頁
Net面向?qū)ο蟪绦蛟O(shè)計-1-歡迎進入C#編程世界2010-2011-2-副本_第4頁
Net面向?qū)ο蟪绦蛟O(shè)計-1-歡迎進入C#編程世界2010-2011-2-副本_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1主講:主講: 王瑩瑩王瑩瑩 信息工程學(xué)院信息工程學(xué)院辦公室:圖書館辦公室:圖書館411 Tel: 159642685792怎樣學(xué)習(xí)程序設(shè)計孔子:I hear and I forget.(耳聽為虛)I see and I remember.(眼見為實)I do and I understand.(實踐出真知)學(xué)習(xí)程序設(shè)計的捷徑:寫代碼怎樣去練習(xí)?先看懂先看懂抄寫一遍,調(diào)試運行通過抄寫一遍,調(diào)試運行通過不看課本示例代碼,自己思考要解決的問題,然后寫出來。不看課本示例代碼,自己思考要解決的問題,然后寫出來。一個月后,不看課本,根據(jù)要求,重新將完整代碼寫出。一個月后,不看課本,根據(jù)要求,重新將完整代

2、碼寫出。3第一章 歡迎進入C#編程世界內(nèi)容使用Visual Studio 2010編程環(huán)境創(chuàng)建C#控制臺應(yīng)用程序使用名命空間創(chuàng)建一個簡單的C#圖形應(yīng)用程序4補充:為什么會有C#語言當(dāng)1995年SUN推出Java語言之后,全世界的目光都被這個神奇的語言所吸引平臺無關(guān)性平臺無關(guān)性 安全性安全性 面向?qū)ο竺嫦驅(qū)ο?分布式分布式 健壯性健壯性為了應(yīng)對為了應(yīng)對Java的挑戰(zhàn),的挑戰(zhàn),微軟公司在2000年7月發(fā)布的一種全新且簡單、安全、面向?qū)ο蟮某绦蛟O(shè)計語言:C#,是專門為.NET的應(yīng)用而開發(fā)的語言5一個人和C#語言語言大師Anders Hejlsberg (1960.11),丹麥人Anders Hejl

3、sberg:不世出的軟件天才,全世界最頂尖的軟件技術(shù)人員之一。論實現(xiàn)技術(shù),Anders可能是目前的第一高手,因為他精通程序語言、編譯器技術(shù)、開發(fā)工具、Framework以及系統(tǒng)架構(gòu)。Anders Hejlsberg的主要貢獻和Philippe Kahn共同創(chuàng)辦Borland 開發(fā)出Turbo Pascal,當(dāng)時首創(chuàng)的In-Memory Compiler震驚了全世界 開發(fā)出全世界最暢銷的Pascal產(chǎn)品,Turbo Pascal以及Borland Pascal。 Anders使用匯編語言撰寫編譯器,創(chuàng)造出了全世界速度最快、品質(zhì)也是一流的Pascal編譯器。開發(fā)出影響深遠(yuǎn)的Delphi這個偉大的R

4、AD工具 Microsoft .NET的Architect, Microsoft頒授Microsoft Distinguish Engineer大獎開發(fā)出VJ+語言,發(fā)明C#這個又將造成重大影響的語言。6C#之父 Anders Hejlsberg7天才是怎樣煉成的?天才是怎樣煉成的?一萬小時天才理論給了我們一個回答:無論是作曲家、外科醫(yī)生,還是運動員、藝術(shù)工作者,都需要經(jīng)歷至少 10000小時的刻苦練習(xí)才能達到至高境界10年,每天3小時無論你是誰。成功源自內(nèi)心強烈的渴望與追求。一萬小時天才理論提出:所有的世界級專家,無論是作曲家、外科醫(yī)生,還是運動員、藝術(shù)工作者,都需要經(jīng)歷至少10000 小時

5、的刻苦練習(xí)才能達到至高境界。對此,丹尼爾科伊爾在書中有一番補充解釋:“10000小時法則的關(guān)鍵在于:沒有例外之人。沒有人僅用 3000小時就能達到世界級水準(zhǔn);7500 小時也不行;一定要10000小時10年,每天3小時無論你是誰?!背晒Ρ仨毟冻?,付出你的時間與專注。先天條件無關(guān)緊要先天條件無關(guān)緊要,基因決定也無從談起,唯有不懈努力,決定平凡與奇跡唯有不懈努力,決定平凡與奇跡?!拔幕h(huán)境決定論”、“人生機遇論”等對成功只是輔助作用。8歷史回顧1-語言1、C/Win32 API傳統(tǒng)上,針對Windows系列操作系統(tǒng)的軟件開發(fā),會聯(lián)合使用C編程語言和Windows API。C語言的第一個問題在于,它

6、是一種非常簡練的語言。C程序員不得不面對手動內(nèi)存管理、令人討厭的指針運算和語法結(jié)構(gòu)。作為一種結(jié)構(gòu)化語言,C語言不具備面對象開發(fā)的優(yōu)點(很容易開發(fā)出意大利面條式的代碼)??紤]到這種令人生畏的語言還要再加上Win32 API定義的數(shù)以千計的全局函數(shù)和數(shù)據(jù)類型,現(xiàn)在有那么多有問題的程序在到處運行也就不足為怪了! 92、 C+/MFC C+編程語言的使用是對原始的C/API軟件開發(fā)模式的一個很大提升。從很多方面看,可以把C+想象成在C之上的面向?qū)ο髮?。雖然C+程序員得到了著名的“OOP三大支柱”(封裝、繼承和多態(tài))帶來的好處,但是,他們依然無法擺脫C語言所帶來的一些痛苦的方面(例如,手動內(nèi)存管理、令人

7、討厭的指針運算和語法結(jié)構(gòu))。103、Visual Basic 6.0VB6的流行,歸功于它能夠使用戶花費最少的功夫創(chuàng)建復(fù)雜的用戶界面、代碼庫(如COM服務(wù)器)以及寫數(shù)據(jù)訪問邏輯。更勝于MFC的是,VB6通過提供一些集成代碼向?qū)?、?nèi)置數(shù)據(jù)類型、類和VB專用函數(shù)把原始Win32 API的復(fù)雜性隱藏了起來。 VB6最大的不足(在Visual Basic .NET中已經(jīng)改正)在于,它不是一個完全的面向?qū)ο笳Z言,它只是一種支持對象(object aware)的語言。例如,VB6不允許程序員在類型之間建立“is-a”的關(guān)系(即沒有傳統(tǒng)的繼承),也不內(nèi)置支持類的參數(shù)化構(gòu)造。還有,VB6不能開發(fā)多線程應(yīng)用程序

8、。 114、Java語言Java是面向?qū)ο缶幊陶Z言,它的句法結(jié)構(gòu)來源于C+。Java的強大之處遠(yuǎn)不止其平臺無關(guān)性。作為一種語言,Java去掉了C+中部分令人討厭的語法。作為一個平臺,Java為程序員提供了許多預(yù)定義的包含各種類型的“包”。使用這些類型,Java程序員可以創(chuàng)建含有數(shù)據(jù)庫連接、消息支持、Web前端支持和豐富的桌面的一個100%的純Java應(yīng)用程序。 雖然Java是一種優(yōu)雅的語言,但是有一個潛在的不足:使用Java意味著在開發(fā)周期內(nèi)從前臺到后臺都要使用Java。1213高級語言的發(fā)展過程C#的語法其實是由C/C+、Visual Basic和Java四種語言融合而成。Microsoft

9、 C# product manager : Tony Goodhew C#:A simple, modern, object-oriented, type-safe, versionable, compatible(兼容的), and flexible(靈活的) languageSun Microsystems的Jame Gosling and Henry McGilton Java:A simple, object-oriented, distributed, interpreted(解釋的), robust(強大的), secure, architecture, neutral, port

10、able, high performance, multithreaded, and dynamic language注意兩種語言皆以“simple” 作為最重要的特性14歷史回顧2-框架1、COMCOM(Component Object Model,組件對象模型)是微軟的前一個應(yīng)用程序開發(fā)框架。從效果上看,COM是這樣一種架構(gòu):如果你依照COM的規(guī)則創(chuàng)建類型,那么最后能創(chuàng)建一個可復(fù)用的二進制模塊。 二進制COM服務(wù)器的優(yōu)點在于,它能以語言無關(guān)的方式被訪問。也就是說,C+程序員創(chuàng)建的COM類可以被VB6調(diào)用,Delphi程序員可以調(diào)用由C創(chuàng)建的COM類等。不過COM的語言無關(guān)性還是有一些限制的

11、。例如,沒有辦法用已有的COM類來派生新的COM類(因為COM本身不支持傳統(tǒng)的繼承)。15盡管COM被認(rèn)為是一個非常成功的對象模型,但是表面的背后還是過于復(fù)雜了很多其他語言也做出了努力,把大部分COM基礎(chǔ)結(jié)構(gòu)隱藏起來。不過,單單是語言的支持是不足以隱藏COM的復(fù)雜性的。即使選擇相對較簡單的支持COM的語言(如VB6),仍然不得不面對脆弱的組件注冊問題和很多與部署相關(guān)的問題(統(tǒng)稱DLL地獄)。 162、Windows DNA因特網(wǎng)的出現(xiàn)引出了更為復(fù)雜的問題。近幾年,微軟已經(jīng)為它的操作系統(tǒng)系列和其他產(chǎn)品添加了越來越多支持因特網(wǎng)的功能。很可惜,使用基于COM的Windows分布式因特網(wǎng)應(yīng)用架構(gòu)(DN

12、A)開發(fā)Web應(yīng)用程序仍然比較復(fù)雜。 即Windows DNA需要使用很多相關(guān)技術(shù)和語言:ASP、HTML、XML、JavaScript、VBScript和COM(+),還有數(shù)據(jù)訪問API,如ADO。問題之一是,許多技術(shù)在語法層面上看是完全不相關(guān)的。例如,JavaScript的語法像C,而VBScript則是VB6的子集另外,就是每一種語言和每一種技術(shù)都有自己的類型系統(tǒng)。除了每一個API都有自己的預(yù)定義代碼集合之外,即使基本數(shù)據(jù)類型也不能被認(rèn)為是等價的。17.NET Framework.NET is a revolutionary new platform, built on open Int

13、ernet protocols and standards, with tools and services that meld computing and communications in new ways. 即:.NET = 新平臺 + 標(biāo)準(zhǔn)協(xié)議(CLR) + 統(tǒng)一開發(fā)工具18對已有代碼具有完全的互操作性:已有的COM二進制組件可以和更新的.NET二進制組件共存,反之亦然。而且平臺調(diào)用(PInvoke)服務(wù)允許在.NET的代碼里調(diào)用基于C的庫(包括操作系統(tǒng)的底層API)。 完全的語言集成:.NET支持跨語言繼承、跨語言異常處理和跨語言的調(diào)試。 所有支持.NET的語言共享的公共運行時引擎全

14、面的基類庫 真正簡化的部署模型:在.NET環(huán)境下,不需要將二進制單元注冊到系統(tǒng)注冊表了。另外,.NET允許同一個*.dll的不同版本存在于同一臺機器上。 19.NET平臺構(gòu)造塊(CLR、CTS和CLS)從程序員的角度看,.NET可以理解為一個運行庫環(huán)境和一個全面的基類庫。運行庫層的正式名稱是CLR(公共語言運行庫)CLR負(fù)責(zé)管理和執(zhí)行負(fù)責(zé)管理和執(zhí)行.NET框架代碼框架代碼CLR在在.NET平臺中充當(dāng)一個類似于代理人的角色,負(fù)平臺中充當(dāng)一個類似于代理人的角色,負(fù)責(zé)底層統(tǒng)一的進程責(zé)底層統(tǒng)一的進程/線程管理(如線程安全)、內(nèi)存管線程管理(如線程安全)、內(nèi)存管理(如垃圾收集)、安全管理、代碼驗證、編譯

15、以及理(如垃圾收集)、安全管理、代碼驗證、編譯以及其他的系統(tǒng)服務(wù)其他的系統(tǒng)服務(wù)CLR通過中間語言機制實現(xiàn)通過中間語言機制實現(xiàn) .NET的編程語言無關(guān)性的編程語言無關(guān)性,此外也為,此外也為.NET Framework帶來潛在的平臺無關(guān)性帶來潛在的平臺無關(guān)性20公共語言運行庫公共語言運行庫 CLR22CTS(公共類型系統(tǒng))定義了那些在托管代碼中一定會使用的類型的特征。CLS定義了一組豐富的內(nèi)置類型,以及每種類型確定的、詳細(xì)的特征.net兼容編程語言提供的類型通常映射到CTS中已定義的內(nèi)置類型集的某一個子集CTS最重要的特征是所有的類型都繼承自公共的基類:objectCLS:公共語言規(guī)范,詳細(xì)說明了

16、一個.net兼容的編程語言的規(guī)則、屬性和行為23BCL基類庫不同的編程語言所提供的不同的編程語言所提供的API或類庫存在很大差異或類庫存在很大差異選擇一種編程語言意味著程序員必須學(xué)習(xí)該語言所提選擇一種編程語言意味著程序員必須學(xué)習(xí)該語言所提供的類型、結(jié)構(gòu)、類庫、函數(shù)等等供的類型、結(jié)構(gòu)、類庫、函數(shù)等等.NET Framework實現(xiàn)了應(yīng)用程序開發(fā)的實現(xiàn)了應(yīng)用程序開發(fā)的“通用性通用性”,所有的編程語言均使用統(tǒng)一的基礎(chǔ)類庫所有的編程語言均使用統(tǒng)一的基礎(chǔ)類庫一致性大大提高了軟件開發(fā)的效率和生產(chǎn)率,并可以一致性大大提高了軟件開發(fā)的效率和生產(chǎn)率,并可以節(jié)省由于語言差異而對程序員培訓(xùn)的費用節(jié)省由于語言差異而對

17、程序員培訓(xùn)的費用.NET編程語言編程語言.NET平臺是平臺是“語言中立的語言中立的”w 目前支持目前支持20多種編程語言多種編程語言w 遵循公共語言規(guī)范遵循公共語言規(guī)范CLS微軟提供:微軟提供:w VB.NET, C+.NET, C#.NET, J#.NET第三方提供:第三方提供:w APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk26.NET架構(gòu)公共語言運行庫CLR基類庫BCL公共語言規(guī)范CLS27統(tǒng)一的編程API:NET Framework 類庫不同語言源代碼的編譯過程c/c+編

18、譯過程:編譯過程:當(dāng)C編譯器編譯生成一個對象的代碼時,該代碼是為在某一特定硬件平臺運行而生成的。因此在編譯過程中,編譯程序通過查表將所有對符號的引用轉(zhuǎn)換為特定的內(nèi)存偏移量,以保證程序運行。28Java編譯過程與編譯過程與c/c+編譯過程不同編譯過程不同Java編譯程序?qū)ava源程序編譯成jvm可執(zhí)行代碼-java字節(jié)碼.Java編譯過程:編譯過程:Java編譯器卻不將對變量和方法的引用編譯為數(shù)值引用,也不確定程序執(zhí)行過程中的內(nèi)存布局,而是將些符號引用信息保留在字節(jié)碼中,由解釋器在運行過程中創(chuàng)立內(nèi)存布局,然后再通過查表來確定一個方法所在的地址,這樣就有效地保證了java的可移植性和安全性。的編譯過程301.1 開始在Visual Studio 2010環(huán)境中編程Visual Studio 是微軟公司推出的開發(fā)環(huán)境。是目前最流行的 Windows 平臺應(yīng)用程序開發(fā)環(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

提交評論