版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
圖119所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s119數(shù)字的輸入輸出在C#程序中使用Console.Write()或Console.WriteLine()時(shí),還有以下兩種三種知識(shí)經(jīng)常用到:三種(1)如果有多項(xiàng)信息,信息之間可以用加號(hào)(+)連接起來(lái),以表示形成一個(gè)字符串。例如:"Youhaveentered:"+n+"and"+d(2)若在字符串有變量,還可以在字符串中用{0}、{1}、{2}等分別表示各個(gè)變量。例如:Console.WriteLine("Youhaveentered:{0}and{1}.",n,d);(3)在C#6.0以上的版本中,還可以直接使用{變量名或表達(dá)式}嵌入到格式串中,這要求格式串前面寫(xiě)一個(gè)$符號(hào)。例如:Console.WriteLine($"Youhaveentered:{n}andgjatsqv.");這種方式稱為字符串嵌入值(stringinterpolation),它比較直觀而且不容易錯(cuò)。這實(shí)際是一個(gè)語(yǔ)法糖(syntexsuger),也就是說(shuō)C#編譯器會(huì)將這種簡(jiǎn)寫(xiě)方式翻譯成復(fù)雜的語(yǔ)法元素,字符串嵌入值實(shí)際上翻譯成了字符串的加號(hào)連接(而加號(hào)連接又翻譯成了字符串的Append方法)。隨著C#語(yǔ)言的發(fā)展,C#語(yǔ)言中增加了大量的語(yǔ)法糖,極大地方便了代碼的書(shū)寫(xiě),但給初學(xué)者增加了負(fù)擔(dān),我們會(huì)在不同的章節(jié)提到這些語(yǔ)法糖。1.3.2Windows應(yīng)用程序輸入輸出Windows應(yīng)用程序用圖形界面的,其基本的輸入輸出手段是使用界面上的對(duì)象(也稱為“控件”),例如:使用文本框?qū)ο螅═extBox)獲取用戶輸入的數(shù)據(jù),使用標(biāo)簽對(duì)象(Label)或文本框?qū)ο筝敵鰯?shù)據(jù),使用命令按鈕(Button)來(lái)執(zhí)行命令。圖形界面的程序最好借助于集成開(kāi)發(fā)工具(如VisualStudio)來(lái)實(shí)現(xiàn)。例STYLEREF1\s1SEQ例\*ARABIC\s16WinInOut.cs圖形界面輸入輸出。1 usingSystem;2 usingSystem.Windows.Forms;3 usingSystem.Drawing;4 publicclassWinInOut:Form5 {6 TextBoxtxt=newTextBox();7 Buttonbtn=newButton();8 Labellbl=newLabel();9 10 publicvoidinit()11 {12 this.Controls.Add(txt);13 this.Controls.Add(btn);14 this.Controls.Add(lbl);15 txt.Dock=System.Windows.Forms.DockStyle.Top;16 btn.Dock=System.Windows.Forms.DockStyle.Fill;17 lbl.Dock=System.Windows.Forms.DockStyle.Bottom;18 btn.Text="求平方";19 lbl.Text="用于顯示結(jié)果的標(biāo)簽";20 this.Size=newSize(300,120);21 22 btn.Click+=newSystem.EventHandler(this.button1_Click);23 }24 25 publicvoidbutton1_Click(objectsender,EventArgse)26 {27 strings=txt.Text;28 doubled=double.Parse(s);29 doublesq=d*d;30 lbl.Text=d+"的平方是:"+sq;31 }32 33 staticvoidMain()34 {35 WinInOutf=newWinInOut();36 f.Text="WinInOut";37 f.init();38 Application.Run(f);39 -+ }40 }在本程序中,生成了一個(gè)文本框txt用于輸入,一個(gè)標(biāo)簽lbl用于輸出,一個(gè)按鈕btn用于觸發(fā)命令。在init(初始化)方法中,將這三個(gè)對(duì)象加入。在程序中,還有一點(diǎn)很關(guān)鍵,就是加入一個(gè)事件處理程序,其作用是當(dāng)用戶點(diǎn)擊此按鈕時(shí),通過(guò)Text方法得到用戶的輸入,然后用double.Parse()方法轉(zhuǎn)為一個(gè)實(shí)數(shù)(double),再計(jì)算其平方,用Label的Text顯示其平方值,如REF_Ref41129290\h圖120所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s120圖形界面輸入輸出1.3.3常用的運(yùn)算在程序中,可以使用基本的運(yùn)算,如+、-、*、/,而且一些基本的寫(xiě)法與C、C++、Java等相似,下章將會(huì)詳細(xì)介紹。這里介紹幾個(gè)基本的類,以方便我們編寫(xiě)一些簡(jiǎn)單的程序。Math類:是關(guān)于數(shù)學(xué)運(yùn)算的類,有一系列方法可用,如Math.Sqrt()表示平方根,Math.Round()表示四舍五入,Math.Log()表示自然對(duì)數(shù),Math.Pow()表示冪運(yùn)算,Math.Sin()表示正弦等等。Random類:表示隨機(jī)數(shù)。如:Randomrnd=newRandom();intn=rnd.Next(10);doubled=rnd.NextDouble();這里生成了一個(gè)隨機(jī)數(shù)對(duì)象,用其Next(10)方法得到一個(gè)0到9的隨機(jī)整數(shù),而用NextDouble()則得到一個(gè)隨機(jī)小數(shù)(0到1之間)。Convert類:表示轉(zhuǎn)換。它可以方便地將輸入的字符串轉(zhuǎn)成別的類型:intn=Convert.ToInt32("123");doubled=Convert.ToDouble("123.45");其中分別轉(zhuǎn)成整數(shù)和小數(shù)。在VisualStudio中,可以方便地查看這些類及方法,一方面在輸入過(guò)程中系統(tǒng)會(huì)自動(dòng)提示;另一方面將輸入點(diǎn)置于一個(gè)單詞上,然后按F1鍵,系統(tǒng)會(huì)自動(dòng)打開(kāi)幫助信息(要求聯(lián)網(wǎng)),即打開(kāi).NETFrameworkAPI文檔,如REF_Ref485588773\h圖121所示,可以從中查看詳細(xì)的說(shuō)明。圖STYLEREF1\s1SEQ圖\*ARABIC\s121查看API文檔1.4開(kāi)發(fā)工具前面多次提到了VisualStudio開(kāi)發(fā)工具,也提到了控制臺(tái)、Windows兩種應(yīng)用程序,為了更全面的了解,本節(jié)介紹更多的開(kāi)發(fā)工具、更多的應(yīng)用程序類型。1.4.1.NETFrameworkSDK及VisualStudio正如第1.1節(jié)所提到的,C#的主要環(huán)境是Microsoft.NETFramework,在該環(huán)境中,提供了一系列的開(kāi)發(fā)工具,稱為.NETFrameworkSDK。Microsoft.NETFrameworkSDK是免費(fèi)的,可以從以下站點(diǎn)下載/net/targeting要提醒的是,SDK是開(kāi)發(fā)環(huán)境。如果不編譯C#程序,只運(yùn)行程序,可以只安裝.NETFramework的運(yùn)行環(huán)境,這樣可以占用較少的磁盤(pán)空間。不過(guò),一般地Windows操作系統(tǒng)上已經(jīng)自帶了.NETFramework運(yùn)行環(huán)境?,F(xiàn)在.NETFrameworkSDK直接包含在VisualStudio中了,所以可以直接安裝VisualStudio而得到SDK?,F(xiàn)在Microsoft提供了VisualStudio的社區(qū)版(免費(fèi))、專業(yè)版、企業(yè)版,對(duì)于學(xué)習(xí)者而言,社區(qū)版(community)的功能已經(jīng)足夠強(qiáng)大,可以從以下站點(diǎn)下載 下載VisualStudio后就可以安裝,在安裝時(shí),我們可以選擇需要的Workload(工作負(fù)荷),對(duì)于初學(xué)者而言序,只要選擇“.NET桌面開(kāi)發(fā)”就可以了,以后需要其他的,可以隨時(shí)安裝(再次運(yùn)行安裝程序VisualStudioInstaller)。1.4.2使用命令行編譯及運(yùn)行程序一般高級(jí)語(yǔ)言編程需要經(jīng)過(guò)源程序編輯、目標(biāo)程序編譯生成和可執(zhí)行程序運(yùn)行幾個(gè)過(guò)程,C#編程也不例外,本節(jié)就編輯、編譯、運(yùn)行C#程序的一般步驟進(jìn)行介紹。盡管可以使用VisualStudio集成開(kāi)發(fā)環(huán)境來(lái)開(kāi)發(fā)復(fù)雜的項(xiàng)目,但本書(shū)中大部分示例程序可以使用命令行來(lái)進(jìn)行編譯和運(yùn)行。1.程序的編輯C#源程序是以.cs為后綴的簡(jiǎn)單的文本文件,可以用各種C#集成開(kāi)發(fā)環(huán)境中的源代碼編輯器來(lái)編寫(xiě),也可以用其他文本編輯工具,如Windows中的記事本等。以簡(jiǎn)單的記事本(Notepad)軟件為例,打開(kāi)記事本,輸入下面一段程序:usingSystem;publicclassHelloWorld{//anapplication publicstaticvoidMain(string[]args){ Console.WriteLine("HelloWorld!"); }}程序輸入并修改完畢,要將此文件保存,在保存文件時(shí),要注意,文件的類型要選“所有類型”,文件名文件名可以為HelloWorld.cs。如果使用其他編輯器,也要注意保存時(shí)以純文本方式進(jìn)行保存,并且將文件擴(kuò)展名定為.cs文件。提示:本書(shū)中的示例程序可以在附帶的電子資源中獲得,但對(duì)于初學(xué)者,手工輸入程序并調(diào)試運(yùn)行是一種很好的學(xué)習(xí)方式。2.程序的編譯與其他語(yǔ)言一樣,源程序(.cs文件)要經(jīng)過(guò)編譯(compile)才能運(yùn)行。編譯的過(guò)程實(shí)際上是將C#源程序轉(zhuǎn)變?yōu)榭蓤?zhí)行文件,擴(kuò)展名為.exe,其中包含的是程序的指令。(如前面所說(shuō),這里.exe文件包含的是IL指令和元數(shù)據(jù),只有在實(shí)際運(yùn)行時(shí),才會(huì)即時(shí)地轉(zhuǎn)成機(jī)器的CPU指令并執(zhí)行。)編譯可以使用工具csc.exe。該工具的使用方法如下:1)進(jìn)入命令行環(huán)境,方法是:選“開(kāi)始”/“運(yùn)行”,然后鍵入cmd<回車>2)然后進(jìn)入到存放源文件的目錄(假定是d:\CsExample\ch01目錄),運(yùn)行 d:<回車> cdd:\CsExample\ch01<回車>3)編譯源程序,鍵入 cscHelloWorld.cs<回車>csc后面可以跟C#源程序文件名,文件名可以有多個(gè),還可以用*及?通配符,如: cscHello*.cs csc還可以跟一系列選項(xiàng),為了查看其選項(xiàng),可以用csc/?來(lái)查看,結(jié)果如下缺少結(jié)果部分。:缺少結(jié)果部分。 在以上選項(xiàng)中,比較重要的是:/out:<文件>輸出文件名(默認(rèn)值:包含主類的文件或第一個(gè)文件的基名稱)/target:exe生成控制臺(tái)可執(zhí)行文件(默認(rèn))(縮寫(xiě):/t:exe)/target:winexe生成Windows可執(zhí)行文件(縮寫(xiě):/t:winexe)/unsafe[+|-]允許“不安全”代碼當(dāng)編譯成功后,csc會(huì)產(chǎn)生相應(yīng)的.exe文件。若編譯不成功,csc會(huì)提示信息,根據(jù)此信息,讀者可進(jìn)一步修改源程序,再重新編譯。為了使用csc命令,需要設(shè)置環(huán)境變量,這個(gè)設(shè)置過(guò)程較復(fù)雜,稍后面專門講解。3.程序的運(yùn)行程序的運(yùn)行就是執(zhí)行.exe文件中的指令的過(guò)程。在上面的例子中,運(yùn)行所編譯好的程序,用命令:HelloWorld程序的運(yùn)行結(jié)果如REF_Ref41126065\h圖122所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s122HelloWorld程序運(yùn)行結(jié)果在Windows中,也可以在資源管理器中雙擊此.exe文件,即可以運(yùn)行程序。4.設(shè)定path環(huán)境變量如上所述,在編譯及運(yùn)行時(shí),經(jīng)常需要設(shè)定path這個(gè)環(huán)境變量。值得注意的是,隨著Microsoft技術(shù)的演進(jìn),csc工具(csc.exe)所用的技術(shù)、所在的目錄(文件夾)也在發(fā)生變化,例如:早期csc.exe在C:\WINNT\Microsoft.NET\Framework\v1.0.3705\目錄下;在.NET2.0時(shí)期在C:\WINNT\Microsoft.NET\Framework\v2.0.50727\下;在4.0版本中,則在C:\Windows\Microsoft.NET\Framework64\v4.0.30319;安裝VisualStudio2015后,其中附帶安裝的MSBuild編譯平臺(tái)中的csc.exe則可能在C:\ProgramFiles(x86)\MSBuild\14.0\Bin目錄下;安裝VisualStudio2017后,其中附帶安裝的MSBuild編譯平臺(tái)中使用Roslyn編譯服務(wù)的csc.exe則可能在C:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Community\MSBuild\15.0\Bin\Roslyn目錄下;在跨平臺(tái)環(huán)境(.NETcore)中,csc則可能在C:\ProgramFiles\dotnet\sdk\1.0.3\Roslyn中。你可以在自已的電腦中搜索一下csc.exe看看其所在的目錄。以MSBuild編譯平臺(tái)為例,為了能使用csc.exe可以寫(xiě)全路徑 C:\ProgramFiles(x86)\MSBuild\14.0\Bin\cscHelloWorld.cs為了省略其所在目錄,可以先鍵入設(shè)置path環(huán)境變量的命令 Setpath=C:\ProgramFiles(x86)\MSBuild\14.0\Bin;%path%這樣,編譯命令可以直接寫(xiě)csc,如: cscHello*.cs為了長(zhǎng)期設(shè)置path環(huán)境變量,可以在“我的電腦”(“此電腦”)右擊,選“屬性|高級(jí)系統(tǒng)設(shè)置|環(huán)境變量”,在系統(tǒng)變量中,選擇“path”,然后點(diǎn)擊“編輯”“新建”,就可以在path中增加一項(xiàng),寫(xiě)上csc.exe所在的目錄即可。如REF_Ref485375311\h圖123所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s123編輯環(huán)境變量5.處理程序的語(yǔ)法錯(cuò)誤在程序編輯的過(guò)程中,通常容易出現(xiàn)錯(cuò)誤,最常見(jiàn)的是字母大小寫(xiě)不對(duì),輸錯(cuò)某個(gè)字符等等。對(duì)于有錯(cuò)誤的程序,編譯時(shí)會(huì)報(bào)告一個(gè)語(yǔ)法錯(cuò)誤(syntaxerror)。在用csc進(jìn)行編譯時(shí),報(bào)告的語(yǔ)法錯(cuò)一般具有以下格式 源程序名(行號(hào),列號(hào)):error錯(cuò)誤號(hào):錯(cuò)誤信息例如:HelloWorld.cs(8,27):errorCS1002:應(yīng)輸入;根據(jù)這些信息,可以進(jìn)一步對(duì)源程序進(jìn)行修改。在實(shí)際編譯時(shí),C#編譯器會(huì)試圖根據(jù)源代碼來(lái)理解程序的意圖,由于這個(gè)原因,報(bào)告的錯(cuò)誤并不能總是反映問(wèn)題的實(shí)際情況。為了找到出錯(cuò)的真正原因,編程者需要再進(jìn)行猜測(cè),或是看一看出錯(cuò)的那行代碼的附近的幾行代碼。1.4.3輔助工具EditPlus在實(shí)際編程時(shí),還可以借助一些輔助工具來(lái)加快程序的設(shè)計(jì)。在C#的輔助工具中,有許多是比較小巧的,它們的主要功能有兩點(diǎn):(1)提供一個(gè)編輯器,能編輯C#程序及Html文件;(2)用菜單或快捷鍵方便地調(diào)用csc和生成的exe文件來(lái)編譯和運(yùn)行C#程序。這樣的輔助工具主要有:EditPlus,UltraEditor等。它們是免費(fèi)軟件或共享軟件,可以從網(wǎng)上下載后安裝并使用。當(dāng)然在安裝這些軟件工具之前,系統(tǒng)中必須首先安裝.NETFrameworkSDK。 下面以共享軟件EditPlus為例,它的主要功能是文本編輯,對(duì)編輯C#程序及Html網(wǎng)頁(yè)也有較好的支持。在編輯時(shí),對(duì)于一些重要的關(guān)鍵詞還以醒目的顏色顯示出來(lái),這樣可以使閱讀程序更加方便,也有助于減少鍵入錯(cuò)誤。 如果要下載最新版本的EditPlus可以訪問(wèn)網(wǎng)站: 在下載時(shí),一方面要下載EditPlus運(yùn)行程序,還要下載editplus的插件——即C#(Csharp)的語(yǔ)法文件。先安裝EditPlus,再安裝語(yǔ)法文件。安裝語(yǔ)法文件的步驟是: (1)選Tools(工具)Preference(首選項(xiàng))Files(文件)SettingsandSyntax(設(shè)四置和語(yǔ)法),在其中加入文件類型(Csharp),設(shè)定其擴(kuò)展名為cs,并設(shè)定語(yǔ)法文件為下載的語(yǔ)法文件,如REF_Ref41126562\h圖124所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s124加入文件類型(2)要新建一個(gè)程序,選FileNewOthersCS大小寫(xiě)?harp即可。大小寫(xiě)?圖STYLEREF1\s1SEQ圖\*ARABIC\s125EditPlus界面EditPlus界面如REF_Ref29722173\h圖125所示。左邊為文件夾及文件的顯示區(qū),中間為編輯窗口,下邊為信息窗口。為了方便在EditPlus中調(diào)用編譯及運(yùn)行功能,需要進(jìn)行設(shè)置UserTools(用戶工具)。選擇菜單“Tools/ConfigureUserTools”,在彈出的對(duì)話框中,點(diǎn)“AddAddTool?與圖一致?!奔尤胗脩艄ぞ撸鏡EF_Ref29722247\h圖126所示。AddTool?與圖一致。圖STYLEREF1\s1SEQ圖\*ARABIC\s126設(shè)置UserTools對(duì)于編譯及運(yùn)行分別設(shè)置如下:表STYLEREF1\s1SEQ表\*ARABIC\s12設(shè)置UserTools的值選項(xiàng)針對(duì)編譯的設(shè)置針對(duì)運(yùn)行的設(shè)置MenutextCompileC#RunC#CommandC:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Community\MSBuild\15.0\Bin\Roslyn\csc.execmd/cArgument$(FileName)$(FileNameNoExt).exeInitialdirectory$(FileDir)$(FileDir)Captureoutput(選擇)(不選擇)設(shè)置好以后,用戶可以用以下方式來(lái)使用:使用菜單FileNewOthers中選擇Csharp文件,即可新建一個(gè)C#文件,然后開(kāi)始編輯;按快捷鍵Ctrl+S(或使用菜單FileSave)保存文件;按快捷鍵(如:Ctrl+1)來(lái)進(jìn)行編譯;按快捷鍵(如:Ctrl+2)來(lái)運(yùn)行程序。當(dāng)然用戶也可以只用EditPlus來(lái)編輯程序,然后,在命令行狀態(tài)下用csc的命令進(jìn)行編譯,用生成的exe文件來(lái)運(yùn)行。1.4.4輔助工具VisualStudioCodeMicrosoft提供了開(kāi)源、免費(fèi)的編輯工具VisualStudioCode,可以從以下網(wǎng)站下載/VisualStudioCode是一個(gè)跨平臺(tái)的文本編輯工具,可以方便編寫(xiě)C#程序、網(wǎng)頁(yè)文件、Javascript腳本等,并且在Windows、Linux、MacOSX上都可以使用。如REF_Ref480184257\h圖127VisualStudioCodeREF_Ref480184264\h圖127所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s127VisualStudioCode在VisualStudioCode中,按Ctrl+`可以進(jìn)入控制臺(tái)(又叫終端),在其中可以輸入編譯命令及運(yùn)行程序。如果安裝dotnetcore開(kāi)發(fā)工具,還可以進(jìn)行C#程序的調(diào)試。具體可參見(jiàn)/dotnet。1.5應(yīng)用程序類型1.5.1VisualStudio建立不同類型的應(yīng)用程序編寫(xiě)C#應(yīng)用程序最方便當(dāng)然是使用VisualStudio,它是Microsoft新一代的集成開(kāi)發(fā)環(huán)境。其中有針對(duì)多種編程語(yǔ)言(包括C#,C++,VB,F(xiàn)#,JavaScript,Python等)的代碼編輯器。而且這個(gè)環(huán)境中還具HTML編輯器、XML編輯器、SQLServer界面以及ServerExplorer。這個(gè)在環(huán)境還可以方便調(diào)試、文檔生成等輔助開(kāi)發(fā)工作??傊?,VisualStudio.一個(gè)功能強(qiáng)大的集成開(kāi)發(fā)環(huán)境(IDE)。在VisualStudio可以建立各個(gè)項(xiàng)目類型,這些項(xiàng)目可以用各種語(yǔ)言來(lái)實(shí)現(xiàn)。以C#語(yǔ)言所能建立的類型也有很多種,如REF_Ref41127102\h圖128所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s128VisualStudio能建立各種類型的項(xiàng)目而常見(jiàn)的項(xiàng)目類型如REF_Ref485478289\h表13所示。表STYLEREF1\s1SEQ表\*ARABIC\s13常見(jiàn)的項(xiàng)目類型項(xiàng)目類型項(xiàng)目說(shuō)明控制臺(tái)應(yīng)用程序此項(xiàng)目類型用于創(chuàng)建命令行實(shí)用工具和應(yīng)用程序。程序的輸入和輸出是通過(guò)基于文本的終端窗口進(jìn)行的。Windows應(yīng)用程序此項(xiàng)目類型用于創(chuàng)建Windows客戶端應(yīng)用程序。項(xiàng)目創(chuàng)建一個(gè)Windows窗體,可以在該窗體上放置其他控件、顯示文本和圖形。WPF應(yīng)用程序此項(xiàng)目類型用于創(chuàng)建WPF客戶端應(yīng)用程序。項(xiàng)目創(chuàng)建一個(gè)WPF窗體,可以在該窗體上放置其他控件、顯示文本和圖形。Windows服務(wù)程序此項(xiàng)目類型用于創(chuàng)建Windows服務(wù)程序。項(xiàng)目創(chuàng)建一個(gè)Windows服務(wù),可以在控制面板的服務(wù)中進(jìn)行管理。Web應(yīng)用程序此項(xiàng)目類型用于創(chuàng)建ASP.NETWeb應(yīng)用程序。Web應(yīng)用程序運(yùn)行在網(wǎng)絡(luò)上,可以通過(guò)瀏覽器來(lái)訪問(wèn)。.NETCore應(yīng)用程序使用跨平臺(tái)的.NETCore而不是.NETFramewok來(lái)作為運(yùn)行環(huán)境。.NETCore大部分的類與.NETFramework是兼容的,但.NETCore沒(méi)有Windows界面,而使用ASP.NETCore的Web界面。類庫(kù)類庫(kù)項(xiàng)目創(chuàng)建一個(gè)庫(kù)文件,它可用來(lái)存儲(chǔ)類庫(kù)(.dll文件)以供在其他應(yīng)用程序中引用??枕?xiàng)目此選項(xiàng)創(chuàng)建一個(gè)不包含任何文件的項(xiàng)目??梢允止ぜ尤氪a及引用別的類庫(kù)。各種項(xiàng)目的差別在于運(yùn)行環(huán)境的不同,所使用的界面也不同,但是所使用的底層技術(shù),如C#語(yǔ)言機(jī)制、基本類庫(kù)、文件輸入輸出、文本圖像信息的處理、數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)都是一樣的,本書(shū)的主要內(nèi)容也是這些基本的技術(shù),所以對(duì)各種項(xiàng)目類型都是適用的。本書(shū)中用到的主要項(xiàng)目類型有兩種,一是控制臺(tái)應(yīng)用程序,一是Windows窗體應(yīng)用程序,在1.2節(jié)中也主要介紹的這兩種項(xiàng)目的建立和運(yùn)行方法??紤]到讀者的不同需求,這里簡(jiǎn)單地介紹一下WPF和Web應(yīng)用程序。1.5.2WPF應(yīng)用程序WPF(WindowsPresentationFoundation)是微軟推出的基于Windows的用戶界面框架,是.NETFramework3.0以上版本開(kāi)始提供的。WPF應(yīng)用程序,也是Windows圖形化界面的應(yīng)用程序,與Windows窗體應(yīng)用程序很相似,建立WPF應(yīng)用程序的步驟也很相似,它里面的界面對(duì)象的放置、屬性的設(shè)置、事件代碼的書(shū)寫(xiě)也幾乎一樣,如REF_Ref485479038\h圖129所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s129WPF應(yīng)用程序WPF應(yīng)用程序與Windows窗體應(yīng)用程序最大的不同之處在于:WPF設(shè)計(jì)的界面是用一個(gè).xaml文件來(lái)描述的。.xaml文件是一種有特殊格式的XML文件,其中用文本的方式描述了界面的對(duì)象及其屬性、事件,也就是說(shuō)它的界面用描述性的,?而前面講到的Windows窗體應(yīng)用程序中,其界面設(shè)計(jì)是用一個(gè).designer.cs文件,用C#代碼來(lái)描述的。?WPF程序比Windows窗體程序具有一些優(yōu)點(diǎn),比如.xaml文件可以由美工設(shè)計(jì)師來(lái)書(shū)寫(xiě),與程序代碼可以實(shí)現(xiàn)相好的分離,另外,WPF界面中可以不用代碼來(lái)實(shí)現(xiàn)漸變顏色等更效果(這在Windows窗體中要寫(xiě)較多的代碼)。但是WPF的.xaml實(shí)際又是一種“語(yǔ)言”,它有很多的語(yǔ)法及標(biāo)記需要學(xué)習(xí)和掌握,對(duì)于初學(xué)者而言,這個(gè)挑戰(zhàn)是很大的?;谶@種考慮,我們?cè)诒緯?shū)中主要以控制臺(tái)和Windows窗體應(yīng)用程序來(lái)講解,使讀者更加專注于C#語(yǔ)言及基礎(chǔ)應(yīng)用的學(xué)習(xí)。要提醒讀者的是:在簡(jiǎn)單的情況下,WPF應(yīng)用程序與Windows窗體應(yīng)用幾乎是一樣的,讀者完全可以使用WPF來(lái)學(xué)習(xí)所有的例子。本書(shū)的配套電子資源提供了全書(shū)中所有的Windows窗體應(yīng)用程序示例所對(duì)應(yīng)WPF版本的代碼,可以對(duì)照學(xué)習(xí)。限于篇幅,WPF代碼就不列在紙質(zhì)書(shū)中了。1.5.3Web應(yīng)用程序Web應(yīng)用程序,是在網(wǎng)絡(luò)上應(yīng)用的程序,程序的代碼運(yùn)行在服務(wù)端,而使用瀏覽器來(lái)訪問(wèn)它,可以簡(jiǎn)單地說(shuō),Web應(yīng)用程序是以瀏覽器來(lái)作為其輸入輸出的界面的。Web應(yīng)用程序的項(xiàng)目又可以細(xì)分為好幾種,依其運(yùn)行環(huán)境,又分為ASP.NET或ASP.NETcore兩種,前者是運(yùn)行于.NETFramework中,后者是運(yùn)行于跨平臺(tái).NETCore框架中的。Web應(yīng)用程序中也有對(duì)象及其屬性、方法、事件的概念,但其界面是網(wǎng)頁(yè),也是一種特殊的HTML文本來(lái)描述的,如REF_Ref485480903\h圖130所示。圖STYLEREF1\s1SEQ圖\*ARABIC\s130Web應(yīng)用程序Web項(xiàng)目會(huì)涉及更多的技術(shù),如HTML、CSS、Javascript等,這已超出本書(shū)的范圍內(nèi)。不過(guò),本書(shū)學(xué)到的C#及相關(guān)知識(shí)完全可以應(yīng)用到Web項(xiàng)目中。1.6面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念C#是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,面向?qū)ο蟮能浖_(kāi)發(fā)和是當(dāng)今計(jì)算機(jī)技術(shù)發(fā)展的重要成果和趨勢(shì)之一。本節(jié)介紹面向?qū)ο筌浖_(kāi)發(fā)和面向?qū)ο蟪绦蛟O(shè)計(jì)中的基本概念和基本方法,使讀者對(duì)面向?qū)ο筌浖_(kāi)發(fā)方法的體系、原則、基本思想和特點(diǎn)有—定的了解。對(duì)于初學(xué)者,可以略過(guò)此節(jié),等學(xué)過(guò)一段時(shí)間再回頭來(lái)看看比較抽象一些的描述。1.6.1面向?qū)ο蟾攀霾煌诿嫦蜻^(guò)程的程序設(shè)計(jì)中以具體的解題過(guò)程為研究和實(shí)現(xiàn)的主體,面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)是以需解決的問(wèn)題中所涉及到的各種對(duì)象為主要矛盾。在面向?qū)ο蟮姆椒▽W(xué)中,“對(duì)象”是現(xiàn)實(shí)世界的實(shí)體或概念在計(jì)算機(jī)邏輯中的抽象表示。具體地,對(duì)象是具有唯一對(duì)象名和固定對(duì)外接口的一組屬性和操作的集合,用來(lái)模擬組成或影響現(xiàn)實(shí)世界問(wèn)題的一個(gè)或一組因素。其中對(duì)象名是區(qū)別于其他對(duì)象的標(biāo)志;對(duì)外接口是對(duì)象在約定好的運(yùn)行框架和消息傳遞機(jī)制中與外界通信的通道;對(duì)象的屬性表示了它所處于的狀態(tài);而對(duì)象的操作則用來(lái)改變對(duì)象的狀態(tài)達(dá)到特定的功能。對(duì)象的最主要特點(diǎn)是以數(shù)據(jù)為中心,它是一個(gè)集成了數(shù)據(jù)和其上操作的獨(dú)立、自恰的邏輯單位。面向?qū)ο蟮膯?wèn)題求解就是力圖從實(shí)際問(wèn)題中抽象出這些封裝了數(shù)據(jù)和操作的對(duì)象,通過(guò)定義屬性和操作來(lái)表述它們的特征和功能,通過(guò)定義接口來(lái)描述它們的地位及與其他對(duì)象的關(guān)系,最終形成一個(gè)廣泛聯(lián)系的可理解、可擴(kuò)充、可維護(hù)、更接近于問(wèn)題本來(lái)面目的動(dòng)態(tài)對(duì)象模型系統(tǒng)。面向?qū)ο蟮某绦蛟O(shè)計(jì)將在面向?qū)ο蟮膯?wèn)題求解所形成的對(duì)象模型基礎(chǔ)之上,選擇一種面向?qū)ο蟮母呒?jí)語(yǔ)言來(lái)具體實(shí)現(xiàn)這個(gè)模型。相對(duì)于傳統(tǒng)的面向過(guò)程的程序設(shè)計(jì)方法,面向?qū)ο蟮某绦蛟O(shè)計(jì)具有如下的優(yōu)點(diǎn):(1)對(duì)象的數(shù)據(jù)封裝特性徹底消除了傳統(tǒng)結(jié)構(gòu)方法中數(shù)據(jù)與操作分離所帶來(lái)的種種問(wèn)題,提高了程序的可復(fù)用性和可維護(hù)性,降低了程序員保持?jǐn)?shù)據(jù)與操作相容的負(fù)擔(dān)。(2)對(duì)象的數(shù)據(jù)封裝特性還可以把對(duì)象的私有數(shù)據(jù)和公共數(shù)據(jù)分離開(kāi),保護(hù)了私有數(shù)據(jù),減少了可能的模塊間干擾,達(dá)到降低程序復(fù)雜性、提高可控性的目的。(3)對(duì)象作為獨(dú)立的整體具有良好的自恰性,即它可以通過(guò)自身定義的操作來(lái)管理自己。一個(gè)對(duì)象的操作可以完成兩類功能,一是修改自身的狀態(tài),二是向外界發(fā)布消息。當(dāng)一個(gè)對(duì)象欲影響其他的對(duì)象時(shí),它需要調(diào)用其他對(duì)象自身的方法,而不是直接去改變那個(gè)對(duì)象。對(duì)象的這種自恰性能使得所有修改對(duì)象的操作都以對(duì)象自身的一部分的形式存在于對(duì)象整體之中,維護(hù)了對(duì)象的完整性,有利于對(duì)象在不同環(huán)境下的復(fù)用、擴(kuò)充和維護(hù)。(4)在具有自恰性的同時(shí),對(duì)象通過(guò)一定的接口和相應(yīng)的消息機(jī)制與外界相聯(lián)系。這個(gè)特性與對(duì)象的封裝性結(jié)合在一起,較好地實(shí)現(xiàn)了信息的隱藏。即對(duì)象成為一只使用方便的“黑匣子”,其中隱藏了私有數(shù)據(jù)和細(xì)節(jié)內(nèi)容。使用對(duì)象時(shí)只需要了解其接口提供的功能操作即可,而不必了解對(duì)象內(nèi)部的數(shù)據(jù)描述和具體的功能實(shí)現(xiàn)。(5)繼承是面向?qū)ο蠓椒ㄖ谐庋b外的另一個(gè)重要特性,通過(guò)繼承可以很方便地實(shí)現(xiàn)應(yīng)用的擴(kuò)展和已有代碼的重復(fù)使用,在保證質(zhì)量的前提下提高了開(kāi)發(fā)效率,使得面向?qū)ο蟮拈_(kāi)發(fā)方法與軟件工程的新興方法——快速原型法很好地結(jié)合在一起。綜上所述,面向?qū)ο蟪绦蛟O(shè)計(jì)是將數(shù)據(jù)及數(shù)據(jù)的操作封裝在一起,成為一個(gè)不可分割的整體,同時(shí)將具有相同特征的對(duì)象抽象成為一種新的數(shù)據(jù)類型——類。通過(guò)對(duì)象間的消息傳遞使整個(gè)系統(tǒng)運(yùn)轉(zhuǎn)。通過(guò)對(duì)象類的繼承提供代碼重用的有效途徑。在面向?qū)ο蟪绦蛟O(shè)計(jì)方法中,其程序結(jié)構(gòu)是一個(gè)類的集合和各類之間以繼承關(guān)系聯(lián)系起來(lái)的結(jié)構(gòu),有一個(gè)主程序,在主程序中定義各對(duì)象并規(guī)定它們之間傳遞消息的規(guī)律。從程序執(zhí)行這一角度來(lái)看,可以歸結(jié)為各對(duì)象和它們之間的消息通信。面向?qū)ο蟪绦蛟O(shè)計(jì)最主要的特征是各對(duì)象之間的消息傳遞和各類之間的繼承。1.6.2對(duì)象、類與實(shí)體1.對(duì)象對(duì)象的概念是面向?qū)ο蠹夹g(shù)的核心所在。以面向?qū)ο蟮挠^點(diǎn)看來(lái),所有的面向?qū)ο蟮某绦蚨际怯蓪?duì)象來(lái)組成的,這些對(duì)象首先是自治、自恰的,同時(shí)它們還可以互相通信、協(xié)調(diào)和配合,從而共同完成整個(gè)程序的任務(wù)和功能。更確切地,面向?qū)ο蠹夹g(shù)中的對(duì)象就是現(xiàn)實(shí)世界中某個(gè)具體的物理實(shí)體在計(jì)算機(jī)邏輯中的映射和體現(xiàn)。比如,電視機(jī)是一個(gè)具體存在的,擁有外形,尺寸、顏色等外部特性和開(kāi)關(guān)、頻道設(shè)置等實(shí)在功能的實(shí)體;而這樣一個(gè)實(shí)體,在面向?qū)ο蟮某绦蛑校涂梢员磉_(dá)成一個(gè)計(jì)算機(jī)可理解、可操縱、具有一定屬性和行為的對(duì)象。類也是面向?qū)ο蠹夹g(shù)中一個(gè)非常重要的概念。簡(jiǎn)單地說(shuō),類是同種對(duì)象的集合與抽象。類是一種抽象的數(shù)據(jù)類型,它是所有具有一定共性的對(duì)象的抽象,而屬于類的某一個(gè)對(duì)象則被稱為是類的一個(gè)實(shí)例,是類的一次實(shí)例化的結(jié)果。如果類是抽象的概念,如“電視機(jī)”,那么對(duì)象就是某一個(gè)具體的電視機(jī),如“我家那臺(tái)電視機(jī)”。2.對(duì)象的狀態(tài)與行為對(duì)象都具有狀態(tài)和行為。對(duì)象的狀態(tài)又稱為對(duì)象的靜態(tài)屬性,主要指對(duì)象內(nèi)部所包含的各種信息,也就是變量。每個(gè)對(duì)象個(gè)體都具有自己專有的內(nèi)部變量,這些變量的值標(biāo)明了對(duì)象所處的狀態(tài)。當(dāng)對(duì)象經(jīng)過(guò)某種操作和行為而發(fā)生狀態(tài)改變時(shí),具體地就體現(xiàn)為它的屬性變量的內(nèi)容的改變。通過(guò)檢查對(duì)象屬性變量的內(nèi)容,就可以了解這個(gè)對(duì)象當(dāng)前所處于的狀態(tài)。仍然以電視機(jī)為例。每一個(gè)電視機(jī)都具有以下這些狀態(tài)信息:種類、品牌、外觀、大小、顏色、是否開(kāi)啟、所在頻道等。這些狀態(tài)在計(jì)算機(jī)中都可以用變量來(lái)表示。行為又稱為對(duì)象的操作,它主要表述對(duì)象的動(dòng)態(tài)屬性,操作的作用是設(shè)置或改變對(duì)象的狀態(tài)。比如一個(gè)電視機(jī)可以有打開(kāi)、關(guān)閉、調(diào)整音量、調(diào)節(jié)亮度、改變頻道等行為或操作。對(duì)象的操作一般都基于對(duì)象內(nèi)部的變量,并試圖改變這些變量(即改變對(duì)象的狀態(tài))。如“打開(kāi)”的操作只對(duì)處于關(guān)閉狀態(tài)的電視機(jī)有效,而執(zhí)行了“打開(kāi)”操作之后,電視機(jī)原有的關(guān)閉狀態(tài)將改變。對(duì)象的狀態(tài)在計(jì)算機(jī)內(nèi)部是用變量來(lái)表示,而對(duì)象的行為在計(jì)算機(jī)內(nèi)部是用方法來(lái)表示的。方法實(shí)際上類似于面向過(guò)程中的函數(shù)。對(duì)象的行為或操作定義在其方法的內(nèi)部。3.對(duì)象的關(guān)系一個(gè)復(fù)雜的系統(tǒng)必然包括多個(gè)對(duì)象,這些對(duì)象間可能存在的關(guān)系有三種:包含、繼承和關(guān)聯(lián)。(1)包含當(dāng)對(duì)象A是對(duì)象B的屬性時(shí),稱對(duì)象B包含對(duì)象A。例如,每臺(tái)電視機(jī)都包括一個(gè)顯像管。當(dāng)把顯像管抽象成一個(gè)計(jì)算機(jī)邏輯中的對(duì)象時(shí),它與電視機(jī)對(duì)象之間就是包含的關(guān)系。當(dāng)一個(gè)對(duì)象包含另一個(gè)對(duì)象時(shí),它將在自己的內(nèi)存空間中為這個(gè)被包含對(duì)象留出專門的空間,即被包含對(duì)象將被保存在包含它的對(duì)象內(nèi)部,就像顯像管被包含在電視機(jī)之中一樣,這與它是電視機(jī)組成部分的地位是非常吻合的。(2)繼承當(dāng)對(duì)象A是對(duì)象B的特例時(shí),稱對(duì)象A繼承了對(duì)象B。例如,黑白電視機(jī)是電視機(jī)的一種特例,彩色電視機(jī)是電視機(jī)的另一種特例。如果分別為黑白電視機(jī)和彩色電視機(jī)抽象出黑白電視機(jī)對(duì)象和彩色電視機(jī)對(duì)象,則這兩種對(duì)象與電視機(jī)對(duì)象之間都是繼承的關(guān)系。實(shí)際上,這里所說(shuō)的對(duì)象間的繼承關(guān)系就是后面要詳細(xì)介紹的類間的繼承關(guān)系。作為特例的類稱為子類,而子類所繼承的類稱為父類。父類是子類公共關(guān)系的集合,子類將在父類定義的公共屬性的基礎(chǔ)上,根據(jù)自己的特殊性特別定義自己的屬性。例如彩色電視機(jī)對(duì)象除了擁有電視機(jī)對(duì)象的所有屬性之外,還特別定義了靜態(tài)屬性“色度”和相應(yīng)的動(dòng)態(tài)操作“調(diào)節(jié)色度”。(3)關(guān)聯(lián)當(dāng)對(duì)象A的引用是對(duì)象B的屬性時(shí),稱對(duì)象A和對(duì)象B之間是關(guān)聯(lián)關(guān)系。所謂對(duì)象的引用是指對(duì)象的名稱、地址、句柄等可以獲取或操縱該對(duì)象的途徑。相對(duì)于對(duì)象本身,對(duì)象的引用所占用的內(nèi)存空間要少得多,它只是找到對(duì)象的一條線索。通過(guò)它,程序可以找到真正的對(duì)象,并訪問(wèn)這個(gè)對(duì)象的數(shù)據(jù),調(diào)用這個(gè)對(duì)象的方法。例如,每臺(tái)電視機(jī)都對(duì)應(yīng)一個(gè)生產(chǎn)廠商,如果把生產(chǎn)廠商抽象成廠商對(duì)象,則電視機(jī)對(duì)象應(yīng)該記錄自己的生產(chǎn)廠商是誰(shuí),此時(shí)電視機(jī)對(duì)象和廠商對(duì)象之間就是關(guān)聯(lián)的關(guān)系。關(guān)聯(lián)與包含是兩種不同的關(guān)系。廠商并不是電視機(jī)的組成部分,所以電視機(jī)對(duì)象里不需要也不可能保存整個(gè)廠商對(duì)象,而只需要保存一個(gè)廠商對(duì)象的引用,例如廠商的名稱。這樣,當(dāng)需要廠商對(duì)象時(shí),如當(dāng)需要從廠商那里購(gòu)買一個(gè)零件時(shí),只需要根據(jù)電視機(jī)對(duì)象中保存的廠商的名字就可以方便地找到這個(gè)廠商對(duì)象。1.6.3封裝、繼承、多態(tài)所有的面向?qū)ο蟮木幊陶Z(yǔ)言,包括C#在內(nèi),都有3個(gè)最基本的共同特點(diǎn):封裝、繼承和多態(tài)性。1.封裝封裝(Encapsulation)是這樣一種編程機(jī)制,它把代碼和其操作的數(shù)據(jù)捆綁在一起,從而防止了外部對(duì)數(shù)據(jù)和代碼的干擾和濫用,保證了數(shù)據(jù)和代碼的安全性。OO語(yǔ)言通過(guò)創(chuàng)建“自包含的暗箱”實(shí)現(xiàn)代碼和數(shù)據(jù)的捆綁。暗箱中包含所有必要的數(shù)據(jù)和代碼。代碼和數(shù)據(jù)以這種方式鏈接起來(lái)就創(chuàng)建了一個(gè)對(duì)象。換句話說(shuō),對(duì)象是一種支持封裝的設(shè)備。在一個(gè)對(duì)象中,代碼、數(shù)據(jù)或者兩者都可以是該對(duì)象私有的(private),也可以是公共的(public)。私有代碼或數(shù)據(jù)只能被本對(duì)象內(nèi)部的其他部分可見(jiàn)和可訪問(wèn)。也就是說(shuō),私有代碼或數(shù)據(jù)不能被對(duì)象以外的程序塊所訪問(wèn)。如果代碼或數(shù)據(jù)是公共的,程序的其他部分就可以訪問(wèn)它,即使它們被定義在對(duì)象中。典型的做法是,對(duì)象的公共部分用來(lái)提供一個(gè)訪問(wèn)該對(duì)象私有元素的受控接口。C#封裝的基本單位是“類”(class),類定義對(duì)象的格式。它規(guī)定數(shù)據(jù)和操作數(shù)據(jù)的代碼。C#使用類來(lái)規(guī)范構(gòu)建對(duì)象。對(duì)象是類的實(shí)例。所以說(shuō),類的本質(zhì)就是一套規(guī)定如何創(chuàng)建對(duì)象的計(jì)劃。組成類的代碼和數(shù)據(jù)叫做類的成員。具體地說(shuō),類中定義的數(shù)據(jù)叫做類的“成員變量”或者“實(shí)例變量”。操作數(shù)據(jù)的代碼叫做“成員方法”或“方法”。方法在C#中指的是一個(gè)子過(guò)程,或稱“函數(shù)”。2.繼承繼承(Inheritance)是一個(gè)對(duì)象獲得另一個(gè)對(duì)象的屬性的過(guò)程。它的重要性源于它支持按層次分類概念。這與現(xiàn)實(shí)世界是一致的,大多數(shù)知識(shí)因?yàn)閷哟位诸惗兊萌菀渍莆?即從上至下)。例如,紅色、美味的蘋(píng)果屬于蘋(píng)果類,而蘋(píng)果類又屬于水果類,并且最終屬于食物這個(gè)大類。食物類擁有許多屬性(可以吃,有營(yíng)養(yǎng)等),邏輯上也適用于它的子類——水果。除了這些性質(zhì)以外,水果類還有許多特殊的性質(zhì)(多汁,甜等等)以使它區(qū)別于其他的食物。蘋(píng)果類定義了蘋(píng)果所獨(dú)有的屬性(長(zhǎng)在樹(shù)上,不生長(zhǎng)在熱帶等等)。紅色、美味的蘋(píng)果繼承了所有這些類,并且定義了那些屬于它的特有的屬性。如果不使用繼承,每一個(gè)對(duì)象都必須精確地定義它的全部屬性。使用繼承,一個(gè)對(duì)象可以從它父類繼承所有的通用屬性,而只需定義它特有的屬性。所以,正是繼承機(jī)制可以使一個(gè)對(duì)象成為一個(gè)更通用類的一個(gè)特例成為可能。3.多態(tài)性多態(tài)性(Polymorphism來(lái)自希臘語(yǔ),意思是多種形態(tài))是指允許一個(gè)接口訪問(wèn)動(dòng)作的通用類的性質(zhì)。汽車方向盤(pán)就是多態(tài)性的一個(gè)簡(jiǎn)單例子。不論你的汽車是手動(dòng)轉(zhuǎn)向、動(dòng)力轉(zhuǎn)向還是齒輪齒條轉(zhuǎn)向,操縱方法都是一樣的。不論什么樣的轉(zhuǎn)向系統(tǒng),向左轉(zhuǎn)動(dòng),方向盤(pán)將使汽車左轉(zhuǎn)。當(dāng)然,這種統(tǒng)一接口的好處是一旦你會(huì)開(kāi)車,你就可以駕駛各種車輛。同樣的規(guī)則也適用于編程。以堆棧(后入先出)為例,可能你的程序需要3種不同的堆棧類型,分別用于整數(shù)值、浮點(diǎn)數(shù)值和字符。在這里,雖然堆棧存儲(chǔ)數(shù)據(jù)類型不同,但每個(gè)堆棧的算法是相同的。在非OO語(yǔ)言中,需要?jiǎng)?chuàng)建3組不同名字的堆棧實(shí)用程序,但是,由于多態(tài)性,在C#中只需創(chuàng)建一套通用的堆棧實(shí)用程序來(lái)應(yīng)付3種特定的情況。一般地,多態(tài)性的概念常被解釋為“一個(gè)接口,多種方法”。這意味著可以為一組相關(guān)活動(dòng)設(shè)計(jì)一個(gè)通用接口。多態(tài)性允許用相同接口規(guī)定一個(gè)通用類來(lái)減輕問(wèn)題的復(fù)雜度。選擇適當(dāng)?shù)膭?dòng)作(方法)適應(yīng)不同環(huán)境的工作則留給編譯器去做。作為編程者,無(wú)需手工去做這些事情,只需利用通用接口即可。1.6.4面向?qū)ο蟮能浖_(kāi)發(fā)過(guò)程面向?qū)ο蟮能浖_(kāi)發(fā)過(guò)程可以大體劃分為面向?qū)ο蟮姆治?ObjectOrientedanalysis,OOA)、面向?qū)ο蟮脑O(shè)計(jì)(Objectorienteddesign,OOD)、面向?qū)ο蟮膶?shí)現(xiàn)(Objectorientedprogramming,OOP)三個(gè)階段。1.面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮姆治龅闹饕饔檬敲鞔_用戶的需求,并用標(biāo)準(zhǔn)化的面向?qū)ο蟮哪P鸵?guī)范地表述這一需求,最后將形成面向?qū)ο蟮姆治瞿P?,即OOA模型。分析階段的工作應(yīng)該由用戶和開(kāi)發(fā)人員共同協(xié)作完成。需求分析是要抽取存在于用戶需求中的各對(duì)象實(shí)體,分析、明確這些對(duì)象實(shí)體的靜態(tài)數(shù)據(jù)屬性和動(dòng)態(tài)操作屬性以及它們之間的相互關(guān)系;更重要地,要能夠反映出由多個(gè)對(duì)象組成的系統(tǒng)的整體功能和狀態(tài),包括各
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合并同類項(xiàng)解元次方程說(shuō)課稿
- 電商項(xiàng)目規(guī)劃
- 美術(shù)館黃金屋租賃合同
- 休閑娛樂(lè)場(chǎng)所消火栓施工合同
- 會(huì)計(jì)師事務(wù)所出納人員聘用協(xié)議
- 老年大學(xué)教師勞動(dòng)合同范本
- 羽絨制品維修工聘用合同模板
- 農(nóng)藥采購(gòu)合同管理
- 電梯工程師招聘協(xié)議
- 房地產(chǎn)開(kāi)發(fā)招標(biāo)廉政責(zé)任
- 環(huán)保設(shè)備售后服務(wù)體系建設(shè)方案
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院《體育保健學(xué)(運(yùn)動(dòng)傷害急救與防護(hù))》2022-2023學(xué)年第一學(xué)期期末試卷
- 項(xiàng)目實(shí)施管理方案
- 船舶委托設(shè)計(jì)合同模板
- 人教版八年級(jí)上冊(cè)生物全冊(cè)教案(完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 成都師范學(xué)院《教師口語(yǔ)》2021-2022學(xué)年第一學(xué)期期末試卷
- 肺上葉惡性腫瘤護(hù)理查房
- 棋牌室消防應(yīng)急預(yù)案
- 蔣詩(shī)萌小品《誰(shuí)殺死了周日》臺(tái)詞完整版
- 醫(yī)美機(jī)構(gòu)轉(zhuǎn)讓合同模板
- 帶您走進(jìn)西藏學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論