《Visual_C++.NET程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》課件.ppt_第1頁(yè)
《Visual_C++.NET程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》課件.ppt_第2頁(yè)
《Visual_C++.NET程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》課件.ppt_第3頁(yè)
《Visual_C++.NET程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》課件.ppt_第4頁(yè)
《Visual_C++.NET程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩336頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Visual_C+.NET程序設(shè)計(jì)教程與上機(jī)指導(dǎo)課件,第1章 概 述,教學(xué)提示:微軟推出 .NET是為了適應(yīng)Internet的發(fā)展而作出的應(yīng)對(duì)決策,其中Visual C+ .NET是微軟的Visual C+系列軟件的升級(jí)版本,用它來(lái)開(kāi)發(fā)本機(jī)應(yīng)用程序或Internet Web程序都有顯著的增強(qiáng)。本章主要介紹Visual C+ .NET的開(kāi)發(fā)界面及可以開(kāi)發(fā)的常用程序類型。,教學(xué)目標(biāo):初步介紹Visual C+ .NET開(kāi)發(fā)界面,使初學(xué)者對(duì)Visual C+ .NET的開(kāi)發(fā)環(huán)境有一個(gè)整體的認(rèn)識(shí)。本書(shū)用的軟件版本為Visual Studio .NET 2003中文版,如果機(jī)器上裝的不是這個(gè)版本,可能界面上有些差異,但是這些差異非常小,只要稍微注意一下,基本上不會(huì)妨礙學(xué)習(xí)。如果還是不太放心的話,請(qǐng)按第1章的步驟安裝此版本軟件,這樣就可以省去一些麻煩。,1.1 Visual C+ .NET簡(jiǎn)介,微軟于2000年6月22日向全球發(fā)布了 .NET,引起全球的轟動(dòng), .NET使程序員的編程方式產(chǎn)生了很大的變化。 .NET平臺(tái)在以Internet為基礎(chǔ)的計(jì)算和通信激增的背景下,通過(guò)先進(jìn)的軟件技術(shù),利用網(wǎng)絡(luò)協(xié)議和格式協(xié)調(diào)眾多的智能設(shè)備與網(wǎng)站,從而提供更簡(jiǎn)單、更為個(gè)性化且更有效的Internet服務(wù)。 微軟為了配合其 .NET戰(zhàn)略,發(fā)布了Visual Studio .NET。 Visual Studio .NET主要包括三套產(chǎn)品:Visual C# .NET、Viusal Basic .NET和Visual C+ .NET。,1.2 安裝Visual C+ .NET,Visual C+ .NET是Visual Studio .NET的一部分,表 1.1 以安裝Visual Studio .NET 2003 為例,列出了安裝系統(tǒng)需求。 滿足上述要求的計(jì)算機(jī)可以進(jìn)行安裝了 。 Visual Studio . NET 2003共有6張安裝光盤,包括2張Visual Studio .NET安裝光盤,1張系統(tǒng)必備盤,3張MSDN安裝盤。將Visual Studio .NET的第一張安裝光盤放入光驅(qū),即出現(xiàn)如圖1.1所示的畫(huà)面。 然后,讀者可以按照安裝程序的步驟,首先安裝系統(tǒng)必備,系統(tǒng)必備包括一些開(kāi)發(fā) .NET程序必需的Internet組件和 .NET 應(yīng)用程序框架。安裝完系統(tǒng)必備后,按照提示一步步安裝Visual Studio .NET,由于過(guò)程比較簡(jiǎn)單,在此就不贅述了 。前兩步安裝完成后 ,最好安裝MSDN產(chǎn)品文檔,因?yàn)镸SDN中包含多達(dá)1.9GB的文檔和例子,而且可以很方便地查詢。,表1.1 安裝Visual Studio .NET 2003的系統(tǒng)要求,返回,圖1.1 Visual Studio .NET安裝程序,返回,1.3 Visual C+ .NET開(kāi)發(fā)界面簡(jiǎn)介,單擊Windows的【開(kāi)始】|【程序】| Microsoft Visual Studio .NET 2003命令,Microsoft Visual Studio .NET 2003 即可以啟動(dòng) 。其啟動(dòng)的初始界面如圖1.2所示。,圖1.2 Visual Studio .NET的起始頁(yè),下面來(lái)新建一個(gè)Visual C+ .NET項(xiàng)目,以便于更詳細(xì)地了解Visual C+ .NET程序開(kāi)發(fā)環(huán)境。按照以下步驟,一步步進(jìn)行: 首先單擊如圖1.2中的選項(xiàng)【項(xiàng)目】,再單擊【新建項(xiàng)目】按鈕,出現(xiàn)【新建項(xiàng)目】對(duì)話框,選擇左邊【項(xiàng)目類型】|【Visual C+項(xiàng)目】| MFC選項(xiàng),在右邊的【模板】框中單擊【MFC應(yīng)用程序】,再在【名稱】文本框中輸入項(xiàng)目名稱Jiao1_1,如圖1.3所示。,圖1.3 【新建項(xiàng)目】對(duì)話框,返回,單擊【確定】按鈕,即可進(jìn)入如圖1.4所示的【MFC應(yīng)用程序向?qū)А繉?duì)話框。在這里共有7個(gè)步驟供選擇,由于后面會(huì)詳細(xì)講解向?qū)У膭?chuàng)建步驟,所以現(xiàn)在都用默認(rèn)值,直接單擊【完成】按鈕即可創(chuàng)建一個(gè)多文檔應(yīng)用程序項(xiàng)目。,圖1.4 【MFC應(yīng)用程序向?qū)А繉?duì)話框,返回,可以在【解決方案資源管理器】視圖中點(diǎn)開(kāi)所生成的項(xiàng)目,即可看到本項(xiàng)目所包含的文件(如果找不到,可以單擊菜單【視圖】|【解決方案資源管理器】即可出現(xiàn))??梢噪p擊文件Jiao1_1.cpp,在中央的編輯器界面中進(jìn)行代碼的編寫(xiě)。其界面如圖1.5所示。,圖1.5 Visual C+ .NET的界面,返回,Visual C+ .NET 的集成界面包括菜單欄、工具欄、解決方案資源管理器、類視圖、資源視圖、動(dòng)態(tài)幫助、屬性窗口、輸出窗口,下面將進(jìn)行詳細(xì)介紹。 1.3.1 菜單欄 1.3.2 工具欄 1.3.3 解決方案資源管理器 1.3.4 類視圖 1.3.5 資源視圖 1.3.6 動(dòng)態(tài)幫助 1.3.7 屬性窗口 1.3.8 任務(wù)列表及輸出等窗口,1.3.1 菜單欄,Visual C+ .NET的主菜單欄包括9個(gè)菜單項(xiàng),這些菜單項(xiàng)可以完成幾乎所有的任務(wù),因此了解并掌握這些菜單命令是必要的。請(qǐng)注意,Visual C+ .NET的菜單會(huì)根據(jù)當(dāng)前打開(kāi)不同的對(duì)象而有一些變化,所以本節(jié)只講常見(jiàn)的菜單項(xiàng)命令。,返回,1.3.2 工具欄,由于工具欄上面的按鈕命令都可以在相應(yīng)的菜單中找到 ,所以不詳細(xì)講解了??梢钥纯磮D標(biāo)就知道它是干什么的,還可以把鼠標(biāo)移動(dòng)到按鈕上面停一下,就有相應(yīng)的提示對(duì)話框解釋按鈕的功能,使用很方便。而且還可以自己打開(kāi)或定制工具欄。在工具欄上面右擊,在出現(xiàn)的彈出式菜單中單擊相應(yīng)的命令即可以顯示或隱藏相應(yīng)的工具欄 。圖1.15是標(biāo)準(zhǔn)工具欄的樣式 。從左到右的命令依次為:新建項(xiàng)目、添加項(xiàng)目、打開(kāi)文件、保存、全部保存、剪切、復(fù)制、粘貼、撤消、重復(fù)、向后定位、向前定位、啟動(dòng)、解決方案配置、在文件中查找、查找、解決方案資源管理器、屬性窗口、對(duì)象瀏覽器、工具箱以及類視圖。,返回,圖1.15 標(biāo)準(zhǔn)工具欄,返回,1.3.3 解決方案資源管理器,如圖1.16 ,【解決方案資源管理器】窗口以圖形方式顯示了組成項(xiàng)目的所有文件,Visual C+ .NET中屬于同一應(yīng)用程序的所有項(xiàng)目稱作解決方案。以前版本(如Visual C+ 6.0) 中同一應(yīng)用程序中的所有項(xiàng)目組成的一個(gè)整體叫作工程,它們的意思差不多,只是換了一個(gè)名字。【解決方案資源管理器】窗口中顯示了每個(gè)解決方案中文件的樹(shù)狀查看列表,包括各個(gè)項(xiàng)目的引用、源文件、頭文件、資源文件、配置文件和幫助文件。雙擊相應(yīng)的選項(xiàng),Visual C+ .NET自動(dòng)用合適的編輯器打開(kāi)它,可以進(jìn)行任意的修改。如果要給解決方案添加一些項(xiàng)目,可在解決方案上面右擊,選擇彈出式菜單中相應(yīng)的選項(xiàng)可以添加所要的項(xiàng)目。如果該窗口已經(jīng)被關(guān)閉,則可以菜單命令【視圖】|【解決方案資源管理器】來(lái)打開(kāi)。,返回,圖1.16 【解決方案資源管理器】窗口,返回,1.3.4 類視圖,Visual C+ .NET中的項(xiàng)目都是由類來(lái)組織的。見(jiàn)圖1.17【類視圖】窗口,解決方案Jiao1_1下面由【宏和常數(shù)】、【全局函數(shù)和變量】、CAboutDlg類、CchildFrame(子框架窗口類)、CJiao1_1App(應(yīng)用程序類)、CJiao1_1DoC(文檔類)、CJiao1_1View(視圖類)、CmainFrame(框架窗口類)等組成(如果你看不懂,不要緊,這里只是稍微提一下,以后有詳細(xì)的說(shuō)明)。,返回,圖1.17 【類視圖】窗口,返回,1.3.5 資源視圖,【資源視圖】窗口是程序員在Visual C+ .NET中管理資源的地方,它以樹(shù)形視圖的結(jié)構(gòu)把解決方案中的所有資源都一項(xiàng)一項(xiàng)地列出來(lái)了,給人以非常直觀和清晰的感覺(jué)。,返回,1.3.6 動(dòng)態(tài)幫助,圖1.19所示為【動(dòng)態(tài)幫助】窗口,它提供了非常強(qiáng)大的智能幫助功能來(lái)幫助開(kāi)發(fā)應(yīng)用程序,如果在編輯框中選中不清楚的類或者類的屬性或方法時(shí),幫助視圖中就提供選擇項(xiàng)的幫助提示功能,可以單擊相應(yīng)的提示項(xiàng)來(lái)詳細(xì)地了解該項(xiàng)的說(shuō)明,使用非常貼心,是程序員編程的好幫手。還可以單擊示例和開(kāi)始項(xiàng)下面的相應(yīng)項(xiàng)來(lái)學(xué)習(xí)有關(guān)知識(shí)。如果在Visual C+ .NET編程遇到困難時(shí),第一個(gè)想到的幫助者就是Visual C+ .NET提供的動(dòng)態(tài)幫助功能,也可以打開(kāi)MSDN 2003來(lái)提供幫助。,返回,圖1.19 【動(dòng)態(tài)幫助】窗口,返回,1.3.7 屬性窗口,可以這么說(shuō),一個(gè)人開(kāi)發(fā)Visual C+ .NET的速度和熟練程度,和他對(duì)【屬性】窗口的熟練使用程度是息息相關(guān)的。讀者可能用過(guò)Visual C+以前的版本,如Visual C+ 6.0中提供的ClassWizard對(duì)話框,對(duì)類的管理是非常方便的(包括資源控件和類成員的對(duì)應(yīng)連接,數(shù)據(jù)傳遞路徑,消息處理等),可能對(duì)Visual C+ .NET中取消了ClassWizard功能感到非常失望,但是這只是個(gè)習(xí)慣問(wèn)題,如果對(duì)【屬性】窗口熟悉以后,一定會(huì)為它提供的功能折服。眾所周知,Visual C+ .NET里面所有的項(xiàng)目都是有屬性的,通過(guò)使用【屬性】窗口可以非常方便地修改屬性。,返回,1.3.8 任務(wù)列表及輸出等窗口,圖1.21所示為任務(wù)列表及輸出等窗口。其中任務(wù)列表窗口可以瀏覽用戶任務(wù)、生成錯(cuò)誤。可以在此窗口中單擊【單擊此處添加新任務(wù)】來(lái)添加新任務(wù),也可以在項(xiàng)目代碼中以特定的格式添加注釋。如果此窗口不可見(jiàn),可單擊菜單【視圖】|【其他窗口】|【任務(wù)列表】來(lái)顯示。,圖1.21 任務(wù)列表及輸出等窗口,返回,1.4 利用Visual C+ .NET向?qū)蓱?yīng)用程序,Visual C+ .NET為用戶提供了功能強(qiáng)大的應(yīng)用程序生成向?qū)?,用戶可以不編?xiě)一行代碼就能生成一個(gè)典型的Windows應(yīng)用程序框架。在1.3節(jié)涉及到了利用MFC應(yīng)用程序向?qū)沙绦騄iao1_1,下面重點(diǎn)講解利用向?qū)蓱?yīng)用程序的具體過(guò)程,并生成一個(gè)可以編輯文字的MFC多文檔應(yīng)用程序Jiao1_2。 1.4.1 選擇新建項(xiàng)目類型 1.4.2 利用向?qū)Ы?yīng)用程序 1.4.3 生成應(yīng)用程序,1.4.1 選擇新建項(xiàng)目類型,在起始頁(yè)上單擊【新建項(xiàng)目】按鈕,或者在菜單欄上選擇【文件】|【新建】|【項(xiàng)目】,就會(huì)彈出如圖1.3所示的【新建項(xiàng)目】對(duì)話框,用戶可以對(duì)所要的項(xiàng)目類型進(jìn)行選擇??梢钥吹?,Visual C+ .NET開(kāi)發(fā)的程序類型幾乎覆蓋了所有的開(kāi)發(fā)類型,如Windows應(yīng)用程序、自定義類庫(kù)、控件庫(kù)、ASP.NET Web應(yīng)用程序、ASP.NET Web Service、Web控件庫(kù)、ATL Server Web 服務(wù)、控制臺(tái)應(yīng)用程序、Windows服務(wù)、空項(xiàng)目以及空Web項(xiàng)目等等。本書(shū)重點(diǎn)講解MFC應(yīng)用程序的開(kāi)發(fā)。,返回,1. 應(yīng)用程序類型,在【MFC應(yīng)用程序向?qū)А繉?duì)話框中,選擇左邊的【應(yīng)用程序類型】,在右邊的【應(yīng)用程序類型】選項(xiàng)組中選擇【多文檔】單選按鈕,其他選項(xiàng)用默認(rèn)值,如圖1.22所示??梢钥吹剑肕FC可以創(chuàng)建基于對(duì)話框的應(yīng)用程序、單文檔應(yīng)用程序、多文檔應(yīng)用程序和多頂級(jí)文檔應(yīng)用程序。,圖1.22 選擇應(yīng)用程序類型,返回,2. 復(fù)合文檔支持,【復(fù)合文檔支持】是一個(gè)程序中能夠嵌入另一個(gè)應(yīng)用程序的功能,容器就是只能維護(hù)嵌入的對(duì)象;袖珍服務(wù)器指應(yīng)用程序不能獨(dú)立運(yùn)行,而是被調(diào)用使之為其他程序服務(wù);完全服務(wù)器指能夠獨(dú)立運(yùn)行,并能為其他應(yīng)用程序提供服務(wù);容器/完全服務(wù)器指應(yīng)用程序既可以作容器,也可以作完全服務(wù)器對(duì)象。保持默認(rèn)值不變,即不選擇任何復(fù)合文檔支持具體見(jiàn)圖1.23。,圖1.23 設(shè)置復(fù)合文檔支持,返回,3. 文檔模板字符串,選左邊的【文檔模板字符串】,右邊的選項(xiàng)都用默認(rèn)值。文件 擴(kuò)展名指文件的后綴名,具體見(jiàn)圖1.24。,圖1.24 設(shè)置文檔模板字符串,返回,4. 數(shù)據(jù)庫(kù)支持,在左邊選擇【數(shù)據(jù)庫(kù)支持】,將出現(xiàn)如圖1.25所示的界面。如果不編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序,選擇【無(wú)】;如果想要訪問(wèn)數(shù)據(jù)庫(kù) ,但不想應(yīng)用程序從類CFormView派生視圖 ,或者其界面不含有記錄菜單,則選擇【僅支持頭文件】;如果想要應(yīng)用程序從類CFormView派生視圖,并且其界面含有記錄菜單,但不需要保存文檔,則選擇【不支持文件的數(shù)據(jù)庫(kù)視圖】;如果還需要文檔保存功能,則選擇【支持文件的數(shù)據(jù)庫(kù)視圖】。當(dāng)選擇第3、4項(xiàng)時(shí),你還要選擇客戶端的數(shù)據(jù)庫(kù)類型:OLE DB或者ODBC,并可以指定數(shù)據(jù)源及其他操作。,圖1.25 設(shè)置數(shù)據(jù)庫(kù)支持,返回,5. 用戶界面功能,選擇左邊的【用戶界面功能】,右邊的【主框架樣式】和【工具欄】都用默認(rèn)值,具體見(jiàn)圖1.26。,圖1.26 設(shè)置用戶界面功能,返回,6. 高級(jí)功能,選擇左邊的【高級(jí)功能】,將出現(xiàn)如圖1.27所示的界面,保持默認(rèn)設(shè)置?!緟^(qū)分上下文的幫助】可以選擇WinHelp格式或HTML幫助格式,WinHelp格式是傳統(tǒng)的Windows幫助格式、幫助源文件為.RTF文件;而HTML幫助格式是Windows最新幫助格式,幫助源文件為.HTML文件?!咀罱募斜砩系奈募?shù)】為4。如圖1.27所示。,圖1.27 設(shè)定高級(jí)功能,返回,7. 生成的類,選擇左邊【生成的類】,將出現(xiàn)如圖1.28所示的界面。其中【基類】下拉列表框中有許多基類可供選擇,注意在【基類】中選擇CEditView。 單擊【完成】按鈕,Visual C+ .NET就自動(dòng)生成一個(gè)多文檔應(yīng)用程序。,圖1.28 選擇生成的類,返回,1.4.3 生成應(yīng)用程序,選擇菜單欄上的【生成】|【生成解決方案】,然后選擇【調(diào)試】|【開(kāi)始執(zhí)行(不調(diào)試)】,或者直接按Ctrl + F5鍵編譯運(yùn)行,運(yùn)行界面如圖1.29所示。程序中可以對(duì)文字進(jìn)行簡(jiǎn)單的編輯。如果文檔有了更改,系統(tǒng)還會(huì)提示用戶是否保存文檔???,一個(gè)簡(jiǎn)單的文檔編輯器誕生了,不需要用戶寫(xiě)一行代碼。,返回,圖1.29 Jiao1_2程序運(yùn)行界面,返回,1.5 理解Visual C+ .NET工程,Visual C+ .NET作為一種程序設(shè)計(jì)語(yǔ)言,同時(shí)也是一個(gè)集成開(kāi)發(fā)工具,提供了軟件代碼自動(dòng)生成和可視化的資源編輯功能。在使用Visual C+ .NET開(kāi)發(fā)應(yīng)用程序的過(guò)程中,系統(tǒng)生成了大量的各種類型的文件,在本節(jié)中將要詳細(xì)介紹Visual C+ .NET中這些不同類型的文件分別起什么樣的作用 , 在此基礎(chǔ)上對(duì) Visual C+ .NET如何管理應(yīng)用程序所用到的各種文件有一個(gè)全面的認(rèn)識(shí)。,1.6 上 機(jī) 指 導(dǎo),程序員最重要的是動(dòng)手能力,如果只會(huì)構(gòu)思,但是不能把思想變成一個(gè)實(shí)實(shí)在在的程序,那么也是很遺憾的。勤于練習(xí)才能真正掌握編程的方法。在1.3小節(jié)我們已經(jīng)練習(xí)了利用 MFC 應(yīng)用程序向?qū)?MFC 應(yīng)用程序 。下面來(lái)練習(xí)一下利用向?qū)煽刂婆_(tái)程序的方法。 Visual C+ .NET可以開(kāi)發(fā)基于 .NET的控制臺(tái)程序和基于Win32的控制臺(tái)程序。 .NET的控制臺(tái)應(yīng)用程序是基于通用語(yǔ)言運(yùn)行時(shí)環(huán)境的,而Win32控制臺(tái)程序是基于本機(jī)運(yùn)行環(huán)境的,直接生成本機(jī)機(jī)器碼。 1.6.1 .NET的控制臺(tái)程序開(kāi)發(fā)步驟 1.6.2 Win32的控制臺(tái)程序開(kāi)發(fā)步驟,第2章 Visual C+ .NET的基本語(yǔ)法,教學(xué)提示:在本章,主要是對(duì)Visual C+ .NET 的基本語(yǔ)法要素進(jìn)行介紹,包括標(biāo)識(shí)符和關(guān)鍵字、基本數(shù)據(jù)類型、變量和常量、命名空間、預(yù)編譯指令、運(yùn)算符和表達(dá)式。但僅僅掌握這些還是不夠的。本章還進(jìn)一步介紹了控制語(yǔ)句、結(jié)構(gòu)體、聯(lián)合體、枚舉、指針和數(shù)組的詳細(xì)使用方法。學(xué)習(xí)完這些內(nèi)容后,讀者對(duì)其語(yǔ)言將會(huì)有一個(gè)比較全面的了解。,教學(xué)目標(biāo):掌握Visual C+ .NET語(yǔ)言的基本數(shù)據(jù)類型,熟悉常用的標(biāo)識(shí)符、運(yùn)算符、關(guān)鍵字;掌握常量和變量的定義方法;掌握數(shù)據(jù)類型的轉(zhuǎn)換方法;理解預(yù)編譯指令、命名空間;掌握各種控制語(yǔ)句的使用方法;掌握結(jié)構(gòu)體、聯(lián)合體和枚舉的定義及其使用方法;掌握指針和數(shù)組的使用方法,熟練掌握函數(shù)的使用方法。通過(guò)上機(jī)實(shí)踐,初步掌握上述內(nèi)容的靈活運(yùn)用。,2.1 標(biāo)識(shí)符和關(guān)鍵字,任何一門語(yǔ)言都有它自己的標(biāo)識(shí)符和關(guān)鍵字,C+也不例外。標(biāo)識(shí)符(identifier)是指常量、變量、語(yǔ)句標(biāo)號(hào)、自定義函數(shù)、對(duì)象等能被編譯器識(shí)別而提供的惟一名稱,所有標(biāo)識(shí)符的首字符必須以字母(az,AZ)或下劃線(_)開(kāi)始,后面的字符可以是字母、下劃線或數(shù)字(09)。 C+語(yǔ)言區(qū)分大小寫(xiě),因此,大寫(xiě)的英文字母與其對(duì)應(yīng)的小寫(xiě)英文字母是表示不同的標(biāo)識(shí)符的,如localString和localstring代表兩個(gè)不同的標(biāo)識(shí)符。 關(guān)鍵字是C+語(yǔ)言保留的標(biāo)識(shí)符,每個(gè)關(guān)鍵字都有特殊的意義,不能當(dāng)作其他用途使用。,2.2 基本數(shù)據(jù)類型,C+語(yǔ)言使用確定的數(shù)據(jù)類型來(lái)組織各種數(shù)據(jù),并根據(jù)各種數(shù)據(jù)類型來(lái)存儲(chǔ)和操作這些數(shù)據(jù)?;镜臄?shù)據(jù)類型是C+預(yù)定義的類型,編程人員可以直接利用這些類型來(lái)定義數(shù)據(jù)。下面來(lái)看看C+中的基本數(shù)據(jù)類型:Bool(邏輯型)、char(字符型)、short(短整型)、int(整型)、long(長(zhǎng)整型)、float(浮型)、double(雙精度型)、long double(長(zhǎng)雙精度型)。 bool類型用true和false代表真與假,其占用空間是8位。 char是字符型類型,它在計(jì)算機(jī)里面是以ASCII表示的,占8位。 short、int和long都是整型,只是數(shù)據(jù)的位數(shù)不一樣:short占8位;int在DOS環(huán)境下占16位,在Windows下面占32位;long占32位。還可以在這三個(gè)類型前面加unsigned,表示無(wú)符號(hào)整數(shù)(即只表示正數(shù))。 Float、double、long double都是浮點(diǎn)型類型,只是位數(shù)不一樣,float占32位,double占64位,long double占80位。,2.3 常量和變量,常量是指C+語(yǔ)言中表示固定數(shù)值或字符值的標(biāo)識(shí)符,并且在程序的執(zhí)行過(guò)程中不允許修改。通過(guò)使用關(guān)鍵字const,可以將一個(gè)變量(下面會(huì)講變量)定義為一個(gè)常量,并且const可以位于數(shù)據(jù)類型前或者數(shù)據(jù)類型后面。其定義的一般格式為: type const 變量名值 或者 const type 變量名值 在定義變量時(shí),應(yīng)給出該變量的數(shù)據(jù)類型和名字,還可以給這個(gè)變量賦一個(gè)初始值,也可以在以后再賦值,系統(tǒng)在編譯時(shí)就會(huì)分配給該變量一個(gè)合適的內(nèi)存空間。 變量的一般定義為: 數(shù)據(jù)類型 變量名值(可選),2.4 命 名 空 間,命名空間是為了處理不同公司或個(gè)人使用相同的標(biāo)識(shí)符這種情況而使用的一個(gè)概念。假設(shè)AAA公司使用了自己的一套標(biāo)志符,BBB公司也使用自己的一套標(biāo)識(shí)符,現(xiàn)在如果要使用這兩家公司的某些標(biāo)識(shí)符,且兩個(gè)公司都提供了變量標(biāo)識(shí)符INTEGER,那么在程序中使用INTEGER到底是使用AAA公司的,還是BBB公司的呢?這是個(gè)棘手的問(wèn)題,Visual C+ .NET編譯器也會(huì)報(bào)錯(cuò)。,2.5 運(yùn)算符、表達(dá)式和語(yǔ)句,在C+語(yǔ)言中,運(yùn)算符是指對(duì)操作數(shù)進(jìn)行操作的符號(hào),按照運(yùn)算功能,C+運(yùn)算符可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符和賦值運(yùn)算符等,按優(yōu)先級(jí)順序,C+運(yùn)算符如表2.3所示。,2.6 預(yù)編譯指令,預(yù)編譯指令指在程序正式編譯前就由編譯器進(jìn)行編譯的操作,可以放在程序中的任何位置。常見(jiàn)的預(yù)編譯指令有: #include “頭文件“或#include : 該指令指示編譯器將頭文件的全部?jī)?nèi)容插入此處。若用括起頭文件則在系統(tǒng)的INCLUDE目錄中尋找文件,若用“”括起文件則在當(dāng)前目錄中尋找文件。一般來(lái)說(shuō),頭文件后綴名都為.h,其中主要內(nèi)容為各種變量的聲明。,2.7 數(shù)據(jù)類型轉(zhuǎn)換,在進(jìn)行程序的開(kāi)發(fā)過(guò)程中,數(shù)據(jù)類型的轉(zhuǎn)換是會(huì)經(jīng)常碰到的。在一個(gè)表達(dá)式當(dāng)中,所有的變量必須是相同類型才能進(jìn)行運(yùn)算,但是在一般的表達(dá)式中很難有相同類型的變量來(lái)進(jìn)行運(yùn)算。因此,不同類別的變量進(jìn)行運(yùn)算時(shí),C+會(huì)先將較低類型的操作數(shù)轉(zhuǎn)換為較高類型的操作數(shù)再進(jìn)行運(yùn)算。在計(jì)算機(jī)中,數(shù)據(jù)都是用二進(jìn)制位來(lái)存放的,較低類型是指存儲(chǔ)位數(shù)較少的類型,較高類型則是指存儲(chǔ)位數(shù)較多的類型。如定義變量int a和long b,則進(jìn)行a+b的運(yùn)算時(shí),要先將a轉(zhuǎn)換為long型,再與b相加。 數(shù)據(jù)類型的高低順序依序?yàn)椋簂ong double、double、float、long、int、short、char。,2.8 數(shù)據(jù)的基本輸入與輸出,數(shù)據(jù)的基本輸入與輸出是程序與用戶進(jìn)行交互的重要手段,可以設(shè)想一下,如果一個(gè)程序既不能輸入也不能輸出,那么這會(huì)是個(gè)什么程序?用戶什么數(shù)據(jù)都輸不進(jìn)去,也看不到程序的運(yùn)行結(jié)果。所以處理好程序的輸入輸出是很重要的。C+中提供了兩個(gè)基本的輸入和輸出的函數(shù):cout(輸出)及cin(輸入)。,2.9 控 制 語(yǔ) 句,程序控制語(yǔ)句控制程序的執(zhí)行過(guò)程和方向,因此是非常重要的。靈活運(yùn)用各種控制語(yǔ)句可以輕松地完成你想要做的事情。C+中的控制語(yǔ)句包括條件語(yǔ)句、循環(huán)語(yǔ)句、判斷和跳轉(zhuǎn)語(yǔ)句,下面具體介紹它們的用法。 2.9.1 條件(選擇)語(yǔ)句 2.9.2 循環(huán)語(yǔ)句 2.9.3 判斷和跳轉(zhuǎn)語(yǔ)句(轉(zhuǎn)移語(yǔ)句),2.9.1 條件(選擇)語(yǔ)句,C+語(yǔ)言支持幾種基本的條件語(yǔ)句:if語(yǔ)句、ifelse語(yǔ)句、?:語(yǔ)句、switch語(yǔ)句。 1. if語(yǔ)句 2. ifelse語(yǔ)句 3. ?:條件語(yǔ)句 4. switch語(yǔ)句,返回,1. if語(yǔ)句,if語(yǔ)句用于在程序中有條件地執(zhí)行某一語(yǔ)句序列,語(yǔ)法形式如下: if(表達(dá)式) 執(zhí)行語(yǔ)句;/滿足表達(dá)式時(shí)執(zhí)行的語(yǔ)句 其中表達(dá)式是一個(gè)關(guān)系或邏輯表達(dá)式,執(zhí)行語(yǔ)句是指當(dāng)表達(dá)式為真時(shí)執(zhí)行,為假時(shí)跳過(guò)執(zhí)行。如果執(zhí)行語(yǔ)句包含多個(gè)語(yǔ)句,則必須用包圍起來(lái)作為一個(gè)整體來(lái)執(zhí)行。例如:如果變量a大于變量b,則把a(bǔ)與b之和賦給變量c,其語(yǔ)句如下: if(ab) c=a+b;,返回,2. ifelse語(yǔ)句,它的一般格式是: if(表達(dá)式) 執(zhí)行語(yǔ)句1;/如果表達(dá)式為真,則執(zhí)行語(yǔ)句1 else 執(zhí)行語(yǔ)句2;/如果表達(dá)式為假,則執(zhí)行語(yǔ)句2 ifelse語(yǔ)句的變體結(jié)構(gòu)(可以判斷兩種以上的情況): if(表達(dá)式1) 執(zhí)行語(yǔ)句1;/如果表達(dá)式1為真,則執(zhí)行語(yǔ)句1 else if(表達(dá)式2) 執(zhí)行語(yǔ)句2;/如果表達(dá)式2為真,則執(zhí)行語(yǔ)句2 /如果表達(dá)式i為真,則執(zhí)行語(yǔ)句i . else 執(zhí)行語(yǔ)句n;/其他情況,則執(zhí)行語(yǔ)句n,返回,3. ?:條件語(yǔ)句,?:條件語(yǔ)句是ifelse條件語(yǔ)句的簡(jiǎn)化形式,其格式如下: (ab)?c:d;/如果表達(dá)式ab為真,則其結(jié)果為c,否則為d,返回,4. switch語(yǔ)句,switch語(yǔ)句與ifelse的變體結(jié)構(gòu)類似,都是從多種供選擇的情況中選擇一種執(zhí)行,其語(yǔ)法形式為: switch(表達(dá)式) case:值1: 語(yǔ)句段1;/如果表達(dá)式與值1相等,則執(zhí)行語(yǔ)句段1 break; case:值2: 語(yǔ)句段2;/如果表達(dá)式與值2相等,則執(zhí)行語(yǔ)句段2 break; ;/如果表達(dá)式與值i相等,則執(zhí)行語(yǔ)句段i default:/default語(yǔ)句段可以不要 語(yǔ)句段n:/如果表達(dá)式與值n相等,則執(zhí)行語(yǔ)句段n break; ,返回,2.9.2 循環(huán)語(yǔ)句,程序結(jié)構(gòu)中的重復(fù)性操作的語(yǔ)句可以用循環(huán)語(yǔ)句來(lái)完成,循環(huán)語(yǔ)句可以根據(jù)循環(huán)變量來(lái)執(zhí)行指定的次數(shù)。C+語(yǔ)言提供while、for、dowhile三種循環(huán)語(yǔ)句,它們之間的不同之處在于while和for先判斷條件,再執(zhí)行語(yǔ)句;而dowhile是先執(zhí)行語(yǔ)句,再判斷條件。這樣可以看出while和for循環(huán)有可能一次都不執(zhí)行,而dowhile至少執(zhí)行一次。它們的共同點(diǎn)是當(dāng)條件語(yǔ)句為非零時(shí)為真,而為零時(shí)則為假。這三種循環(huán)語(yǔ)句可以相互轉(zhuǎn)換。 1. while語(yǔ)句 2. for語(yǔ)句 3. dowhile循環(huán)語(yǔ)句,返回,1. while語(yǔ)句,當(dāng)循環(huán)次數(shù)無(wú)法計(jì)算或者很難確定時(shí),可以考慮用while循環(huán)語(yǔ)句。它的語(yǔ)法結(jié)構(gòu)為: while(表達(dá)式) 循環(huán)體語(yǔ)句;,返回,2. for語(yǔ)句,for語(yǔ)句通常用于處理具有固定長(zhǎng)度的數(shù)據(jù)結(jié)構(gòu),for循環(huán)語(yǔ)句的語(yǔ)法結(jié)構(gòu)如下: for(表達(dá)式1)初始化部分;(表達(dá)式2)循環(huán)條件部分;(表達(dá)式3)增量部分) 循環(huán)體語(yǔ)句; / 如果是單條語(yǔ)句,可以省略外面的大括弧 ,返回,3. dowhile循環(huán)語(yǔ)句,dowhile也叫“直到型”循環(huán)結(jié)構(gòu),即一直執(zhí)行到條件為假時(shí)退出循環(huán)。其格式為: do 循環(huán)語(yǔ)句 while(循環(huán)條件表達(dá)式);,返回,2.9.3 判斷和跳轉(zhuǎn)語(yǔ)句(轉(zhuǎn)移語(yǔ)句),當(dāng)執(zhí)行該類語(yǔ)句時(shí),它要改變程序的執(zhí)行順序,即不依次執(zhí)行緊跟其后的語(yǔ)句,而跳到另一個(gè)語(yǔ)句處接著執(zhí)行。從表面上看循環(huán)語(yǔ)句或條件語(yǔ)句也改變了程序的執(zhí)行順序,但由于整個(gè)循環(huán)可以看作一個(gè)語(yǔ)句(條件語(yǔ)句也一樣),因此它們也仍然是順序執(zhí)行的。C+中的轉(zhuǎn)移語(yǔ)句有break、continue和goto語(yǔ)句。 1. break語(yǔ)句 2. continue語(yǔ)句 3. goto語(yǔ)句,返回,1. break語(yǔ)句,break語(yǔ)句用于強(qiáng)制退出循環(huán)語(yǔ)句以及case語(yǔ)句的執(zhí)行,用在while和dowhile、for循環(huán)語(yǔ)句中,使它們終止執(zhí)行,即用于從循環(huán)體內(nèi)跳出,提前結(jié)束循環(huán)。用于switchcase中則是執(zhí)行對(duì)應(yīng)的case語(yǔ)句后跳出switchcase。,返回,2. continue語(yǔ)句,continue語(yǔ)句用于while、dowhile、for循環(huán)語(yǔ)句中,當(dāng)執(zhí)行到continue語(yǔ)句時(shí),終止后面的循環(huán)執(zhí)行語(yǔ)句,直接進(jìn)行循環(huán)條件語(yǔ)句的判斷,如果為真則開(kāi)始下一輪循環(huán),如果為假則終止循環(huán)。 continue與break語(yǔ)句不同,它并不終止整個(gè)循環(huán)語(yǔ)句,而僅僅終止當(dāng)前這一次循環(huán)的執(zhí)行。,返回,3. goto語(yǔ)句,goto語(yǔ)句一般很少使用,一般有人認(rèn)為大量使用goto語(yǔ)句會(huì)使程序的執(zhí)行過(guò)程混亂且容易出錯(cuò),這是對(duì)的,但是在程序中適當(dāng)?shù)厥褂胓oto語(yǔ)句可以使程序簡(jiǎn)單明了。如果有一個(gè)多重嵌套循環(huán),須從最里層跳到最外層,若用break來(lái)實(shí)現(xiàn),則每一層循環(huán)中都要調(diào)用break語(yǔ)句,很麻煩。但是如果在最里層用goto語(yǔ)句的話,就可以一下子跳到外面的一個(gè)標(biāo)號(hào)處,并把流程跳轉(zhuǎn)到該處,很方便。它的格式為: goto 語(yǔ)句標(biāo)號(hào),返回,2.10 指針、數(shù)組與字符串,2.10.1 指針 2.10.2 數(shù)組 2.10.3 字符串,2.10.1 指針,在計(jì)算機(jī)中,內(nèi)存儲(chǔ)器是由若干存儲(chǔ)單元組成的,每個(gè)存儲(chǔ)單元均有一個(gè)惟一的編號(hào)用于標(biāo)識(shí)該存儲(chǔ)單元,該編號(hào)稱為存儲(chǔ)單元的地址。在C+中,數(shù)據(jù)是用變量存放在存儲(chǔ)單元中的,而指針就是一個(gè)保存著某變量在內(nèi)存中的存儲(chǔ)單元中的位置變量,即指針是指向變量在內(nèi)存中的地址,可以通過(guò)指針來(lái)指向變量在內(nèi)存中的地址來(lái)訪問(wèn)和控制變量。 指針的定義形式為: 數(shù)據(jù)類型 *指針名;,返回,2.10.2 數(shù)組,數(shù)組就是把一系列有序的相同類型的數(shù)據(jù)組合起來(lái)的數(shù)據(jù)集合。數(shù)組都有一個(gè)名字即數(shù)組名。數(shù)組中的每一個(gè)數(shù)據(jù)稱為數(shù)組元素,數(shù)組元素在數(shù)組中的位置由下標(biāo)確定。根據(jù)數(shù)組元素下標(biāo)的個(gè)數(shù),數(shù)組分為一維數(shù)組、二維數(shù)組和多維數(shù)組。當(dāng)數(shù)組元素的數(shù)據(jù)類型為字符型時(shí),該數(shù)組稱為字符數(shù)組。當(dāng)數(shù)組元素的數(shù)據(jù)類型為整型時(shí),該數(shù)組稱為整型數(shù)組。,返回,2.10.3 字符串,字符串就是用一對(duì)雙引號(hào)括起來(lái)的字符序列。例如“I am a student!”是一個(gè)字符串。字符串中的字符可以是能顯示的字符,也可以是轉(zhuǎn)義字符,如t表示跳格。在C+中,為了判斷字符串是否結(jié)束,系統(tǒng)自動(dòng)在字符串的末尾加上一個(gè)字符0,作為字符串的結(jié)束標(biāo)志。如字符串“I am a student!”共15個(gè)字符,但實(shí)際上在計(jì)算機(jī)內(nèi)存里占用16個(gè)存儲(chǔ)單元。最后一個(gè)存儲(chǔ)單元存放0,作為字符串的結(jié)束標(biāo)志,所以字符串的存儲(chǔ)空間比實(shí)際的字符數(shù)要多1。 注意字符串常量和字符常量是有區(qū)別的,字符串常量是用雙引號(hào)括起來(lái)的字符序列,而字符常量則是用單引號(hào)括起來(lái)的單個(gè)字符,它們所占的內(nèi)存空間也不同。 字符串一般存放在字符數(shù)組中,字符數(shù)組就是存放字符的數(shù)組,返回,2.11 函 數(shù),個(gè)C+程序可由一個(gè)或多個(gè)源程序文件組成,一個(gè)源程序文件可由一個(gè)或多個(gè)函數(shù)組成;函數(shù)是構(gòu)成C+程序的基礎(chǔ),任意個(gè)C+源程序都是由若干個(gè)函數(shù)組成的。C+中的函數(shù)分為庫(kù)函數(shù)與自定義函數(shù)兩類,庫(kù)函數(shù)是由C+系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)(如求一個(gè)數(shù)的絕對(duì)值可用函數(shù):“int abs( int n );”);自定義函數(shù)是需要自己寫(xiě)的函數(shù)。 C+中的函數(shù)是這樣定義的: 返回值數(shù)據(jù)類型 函數(shù)名(參數(shù)表) 語(yǔ)句; ,2.12 結(jié)構(gòu)、聯(lián)合和枚舉,2.12.1 結(jié)構(gòu) 2.12.2 聯(lián)合體 2.12.3 枚舉類型,2.12.1 結(jié)構(gòu),有時(shí)候需要將不同類型的數(shù)據(jù)組合成有機(jī)整體 ,以方便引用這些數(shù)據(jù)。這些數(shù)據(jù)之間是相互聯(lián)系的,例如,一個(gè)人的基本信息包括姓名、性別、年齡、身高、體重等;一個(gè)學(xué)生的基本信息包括學(xué)號(hào)、姓名、年齡、某些課程成績(jī)、住址等。如果將這些數(shù)據(jù)分別存放在不同的數(shù)據(jù)變量中,就不能體現(xiàn)它們之間的內(nèi)在聯(lián)系,并且在引用這些數(shù)據(jù)時(shí)也會(huì)由于它們之間的聯(lián)系不明確而變得很復(fù)雜,容易出錯(cuò)??梢酝ㄟ^(guò)使用結(jié)構(gòu)體將這些不同類型的數(shù)據(jù)定義為一個(gè)特殊的數(shù)據(jù)類型,這樣就能很方便地使用這些數(shù)據(jù)了。 結(jié)構(gòu)體是指由不同類型的一組變量組成的一個(gè)數(shù)據(jù)單位 ,在 C和C+語(yǔ)言中,使用保留字struct來(lái)構(gòu)造一個(gè)結(jié)構(gòu)體,定義一個(gè)結(jié)構(gòu)體類型的形式如下: struct 結(jié)構(gòu)體名 結(jié)構(gòu)體成員列表,返回,2.12.2 聯(lián)合體,聯(lián)合體是指幾個(gè)不同類型的變量共用一個(gè)內(nèi)存單元的一種數(shù)據(jù)類型,這樣的變量可以在一個(gè)運(yùn)算中構(gòu)成一個(gè)整數(shù),在另外一個(gè)運(yùn)算中構(gòu)成一個(gè)實(shí)數(shù)。 定義聯(lián)合體類型需要用到保留字union,定義的一般形式如下: union 聯(lián)合體名 成員列表 變量列表,返回,2.12.3 枚舉類型,在實(shí)際生活中,經(jīng)常會(huì)遇到只有有限個(gè)取值的變量,例如,每一天只可能是星期一到星期天7種之間的一種,一個(gè)布袋里只有紅、黃、藍(lán)、綠、黑5種顏色的玻璃球等等。 針對(duì)這樣的變量,可以定義其為枚舉類型,即變量的值可以一一列舉出來(lái)。定義枚舉類型需要用到保留字enum,返回,2.13 上 機(jī) 指 導(dǎo),本章講述了Visual C+ .NET的基本語(yǔ)法。在本次的上機(jī)指導(dǎo)中,將針對(duì)上述內(nèi)容進(jìn)行實(shí)際上機(jī)練習(xí)。主要內(nèi)容為:基本的輸出輸入語(yǔ)法的使用;命名空間的引入;基本控制語(yǔ)句的使用;函數(shù)的使用等。 2.13.1 if語(yǔ)句的使用 2.13.2 switch語(yǔ)句的使用 2.13.3 函數(shù)的使用,第3章 類 和 對(duì) 象,教學(xué)提示:類和對(duì)象是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心概念,繼承性和多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要特性,本章對(duì)Visual C+ .NET中的類和對(duì)象、繼承和派生、多態(tài)和虛函數(shù)、模板類和模板函數(shù)進(jìn)行了詳細(xì)介紹。,教學(xué)目標(biāo):掌握類和對(duì)象的定義,熟悉Visual C+ .NET語(yǔ)言中的繼承機(jī)制,能熟練地通過(guò)重載、虛函數(shù)、抽象類等手段實(shí)現(xiàn)多態(tài)性。,3.1 類 和 對(duì) 象,類和對(duì)象是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心,所以理解類和對(duì)象的概念是學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)的關(guān)鍵。 3.1.1 類和對(duì)象的定義 3.1.2 對(duì)象與對(duì)象的定義 3.1.3 成員變量和成員函數(shù) 3.1.4 構(gòu)造函數(shù)和析構(gòu)函數(shù),3.1.1 類和對(duì)象的定義,類是一種復(fù)雜的數(shù)據(jù)類型 ,它是將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。類的定義格式一般分為說(shuō)明部分和實(shí)現(xiàn)部分。說(shuō)明部分是用來(lái)說(shuō)明該類中的成員,包括數(shù)據(jù)成員的說(shuō)明和成員函數(shù)的說(shuō)明。其中,成員函數(shù)是用來(lái)對(duì)數(shù)據(jù)成員進(jìn)行操作的,又稱為“方法”。實(shí)現(xiàn)部分是用來(lái)對(duì)成員函數(shù)的定義。 類的一般定義格式如下: class public: private: ,返回,3.1.2 對(duì)象與對(duì)象的定義,對(duì)象是類的實(shí)例。對(duì)象是屬于某個(gè)已知的類。因此,定義對(duì)象之前,一定要先定義好該對(duì)象的類。 對(duì)象在確定了它的類以后,其定義格式如下: 其中,是要定義的對(duì)象所屬類的名字,即所定義的對(duì)象是該類類型的對(duì)象。中可以有一個(gè)或多個(gè)對(duì)象,多個(gè)對(duì)象名是用逗號(hào)分隔。,返回,3.1.3 成員變量和成員函數(shù),一個(gè)對(duì)象的成員就是該對(duì)象的類所定義的成員。對(duì)象成員有數(shù)據(jù)成員和成員函數(shù),其表示方法如下: . 或者 .(),返回,3.1.4 構(gòu)造函數(shù)和析構(gòu)函數(shù),1. 構(gòu)造函數(shù)和析構(gòu)函數(shù) 2. 默認(rèn)構(gòu)造函數(shù)和默認(rèn)析構(gòu)函數(shù) 3. 復(fù)制初始化構(gòu)造函數(shù),返回,1. 構(gòu)造函數(shù)和析構(gòu)函數(shù),構(gòu)造函數(shù)和析構(gòu)函數(shù)是在類體中說(shuō)明的兩種特殊成員函數(shù) 。構(gòu)造函數(shù)的功能是在創(chuàng)建對(duì)象時(shí),使用給定的值來(lái)初始化對(duì)象。析構(gòu)函數(shù)的功能是用來(lái)釋放一個(gè)對(duì)象,在對(duì)象刪除前,用它來(lái)做一些清理工作,它與構(gòu)造函數(shù)的功能正好相反。,返回,2. 默認(rèn)構(gòu)造函數(shù)和默認(rèn)析構(gòu)函數(shù),在類定義過(guò)程中,如果沒(méi)有定義任何構(gòu)造函數(shù),則編譯器自動(dòng)生成一個(gè)不帶參數(shù)的默認(rèn)構(gòu)造函數(shù),其格式如下: :() ,返回,3. 復(fù)制初始化構(gòu)造函數(shù),復(fù)制初始化構(gòu)造函數(shù)是一種特殊的成員函數(shù),它的功能是用一個(gè)已知的對(duì)象來(lái)初始化一個(gè)被創(chuàng)建的同類對(duì)象。復(fù)制初始化構(gòu)造函數(shù)實(shí)際上也是構(gòu)造函數(shù),它是在初始化時(shí)被調(diào)用來(lái)將一個(gè)已知對(duì)象的數(shù)據(jù)成員值復(fù)制給正在創(chuàng)建的另一個(gè)同類對(duì)象。,返回,3.2 類的繼承和派生,繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)中最重要的機(jī)制。這種機(jī)制改變了過(guò)去傳統(tǒng)的非面向?qū)ο蟪绦蛟O(shè)計(jì)中那種對(duì)不再適合要求的用戶定義數(shù)據(jù)類型進(jìn)行改寫(xiě)甚至重寫(xiě)的方法,克服了傳統(tǒng)程序設(shè)計(jì)方法對(duì)編寫(xiě)出來(lái)的程序無(wú)法重復(fù)使用而造成的資源浪費(fèi)。通過(guò)C+語(yǔ)言中的繼承機(jī)制,可以擴(kuò)充和完善舊的程序設(shè)計(jì)以適應(yīng)新的需求,這樣不僅可以節(jié)省程序開(kāi)發(fā)時(shí)間和資源,并且為將來(lái)程序設(shè)計(jì)增添了新的資源。 3.2.1 基類和派生類 3.2.2 單一繼承 3.2.3 虛基類,3.2.1 基類和派生類,通過(guò)繼承機(jī)制,可以利用已有的數(shù)據(jù)類型來(lái)定義新的數(shù)據(jù)類型。所定義的新數(shù)據(jù)類型不僅擁有新定義的成員,而且還同時(shí)擁有舊的成員,則稱已存在的用來(lái)派生新類的類為基類,又稱為父類。由已存在的類派生派生出的新類稱為派生類,又稱為子類。,返回,3.2.2 單一繼承,在單繼承中,每個(gè)類可以有多個(gè)派生類,但是每個(gè)派生類只能有一個(gè)基類,從而形成樹(shù)型結(jié)構(gòu)。 1. 成員訪問(wèn)權(quán)限的控制 2. 構(gòu)造函數(shù)和析構(gòu)函數(shù),返回,1. 成員訪問(wèn)權(quán)限的控制,在公有繼承(public)時(shí),派生類的public、private、protected型的成員函數(shù)可以訪問(wèn)基類中的公有成員和保護(hù)成員;而派生類的對(duì)象僅可訪問(wèn)基類中的公有成員。 在私有繼承(private)時(shí),派生類的對(duì)象不可訪問(wèn)基類中的任何成員。另外使用class關(guān)鍵字定義類時(shí),默認(rèn)的繼承方式是private。也就是說(shuō),當(dāng)繼承方式為私有繼承時(shí),可以省略private。 在保護(hù)繼承(protected)時(shí),把繼承方式public改為protected,把protected變?yōu)閜rivate成員,private不變。,返回,2. 構(gòu)造函數(shù)和析構(gòu)函數(shù),派生類對(duì)象的數(shù)據(jù)結(jié)構(gòu)是由基類中說(shuō)明的數(shù)據(jù)成員和派生類中說(shuō)明的數(shù)據(jù)成員共同構(gòu)成。將派生類對(duì)象中由基類中說(shuō)明的數(shù)據(jù)成員和操作構(gòu)成的封裝體稱為基類子對(duì)象,它由基類中的構(gòu)造函數(shù)進(jìn)行初始化。 構(gòu)造函數(shù)不能夠被繼承,因此,派生類的構(gòu)造函數(shù)必須通過(guò)調(diào)用基類的構(gòu)造函數(shù)來(lái)初始化基類子對(duì)象。所以,在定義派生類的構(gòu)造函數(shù)時(shí)除了對(duì)自己的數(shù)據(jù)成員進(jìn)行初始化外,還必須負(fù)責(zé)調(diào)用基類構(gòu)造函數(shù)使基類數(shù)據(jù)成員得以初始化。如果派生類中還有子對(duì)象時(shí),還應(yīng)包含對(duì)子對(duì)象初始化的構(gòu)造函數(shù)。 派生類構(gòu)造函數(shù)的一般格式如下: ():, (子對(duì)象名)() ;,返回,3.2.3 虛基類,引進(jìn)虛基類的目的是為了解決二義性問(wèn)題,其說(shuō)明格式如下: virtual,返回,3.3 多態(tài)和虛函數(shù),多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要特性之一,它與前面講過(guò)的封裝性和繼承性構(gòu)成了面向?qū)ο蟪绦蛟O(shè)計(jì)的三大特性。這三大特性是相互關(guān)聯(lián)的,封裝性是基礎(chǔ),繼承性是關(guān)鍵,多態(tài)性是補(bǔ)充,而多態(tài)性又必須存在于繼承的環(huán)境之中。 所謂多態(tài)性是指發(fā)出同樣的消息被不同類型的對(duì)象接收時(shí)導(dǎo)致完全不同的行為。這里所說(shuō)的消息主要是指對(duì)類的成員函數(shù)的調(diào)用,而不同的行為是指不同的實(shí)現(xiàn)。利用多態(tài)性,用戶只需要發(fā)送一般形式的消息,而將所有的實(shí)現(xiàn)留給接收消息的對(duì)象。對(duì)象根據(jù)所接收到的消息而做出相應(yīng)的動(dòng)作(即操作)。 函數(shù)重載和運(yùn)算符重載是簡(jiǎn)單的多態(tài)性。重要的多態(tài)性是建立在虛函數(shù)的概念和方法基礎(chǔ)上的。,3.4 上 機(jī) 指 導(dǎo),在本次上機(jī)指導(dǎo)中,針對(duì)前面幾節(jié)中的內(nèi)容進(jìn)行實(shí)際上機(jī)練習(xí)。其主要內(nèi)容包括:類和對(duì)象使用、派生類的使用、類的多態(tài)性編程以及模板類和模板函數(shù)編程等。 3.4.1 類和對(duì)象編程實(shí)例 3.4.2 派生類編程實(shí)例 3.4.3 類的多態(tài)編程實(shí)例 3.4.4 模板類和模板函數(shù)編程實(shí)例,第4章 Windows程序設(shè)計(jì),教學(xué)提示:本章說(shuō)明了Windows應(yīng)用程序的特點(diǎn),即用戶圖形界面、硬件無(wú)關(guān)特性及消息驅(qū)動(dòng)機(jī)制,介紹了Visual C+ .NET的MFC類及如何應(yīng)用Visual C+ .NET開(kāi)發(fā)Windows程序。,教學(xué)目標(biāo):熟悉Windows應(yīng)用程序的特點(diǎn)及流程,特別是消息驅(qū)動(dòng)機(jī)制,了解MFC的基本概念,掌握應(yīng)用Visual C+ .NET開(kāi)發(fā)Windows程序的方法。,4.1 Windows程序設(shè)計(jì)基礎(chǔ),Windows操作系統(tǒng)是由Microsoft推出的基于PC的圖形操作系統(tǒng)。Windows應(yīng)用程序具有下列幾個(gè)特點(diǎn):一是它的標(biāo)準(zhǔn)用戶圖形界面窗口;二是應(yīng)用程序與硬件的無(wú)關(guān)特性;三是所有的Windows應(yīng)用程序都是采用消息驅(qū)動(dòng)機(jī)制。應(yīng)用程序的設(shè)備無(wú)關(guān)性將在第10章中進(jìn)行介紹,本章簡(jiǎn)單介紹一下窗口和消息的概念。 4.1.1 Windows窗口的概念 4.1.2 Windows程序的消息響應(yīng)機(jī)制 4.1.3 Windows程序流程,4.1.1 Windows窗口的概念,1. Windows API 2. Windows窗口,返回,1. Windows API,Windows應(yīng)用程序是通過(guò)在應(yīng)用程序中調(diào)用Windows API實(shí)現(xiàn)的。Windows API是Windows操作系統(tǒng)提供的應(yīng)用程序編程接口,包括幾百個(gè)函數(shù)加上數(shù)據(jù)常量、宏、結(jié)構(gòu)以及許多其他項(xiàng)。大多數(shù)API在Windows.h頭文件中定義。Windows 95以上的操作系統(tǒng)都是32位的,因此在目前常用的Windows中都使用Win32 API。,返回,2. Windows窗口,“窗口”是Windows操作系統(tǒng)標(biāo)準(zhǔn)的圖形界面,一個(gè)典型的窗口如圖4.1所示。應(yīng)用程序在創(chuàng)建某個(gè)類型的窗口前,必須首先注冊(cè)該“窗口類”(Windows Class)。注冊(cè)時(shí)把窗口過(guò)程、窗口類型以及其他類型信息和要登記的窗口類關(guān)聯(lián)起來(lái)。應(yīng)用程序接著通過(guò)調(diào)用Windows API來(lái)創(chuàng)建窗口。創(chuàng)建一個(gè)窗口實(shí)際調(diào)用的函數(shù)需要下列參數(shù):屏幕位置、窗口大小以及即將創(chuàng)建的窗口風(fēng)格。,返回,圖4.1 一個(gè)典型的窗口,返回,4.1.2 Windows程序的消息響應(yīng)機(jī)制,Windows程序與其他類型程序的不同點(diǎn)就是消息。例如DOS程序,要等待(有時(shí)也稱為檢測(cè))可能的輸入,如鍵盤或鼠標(biāo),如果程序檢測(cè)不到鼠標(biāo),就不會(huì)對(duì)鼠標(biāo)的動(dòng)作做出相應(yīng)的反應(yīng)。而在Windows程序中以消息作為媒介,在操作系統(tǒng)中用消息來(lái)告訴應(yīng)用程序有情況發(fā)生了。例如,用戶按下了某個(gè)鍵,單擊或移動(dòng)了鼠標(biāo)、打印機(jī)可用了等等。一個(gè)窗口(每一個(gè)元素都是一個(gè)窗口)也可以發(fā)送消息給另一個(gè)窗口,大多數(shù)窗口對(duì)消息的反應(yīng)是發(fā)送一條略微不同的消息給另外一個(gè)窗口。,返回,4.1.3 Windows程序流程,用Windows平臺(tái)軟件開(kāi)發(fā)工具包(SDK)的Win32 API編寫(xiě)各種Windows 應(yīng)用程序,有其共同的規(guī)律:首先是編寫(xiě)WinMain函數(shù),編寫(xiě)處理消息和事件的窗口過(guò)程WndProc,在WinMain里頭注冊(cè)窗口(Register Window),創(chuàng)建窗口,然后開(kāi)始應(yīng)用程序的消息循環(huán)。,返回,4.2 怎樣用Visual C+ .NET設(shè)計(jì)Windows程序,在Visual C+ .NET中,開(kāi)發(fā)Windows應(yīng)用程序有以下幾種方法: 直接調(diào)用Windows環(huán)境提供的Win32 API函數(shù)來(lái)編寫(xiě)Windows應(yīng)用程序。實(shí)際上該方法適用于任何Windows環(huán)境下的C/C+語(yǔ)言編程。 使用MFC類庫(kù)和活動(dòng)模板庫(kù)(ATL)直接編寫(xiě)Windows應(yīng)用程序。 既使用MFC類庫(kù)和ATL,也使用向?qū)?Wizard)來(lái)編寫(xiě)Windows應(yīng)用程序。在這種情況下用MFC應(yīng)用程序、MFC ActiveX控件等向?qū)?lái)生成Windows應(yīng)用程序的基本源文件,然后在程序框架的基礎(chǔ)上建立應(yīng)用程序的類和消息處理代碼并定義控件的屬性、事件和方法,最后把各應(yīng)用程序所要求的功能添加到程序中。 使用C+托管擴(kuò)展程序編寫(xiě)Windows應(yīng)用程序。這是基于通用語(yǔ)言運(yùn)行時(shí)環(huán)境的Windows應(yīng)用程序。 其實(shí),不管程序使用何種開(kāi)發(fā)方式編寫(xiě)Windows應(yīng)用程序,最終都要調(diào)用到Windows API,因此,大家一起來(lái)看看在Visual C+ .NET中如何用Win32 API編寫(xiě)Windows程序,以進(jìn)一步了解Windows程序的流程。,4.3 Visual C+ .NET的基礎(chǔ)類庫(kù)(MFC)介紹,4.3.1 MFC庫(kù)簡(jiǎn)介 4.3.2 MFC中的常用類 4.3.3 MFC中類的消息機(jī)制 4.3.4 MFC的程序流程,4.3.1 MFC庫(kù)簡(jiǎn)介,Windows程序與其他類型程序的不同點(diǎn)就是消息。例如DOS程序,要等待(有時(shí)也稱為檢測(cè))可能的輸入,如鍵盤或鼠標(biāo),如果程序檢測(cè)不到鼠標(biāo),就不會(huì)對(duì)鼠標(biāo)的動(dòng)作做出相應(yīng)的反應(yīng)。而在Windows程序中以消息作為媒介,在操作系統(tǒng)中用消息來(lái)告訴應(yīng)用程序有情況發(fā)生了。例如,用戶按下了某個(gè)鍵,單擊或移動(dòng)了鼠標(biāo)、打印機(jī)可用了等等。一個(gè)窗口(每一個(gè)元素都是一個(gè)窗口)也可以發(fā)送消息給另一個(gè)窗口,大多數(shù)窗口對(duì)消息的反應(yīng)是發(fā)送一條略微不同的消息給另外一個(gè)窗口。,返回,4.3.2 MFC中的常用類,用Windows平臺(tái)軟件開(kāi)發(fā)工具包(SDK)的Win32 API編寫(xiě)各種Windows應(yīng)用程序,有其共同的規(guī)律:首先是編寫(xiě)WinMain函數(shù),編寫(xiě)處理消息和事件的窗口過(guò)程WndProc,在WinMain里頭注冊(cè)窗口(Register Window),創(chuàng)建窗口,然后開(kāi)始應(yīng)用程序的消息循環(huán)。,返回,4.3.3 MFC中類的消息機(jī)制,Windows程序與其他類型程序的不同點(diǎn)就是消息。例如DOS程序,要等待(有時(shí)也稱為檢測(cè))可能的輸入,如鍵盤或鼠標(biāo),如果程序檢測(cè)不到鼠標(biāo),就不會(huì)對(duì)鼠標(biāo)的動(dòng)作做出相應(yīng)的反應(yīng)。而在Windows程序中以消息作為媒介,在操作系統(tǒng)中用消息來(lái)告訴應(yīng)用程序有情況發(fā)生了。例如,用戶按下了某個(gè)鍵,單擊或移動(dòng)了鼠標(biāo)、打印機(jī)可用了等等。一個(gè)窗口(每一個(gè)元素都是一個(gè)窗口)也可以發(fā)送消息給另一個(gè)窗口,大多數(shù)窗口對(duì)消息的反應(yīng)是發(fā)送一條略微不同的消息給另外一個(gè)窗口。,返回,4.3.4 MFC的程序流程,用Windows平臺(tái)軟件開(kāi)發(fā)工具包(SDK)的Win32 API編寫(xiě)各種Windows 應(yīng)用程序 , 有其共同的規(guī)律:首先是編寫(xiě)WinMain函數(shù),編寫(xiě)處理消息和事件的窗口過(guò)程WndProc,在WinMain里頭注冊(cè)窗口(Register Window),創(chuàng)建窗口,然后開(kāi)始應(yīng)用程序的消息循環(huán)。,返回,4.4 上 機(jī) 指 導(dǎo),下面提供一個(gè)HELLOAPP示例,該示例定義了應(yīng)用程序類的派生類和窗體的派生類,用很少幾行代碼在屏幕上顯示一個(gè)窗口。 同任何用MFC編寫(xiě)的應(yīng)用程序一樣,HELLOAPP也包含一個(gè)從應(yīng)用程序類派生的類 。此應(yīng)用程序類提供

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論