版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
主講教師:個人主頁:/~youhongyue郵件地址:高級語言程序設(shè)計II四川大學計算機學院四川大學計算機學院1教材:《C++面向?qū)ο蟪绦蛟O(shè)計》李濤主編游洪躍陳良銀李琳等編高等教育出版社2006年2月出版2本書內(nèi)容
第1章緒論第2章C++類和對象第3章繼承第4章多態(tài)性第5章模板第6章C++常見問題第7章VisualC++編程基礎(chǔ)第8章對話框、常用消息、菜單和工具條第9章單文檔界面和多文檔界面第10章圖形設(shè)備接口實驗(待安排)3561.1程序設(shè)計語言發(fā)展概況1.1.1機器語言和匯編語言機器語言(二進制碼)由0、1二進制代碼組成,直接控制CPU的運行工作。例如:01代表“加”001代表寄存器“A”10代表“減”010代表寄存器“B”11代表“乘”011代表寄存器“C”…………操作數(shù)可設(shè)計為用8位二進制數(shù)表達……71.1程序設(shè)計語言發(fā)展概況1結(jié)構(gòu)化程序設(shè)計高級程序設(shè)計語言的出現(xiàn)是計算機科學技術(shù)發(fā)展史上的一個里程碑。它屏蔽了機器的細節(jié),提高了語言的抽象層次,程序員可以用接近自然語言的程序語言編制軟件,然后通過編譯器轉(zhuǎn)換成機器可執(zhí)行的代碼(機器語言)。危機隨著軟件大規(guī)模的應(yīng)用,由軟件錯誤而引起的信息丟失、系統(tǒng)報廢事件屢有發(fā)生,從而導(dǎo)致了軟件危機的出現(xiàn)。怎么解決???91.1程序設(shè)計語言發(fā)展概況結(jié)構(gòu)化程序設(shè)計
瑞士計算機科學家NiklausWirth首次提出了“結(jié)構(gòu)化程序設(shè)計”(structuredprogramming)的概念?!白皂斚蛳隆薄爸鸩角缶备拍畹囊c是:不要求一步就編制成可執(zhí)行的程序,而是分若干步進行,逐步求精。第一步編出的程序抽象度最高,第二步的程序抽象度有所降低,最后一步即為可執(zhí)行的程序。101.1程序設(shè)計語言發(fā)展概況面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο笳Z言發(fā)展:20世紀60年代中期,Simula67語言
面向?qū)ο笳Z言的鼻祖,提出了對象、類的概念,并支持類的繼承。20世紀70年代中期,Smalltalk語言
最有影響的面向?qū)ο笳Z言之一,豐富了面向?qū)ο蟮母拍睢?0世紀80年代中期后出現(xiàn)C++、ObjectPASCAL、Java等多種面向?qū)ο笳Z言面向?qū)ο蠡舅枷耄嚎陀^世界由對象組成,對象具有其屬性和行為。111.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理一、認識事物的過程:事物--屬性如:自行車--自行車顏色整體—組成部分如:自行車—車輪類—類如:山地車—公路賽車二、面向?qū)ο罂陀^事物:具有屬性和行為的對象。通過抽象機制找出同一類對象的共同屬性和行為,形成類。對象是類的實例。類通過外部接口與外界發(fā)生關(guān)系。對象與對象之間通過消息傳遞機制進行通信。131.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理1.2.1抽象抽象:把客觀世界的事物劃分成類的過程。程序設(shè)計:面向問題空間與面向解空間;面向過程程序設(shè)計面向解空間,關(guān)注求解,程序=過程+調(diào)用面向?qū)ο蟪绦蛟O(shè)計面向問題空間,關(guān)注問題本身,對問題建模,抽象出類,形成對象程序=對象+消息14問題空間中,抽象出類的過程:1.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理數(shù)據(jù)抽象抽象出事物共有的屬性或狀態(tài)
--類的
屬性行為抽象抽象出事物共有的行為或功能
--類的
操作15類與對象:從所有員工共性中抽象出一個員工類,每個員工屬于該類的一個對象。類中所有對象共享
——類中所有共同的特性.
類是對象的抽象
對象是類的實例
1.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理17面向?qū)ο蟮膬蓚€重要原理:
數(shù)據(jù)抽象、行為共享1.數(shù)據(jù)抽象:通過從特定的實例中抽取共同性質(zhì)以形成一般化的概念的過程。——獲取共性強調(diào)部分特性(用戶所關(guān)心的特性)忽略其他特性(用戶不關(guān)心的特性)用戶:只關(guān)心做什么,不關(guān)心怎么做OOP技術(shù)比任何一種編程技術(shù)都更強調(diào)抽象在軟件開發(fā)中的重要性。1.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理182.行為共享:(1)實體(模塊)的外部接口稱為行為。(2)行為共享允許多個實體(模塊)具有相同的接口集?!涌谝恢隆#?)行為共享增強系統(tǒng)的靈活性(4)行為共享增強系統(tǒng)的抽象1.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理19
封裝:數(shù)據(jù)和加工處理該數(shù)據(jù)的方法緊密結(jié)合在一起構(gòu)成黑匣子的整體。封裝就是將一組數(shù)據(jù)和這組數(shù)據(jù)的有關(guān)操作組裝在一起形成一個對象。封裝實現(xiàn)了信息隱藏。私有數(shù)據(jù)不能被該對象的成員函數(shù)之外的任何其它函數(shù)所直接使用。1.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理211.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理1.2.3繼承性客觀世界:一般和特殊一般是某類事物的共性;特殊具有一般的特性,同時又有自己的新特性。面向?qū)ο蟪绦蛟O(shè)計利用繼承機制來將這種關(guān)系模型化,從而達到代碼重用的目的。221.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理圖1.1動物的分類231.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理1.2.4多態(tài)性客觀世界:一個抽象的信息,具有多重含義。程序設(shè)計語言:同一個函數(shù)或運算符可以有不同的執(zhí)行方式,用哪一種方式取決于它所操作的內(nèi)容。這即為程序設(shè)計語言中的多態(tài)性(polymorphism)。函數(shù)重載:同一個函數(shù)名被賦予不同的功能實現(xiàn)。
具體地講是指在同一作用域內(nèi)函數(shù)名相同,形參類型或個數(shù)不同的多個同名函數(shù)稱為函數(shù)重載voidFunction(int,float);
voidFunction(float);floatFunction(float);
251.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理一個界面(相同函數(shù)名)多種實現(xiàn)(不同函數(shù)體),編譯器根據(jù)實參表與形參表的類型匹配來選擇相應(yīng)的函數(shù)實現(xiàn)。
“早捆綁(earlybinding)”:指在編譯階段把函數(shù)調(diào)用和相應(yīng)的函數(shù)體進行匹配。注意:第二和第三個函數(shù)不是真正意義上的函數(shù)重載!因為它們具有相同的形參表,調(diào)用時也對應(yīng)相同的實參表,因此編譯器不能進行正確的匹配。261.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理1.2.5消息傳遞機制在面向?qū)ο蠹夹g(shù)中,對象間的交互是通過消息的傳遞來完成的。
消息處理方法就是對象的成員函數(shù)。例子:291.2面向?qū)ο蟪绦蛟O(shè)計語言的基本原理如何與CLight類的實例對象進行通信?CLightlight;//創(chuàng)建一個名為light的對象light.On();//通過對象調(diào)用On()函數(shù)Windows操作系統(tǒng)也是以消息為基礎(chǔ),事件為驅(qū)動的。Microsoft的MFC擁有自己的一套支持Windows操作系統(tǒng)消息傳遞機制的技術(shù)——消息映射(MessageMapping)和命令傳遞(CommandRouting)。301.3面向?qū)ο蟪绦蛟O(shè)計C++C++是從C語言發(fā)展演變而來的1998年11月ISOC++標準正式確立1.3.1C++語言特點用C語言開發(fā)的軟件都能在C++環(huán)境中繼續(xù)使用并擴充代碼。
1一個更好的C引用更方便操作函數(shù)參數(shù)和返回值函數(shù)重載對不同的函數(shù)使用相同的名字命名空間改進了對程序中各種名字的控制311.3面向?qū)ο蟪绦蛟O(shè)計C++2系統(tǒng)更容易表達和理解
面向?qū)ο?源代碼重用模版(template)4.錯誤處理異常處理(exceptionhandling)5.大型程序設(shè)計中的命名空間問題:程序達到一定規(guī)模后,給函數(shù)和標識符命名的新名稱不夠用,不同的程序員或開發(fā)小組分別開發(fā)各自的程序塊,名稱很容易沖突。321.3面向?qū)ο蟪绦蛟O(shè)計C++解決:命名空間(namespace)程序中每個C++定義集被封裝在一個命名空間中,不同命名空間的名字互不沖突。331.3面向?qū)ο蟪绦蛟O(shè)計C++1.3.2C++程序架構(gòu)1一個簡單的C++程序例1.1"Hello,World!"程序//主文件//文件名smain1_1.cpp#include<iostream>//編譯預(yù)處理命令usingnamespacestd;//命名空間voidmain(void)//主函數(shù){
cout<<"Hello,World!"<<endl;//C++輸出語句}運行結(jié)果Hello,World!341.3面向?qū)ο蟪绦蛟O(shè)計C++2程序基本結(jié)構(gòu)1.編譯預(yù)處理命令
C++提供了三類預(yù)處理命令:文件包含命令、宏定義命令和條件編譯命令。(1)文件包含命令
#include<文件名>
#include"文件名"(2)宏定義命令#define#undef
351.3面向?qū)ο蟪绦蛟O(shè)計C++(3)條件編譯命令第一種形式
#ifdef<標識符><程序段1>#else<程序段2>#endif第二種形式
#ifndef<標識符><程序段1>#else<程序段2>#endif361.3面向?qū)ο蟪绦蛟O(shè)計C++第三種形式#if<表達式1><程序段1>//當<表達式1>為真時編譯<程序段1>
#elif<表達式2><程序段2>//當<表達式1>為假而<表達式2>為真時編譯<程序段2>
……#elif<表達式n><程序段n>//當<表達式1>到<表達式n-1>都為假而<表達式n>為真時
//編譯<程序段n>
#else<程序段n+1>//其他情況時編譯<程序段n+1>
#endif371.3面向?qū)ο蟪绦蛟O(shè)計C++2.針對命名空間的指令usingnamespacestd所有的標準C++庫都封裝在一個名字空間中即“std”,(代表“standard”)。
但在傳統(tǒng)的C++中無命名空間std。3.主函數(shù)每個C++程序都有且只有一個主函數(shù)main(),它是程序執(zhí)行的起點。4.輸入輸出命令
數(shù)據(jù)在對象之間的流動抽象為“流”。數(shù)據(jù)的輸入、輸出通過I/O流來實現(xiàn)的。cin、cout是預(yù)定義的流類對象。cin--標準輸入cout--標準輸出381.3面向?qū)ο蟪绦蛟O(shè)計C++5.注釋1./*…*/多行信息的注釋。2.//單行信息的注釋。3良好的書寫規(guī)范推薦的書寫規(guī)范:匈牙利命名法
1.程序的版式每一行只寫一條語句,便于在后面添加注釋;程序的分界符‘{’和‘}’應(yīng)獨占一行并且位于同一列,同時與引用它們的語句左對齊;{}之內(nèi)的代碼塊在‘{’右邊數(shù)格處左對齊。391.3面向?qū)ο蟪绦蛟O(shè)計C++例子:String::String(constchar*ch)
{//’{‘獨占一行并且與’}‘位于同一列
if(ch){data=newchar[strlen(ch)+1];
//’{}’之內(nèi)的代碼塊在‘{’右邊數(shù)格處左對齊
strcpy(data,ch);
//’{}’之內(nèi)的代碼塊在‘{’右邊數(shù)格處左對齊
}}//‘}’獨占一行并且與‘{’位于同一列
401.3面向?qū)ο蟪绦蛟O(shè)計C++2.命名規(guī)則變量名
變量名的命名規(guī)則:“屬性+類型+對象描述”
屬性標注:全局變量(global)g_;
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房地產(chǎn)項目投資合作協(xié)議范本6篇
- 二零二五年度集裝箱承攬運輸管理協(xié)議3篇
- 二零二四年消防裝備租賃與購銷合同樣本3篇
- 2025年度金融行業(yè)個人勞務(wù)用工合同模板(二零二五版)4篇
- 2025年度電梯門套維修保養(yǎng)與更新改造合同3篇
- 2025年度國際貿(mào)易代理傭金支付合同4篇
- 2025年度珠寶首飾設(shè)計與生產(chǎn)委托合同4篇
- 2025年度個人藝術(shù)品交易協(xié)議書2篇
- 二零二五年度裝配式建筑構(gòu)件生產(chǎn)施工合同3篇
- 2025年度多功能打印機租賃及耗材供應(yīng)合同范本4篇
- 2024年湖南高速鐵路職業(yè)技術(shù)學院高職單招數(shù)學歷年參考題庫含答案解析
- 國旗班指揮刀訓(xùn)練動作要領(lǐng)
- 2024年國家工作人員學法用法考試題庫及參考答案
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 2021-2022學年遼寧省重點高中協(xié)作校高一上學期期末語文試題
- 同等學力英語申碩考試詞匯(第六版大綱)電子版
- 人教版五年級上冊遞等式計算100道及答案
- 墓地個人協(xié)議合同模板
- 2024年部編版初中語文各年級教師用書七年級(上冊)
- 2024年新課標全國Ⅰ卷語文高考真題試卷(含答案)
評論
0/150
提交評論