版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、教 案2013 2014 學年 第 一 學期學 院、 系 室 計算機科學系課 程 名 稱 面向對象程序設計專業(yè)、年級、班級 12計算機嵌入式系統(tǒng) 、網(wǎng)絡和信息安全班 主 講 教 師 蔣琳瓊梧州學院面向對象程序設計教案課時分配:理論課39學時,實驗課12學時,共51學時第1章 c+初步知識一、教學目的: 熟悉如何編緝、編譯、連接和運行一個c+程序,了解在面向過程程序設計中c+對c功能的擴充與增強,并善于在編寫程序過程中應用這些新的功能。學時分配:9學時二、教學重點:了解軟件設計、開發(fā)思想的演變,面向對象程序設計語言的發(fā)展;理解面向對象程序設計的基本思想;熟悉如何編緝、編譯、連接和運行一個c+程序
2、,熟悉c+程序的結構和編程方法。三、教學難點:善于在編寫程序過程中應用這些新的c+對c功能的擴充與增強功能四、教學方法:課題講授及面向對象程序設計實例演示五、教學過程設計:(9學時)1. c+語言的發(fā)展,最簡單的c+程序11程序設計方法的發(fā)展和演變大多數(shù)系統(tǒng)軟件和許多應用軟件都是用c語言編寫的但是隨著軟件規(guī)模的增大,用c語言編寫程序漸漸顯得有些吃力了c+是由at&t bell(貝爾)實驗室的bjarne stroustrup博士及其同事于20世紀80年代初在c語言的基礎上開發(fā)成功的c+保留了c語言原有的所有優(yōu)點,增加了面向對象的機制c+是由c發(fā)展而來的,與c兼容用c語言寫的程序基本上可以不加修
3、改地用于c+從c+的名字可以看出它是c的超集c+既可用于面向過程的結構化程序設計,又可用于面向對象的程序設計,是一種功能強大的混合型的程序設計語言c+對c的“增強”,表現(xiàn)在兩個方面: (1) 在原來面向過程的機制基礎上,對c語言的功能做了不少擴充(2) 增加了面向對象的機制當前用得較為廣泛的c+有:vc+ (visual c plus plus)、 bc+(borland c plus plus)、gcc、at&t c+等。 如果選擇了項,就會在工程所在的目錄下產生一個新的目錄release,在release目錄下生成的可執(zhí)行程序代碼規(guī)模小,執(zhí)行效率高,是我們最后的產品. 至此,即已生成了一個
4、完整的程序.但要說明一點,我們現(xiàn)在vc+所編制的程序是運行于windows中的dos仿真環(huán)境下,至于編制真正的windows程序還有很長的一段路要走.12面向對象程序設計的基本思想下面舉一個包含類(class)和對象(object)的c+程序,目的是使讀者初步了解c+是怎樣體現(xiàn)面向對象程序設計方法的例1.4 包含類的c+程序#include / 預處理命令using namespace std;class student/ 聲明一個類,類名為studentprivate: / 以下為類中的私有部分int num; / 私有變量numint score; / 私有變量scorepublic: /
5、 以下為類中的公用部分void setdata( ) / 定義公用函數(shù)setdatacinnum; / 輸入num的值cinscore; / 輸入score的值 void display( ) / 定義公用函數(shù)displaycoutnum=numendl; / 輸出num的值 coutscore=scoreendl;/輸出score的值 ; / 類的聲明結束student stud1,stud2; /定義stud1和stud2為student類的變量,稱為對象int main( )/ 主函數(shù)首部stud1.setdata( ); / 調用對象stud1的setdata函數(shù) stud2.setd
6、ata( ); / 調用對象stud2的setdata函數(shù) stud1.display( ); / 調用對象stud1的display函數(shù)stud2.display( ); / 調用對象stud2的display函數(shù)return 0;13最簡單的c+程序最簡單的c+程序例1.1 輸出一行字符: “this is a c+ program.”程序如下: #include /包含頭文件iostreamusing namespace std; /使用命名空間stdint main( )coutthis is a c+ program.;return 0;在運行時會在屏幕上輸出以下一行信息:this
7、is a c+ program. 例1.2 求a和b兩個數(shù)之和可以寫出以下程序: / 求兩數(shù)之和 (本行是注釋行)#include /預處理命令using namespace std; /使用命名空間stdint main( ) /主函數(shù)首部 /函數(shù)體開始 int a,b,sum; /定義變量 cinab; /輸入語句 sum=a+b;/賦值語句couta+b=sumendl; /輸出語句return 0; /如程序正常結束,向操作系統(tǒng)返回一個零值 /函數(shù)結束例1.3 給兩個數(shù)x和y,求兩數(shù)中的大者在本例中包含兩個函數(shù)#include /預處理命令using namespace std;int
8、 max(int x,int y)/定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型 /max函數(shù)體開始int z;/變量聲明,定義本函數(shù)中用到的變量z為整型if(xy) z=x;/if語句,如果xy,則將x的值賦給zelse z=y; /否則,將y的值賦給z return(z);/將z的值返回,通過max帶回調用處 /max函數(shù)結束int main( ) /主函數(shù) /主函數(shù)體開始 int a,b,m;/變量聲明cinab;/輸入變量a和b的值m=max(a,b); /調用max函數(shù),將得到的值賦給mcoutmax=mabendl;有什么問題?2.關系運算符將表達式連接起來稱為關系表達式。其
9、值非真即假。在c+語言中,用非0代表真,用0表示假。關系表達式的結果只有兩個,真為1,假為0。 3.語句coutab,c“a”; 有什么問題?4、c+控制結構。21 c+的輸入輸出i/o流控制 1. 用cout進行輸出 2. 用cin進行輸入22用const定義常變量 一般把程序中不允許改變值的變量定義為常變量. c中 #define pi 3.14159 實際只是在預編譯時進行字符置換,pi不是變量,沒有類型,不占用存儲單元,而且容易出錯. c+ const float pi=3.14159 常變量pi具有變量的屬性,有數(shù)據(jù)類型,占用存儲單元,有地址,可用指針指向它. 舉例: int a=1
10、;b=2; #define pi 3.14159 #define r a+b coutpi*r*rendl; 輸出的并不是3.14159 *(a+b)*(a+b),而是3.14159 *a+b*a+b,23函數(shù)原型聲明、重載、模板及默認參數(shù)函數(shù)、內聯(lián)函數(shù) 在c+中,如果函數(shù)調用的位置在函數(shù)定義之前,則要求在函數(shù)調用之前必須對調用的函數(shù)作函數(shù)原型聲明(強制性). 下面兩種寫法等價 int max(int x,int y); int max(int ,int );/編譯時只檢查參數(shù)類型,不檢查參數(shù)名. 函數(shù)的重載(一個函數(shù)名多用)是指c+允許在同一作用域(例如同一個文件模塊)中用同一函數(shù)名定義多個
11、函數(shù),這些函數(shù)的參數(shù)個數(shù)和參數(shù)類型可以都不相同,也可實現(xiàn)功能不同. 例1.6 求3個數(shù)中的最大的數(shù)(分別考慮整數(shù)實數(shù)長整數(shù)的情況) 例1.7用一個函數(shù)求2個整數(shù)或3個整數(shù)中的最大者. 注意: 重載函數(shù)的參數(shù)個數(shù)或類型必須至少有其中之一不同,函數(shù)返回值類型可以相同也可以不同.但不允許參數(shù)個數(shù)和類型都相同而只有返回值不同,因為系統(tǒng)無法從函數(shù)的調用形式上判斷哪一個函數(shù)與之匹配. 重載函數(shù)的參數(shù)個數(shù)或類型必須至少有其中之一不同,函數(shù)返回值類型可以相同也可以不同.但不允許參數(shù)個數(shù)和類型都相同而只有返回值不同,因為系統(tǒng)無法從函數(shù)的調用形式上判斷哪一個函數(shù)與之匹配. #include using names
12、pace std; int max(int a,int b,int c) /求3個整數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; float max(float a,float b, float c) /求3個實數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; long max(long a,long b,long c) /求3個長整數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; int main( ) int a,b,c; float d,e,f; long g,h,i; cin
13、abc; cindef; cinghi; int m; m= max(a,b,c); /函數(shù)值為整型 cout max_i=mendl; float n; n=max(d,e,f); /函數(shù)值為實型 coutmax_f=nendl; long int p; p=max(g,h,i); /函數(shù)值為長整型 coutmax_l=pendl; return 0; 例1.8 將例1.6中的程序改為通過函數(shù)模板來實現(xiàn). #include using namespace std; template t max(t a,t b,t c) /模板聲明,其中t為類型參數(shù) if(ba) a=b; /定義一個通用函數(shù)
14、,用t用虛擬的類型名 if(ca) a=c; return a; int main() int i1=8,i2=5,i3=6,i; double d1=56.9,d2=90.765,d3=43.1,d; long g1=67843,g2=-456,g3=78123,g; i=max(i1,i2,i3); /調用模板函數(shù),此時t被int取代 d=max(d1,d2,d3); /調用模板函數(shù),此時t被double取代 g=max(g1,g2,g3); /調用模板函數(shù),此時t被long取代 couti_max=iendl; coutd_max=dendl; coutg_max=gendl; retu
15、rn 0; 1.3.6有默認參數(shù)的函數(shù) #include /例1.7此程序為采用不帶默認參數(shù)的函數(shù) using namespace std; int max(int a,int b,int c) /求3個整數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; int max(int a, int b) /求兩個整數(shù)中的最大者 if (ab) return a; else return b; int main( ) int a=7,b=-4,c=9; coutmax(a,b,c)endl; /輸出3個整數(shù)中的最大者 coutmax(a,b)endl; /輸出兩個整
16、數(shù)中的最大者 return 0; #include /習題1.11,此程序為采用帶默認參數(shù)的函數(shù) using namespace std; int main() int max(int a,int b,int c=0); int a,b,c; cinabc; coutmax(a,b,c)=max(a,b,c)endl; coutmax(a,b)=max(a,b)a) a=b; if(ca) a=c; return a; 注意: 實參與形參的結合是從左至右進行的,指定默認值的參數(shù)必須放在形參表列中的最右端. 最好在函數(shù)聲明時指定默認值.(必須在函數(shù)調用之前將默認值的信息通知編譯系統(tǒng)) 一個函數(shù)不
17、能既作為重載函數(shù),又作為有默認參數(shù)的函數(shù).(二義性)24變量的引用、作用域運算符和字符串變量1.3.7變量的引用(別名) 1. 引用的概念 變量的”引用”就是變量的別名,對一個變量的”引用”的所有操作,實際上都是對其所代表的(原來的)變量的操作. int a; int &b=a;/聲明b是一個整型變量的引用變量,它被初始化為a 注意:在上述聲明中&是”引用聲明符”,此時它并不代表地址. 對變量聲明一個引用,并不另開辟內存單元,b和a都代表同一變量單元.在聲明一個引用時,必須同時使之初始化,即聲明它代表哪一個變量.2. 引用的簡單使用 #include using namespace std;
18、int main( ) int a=10; int &b=a; /聲明b是a的引用 a=a*a; /a的值變化了,b的值也應一起變化 couta bendl; b=b/5; /b的值變化了,a的值也應一起變化 coutb aendl; return 0; 3. 關于引用的簡單說明 當&a的前面有類型符時(如int &a),它必然是對引用的聲明,如果前面沒有類型符(如p=&a),此時的&是取地址運算符.4. 將引用作為函數(shù)參數(shù) 1.將變量名作為實參. #include /例1.10無法實現(xiàn)兩個變量的值互換的程序 using namespace std; void swap(int a,int b
19、) int temp; temp=a; a=b; b=temp; /實現(xiàn)a和b的值互換 int main( ) int i=3,j=5; swap(i,j); couti,jendl; /i和j的值未互換 return 0; 2 傳遞變量的指針 /例1.11使用指針變量作形參,實現(xiàn)兩個變量的值互換 #include using namespace std; void swap(int *p1,int *p2) int temp; temp=*p1; *p1= *p2; *p2=temp; int main( ) int i=3,j=5; swap(&i,&j); couti,jendl; re
20、turn 0; 2.傳送變量的別名 例1.12利用”引用形參”實現(xiàn)兩個變量的值互換. #include using namespace std; void swap(int &a,int &b) int temp; temp=a; a=b; b=temp; int main( ) int i=3,j=5; swap(i,j); couti=i j=jendl; return 0; c+調用函數(shù)時有兩種傳遞數(shù)據(jù)的方式 1、傳值方式調用 2、引用方式調用 對比例1.12與例1.11,分析使用引用和使用指針變量用函數(shù)形參有什么不同? c+提供的引用機制是非常有用的,尤其用作函數(shù)參數(shù)時,比用指針簡單,
21、易于理解,而且可以減少出錯機會,提高程序的執(zhí)行效率,在許多情況下能代替指針.5. 對引用的進一步說明1.3.8內置函數(shù) 調用函數(shù)需要一定的時間,如果有的函數(shù)需要頻繁使用,則累計所用時間會很長,從而降低程序的執(zhí)行效率.c+提供一種提高效率的方法,在編譯時將所調用函數(shù)的代碼嵌入到主函數(shù)中. 例1.13 #include using namespace std; inline int max(int a,int b,int c) /這是一個內置函數(shù),求3個整數(shù)中的最大者 if (ba) a=b; if (ca) a=c; return a; int main( ) int i=7,j=10,k=25
22、,m; m=max(i,j,k); coutmax=mendl; return 0; 使用內置函數(shù)可以節(jié)省運行時間,但卻增加了目標程序的長度.因此只用于規(guī)模很小而使用頻繁的函數(shù).1.3.9作用域運算符 每一個變量都有其有效的作用域,只能在變量的作用域內使用該變量,不能直接使用其它作用域中的變量. 例子1.16 局部變量和全局變量同名 #include using namespace std; float a=13.5; int main( ) int a=5; coutaendl;/輸出局部變量a的值 cout:astring1; coutstring2;4. 字符串變量的運算 在用字符組存放
23、字符串時,字符串的運算要用字符串函數(shù).如strcat(存放),strcmp(比較),strcpy(復制),而對string類對象,可以不用這些函數(shù),直接用簡單的運算符.5. 字符串數(shù)組 string name5;/定義一字符串數(shù)組,它包含5個字符串元素 string name5=“zhang”,”li”,”fun”,”wang”,”tan”/定義一個字符串數(shù)組并初始化 編譯系統(tǒng)為每一個字符串變量分配固定的字節(jié)數(shù),在這個存儲單元中,并不是直接存放字符串本身,而是存放字符串的地址.例子1.17 輸入3個字符串,要求按字母由小到大順序輸出 #include #include using namesp
24、ace std; int main() string string1,string2,string3,temp; coutstring1string2string3; /輸入3個字符串 if(string2string3) temp=string2;string2=string3;string3=temp; /使串2串3 if(string1=string2) coutstring1 string2 string3endl; /如果串1串2,則串1串2串3 else if(string1=string3) coutstring2 string1 string3endl; /如果串1串2,且串1
25、串3,則串2串1串3 else coutstring2 string3 string1endl; /如果串1串2,且串1串3,則串2串3串3 return 0; 25動態(tài)內存分配/撤消new和delete運算符1.3.11動態(tài)分配/撤銷內存的運算符new和delete new int;/開辟一個存放整數(shù)的空間,返回一個指向整型數(shù)據(jù)的指針 new int(100);/開辟一個存放整數(shù)的空間,并指定該整數(shù)的初值為100 new char10;/開辟一個存放字符數(shù)組的空間,該數(shù)組有10個元素,返回一個指向字符數(shù)組的指針 new int54;/開辟一個存放二維整型數(shù)組的空間,該數(shù)組大小為5*4, fl
26、oat *p=new float(3.14159)/開辟一個存放實數(shù)的空間,并指定該實數(shù)的初值為3.14159,將返回的指向實型數(shù)據(jù)的指針賦給指針變量p例子1.18 開辟空間以存放一個結構體變量. #include #include using namespace std; struct student char name 10; int num; char sex; ; int main ( ) student *p; p=new student; strcpy(p-name,wang fun); p-num=10123; p-sex=m; coutname num sexendl; del
27、ete p; return 0; 如果由于內存不足等原因而無法正常分配空間,則new會返回一個空指針null,用戶可以根據(jù)該指針的值判斷分配空間是否成功. 注意, new和delete是運算符,不是函數(shù),因此執(zhí)行效率高. new和delete配合使用,不要混合使用.3.c+程序的編寫和實現(xiàn)在課中通過截圖和示意圖來演示。六、作業(yè)第2章 類和對象一、教學目的: 掌握聲明類的方法,類和類的成員的概念以及定義對象的方法;初步掌握用類和對象編制基于對象的程序;學習檢查和調試基于對象的程序。學時分配:9學時二、教學重點:初步掌握用類和對象編制基于對象的程序三、教學難點: 初步掌握用類和對象編制基于對象的程
28、序,學習檢查和調試基于對象的程序。四、教學方法:課題講授及實例演示,采用多媒體教學方法,利用powerpoint將本節(jié)課的關鍵內容歸類,并通過internet收集相關的資料融入教學內容中。五、教學過程設計:(9學時)1.面向對象程序設計方法概述2.1 面向對象程序設計方法概述 當程序規(guī)模較大時,編程者直接編寫出一個面向過程的程序就會力不從心,c+就是為了解決編寫大程序過程中的困難而產生的。2.1.1 什么是面向對象程序設計 面向對象程序設計的思路和人們日常生活中處理問題的思路是相似的。 在自然界和社會生活中,一個復雜的事物總是由許多部分組成的,各部分之間有一定的聯(lián)系,協(xié)調發(fā)揮功用。相關概念 1
29、.對象 客觀世界中任何一個事物都可以看成一個對象(object)。或者說,客觀世界是由千千萬萬個對象組成的。 對象是構成系統(tǒng)的基本單位。 班級對象: 班級的靜態(tài)特征,所屬的系和專業(yè)、班級的人數(shù),所在的教室等。這種靜態(tài)特征稱為屬性; 班級的動態(tài)特征,如學習、開會、體育比賽等,這種動態(tài)特征稱為行為。 如果想從外部控制班級中學生的活動,可以從外界向班級發(fā)一個信息(如聽到打鈴就下課等),一般稱它為消息。 任何一個對象都應當具有這兩個要素,一是屬性(attribute);二是行為(behavior),它能根據(jù)外界給的信息進行相應的操作。對象是由一組屬性和一組行為構成的。 面向對象的程序設計采用了以上人們
30、所熟悉的這種思路。使用面向對象的程序設計方法設計一個復雜的軟件系統(tǒng)時,首要的問題是確定該系統(tǒng)是由哪些對象組成的,并且設計這些對象。在c+中,每個對象都是由數(shù)據(jù)和函數(shù)(即操作代碼)這兩部分組成的。 調用對象中的函數(shù)就是向該對象傳送一個消息(message),要求該對象實現(xiàn)某一行為(功能)。 2、封裝與信息隱蔽 我們可以對一個對象進行封裝處理,把它的一部分屬性和功能對外界屏蔽,也就是說從外界是看不到的、甚至是不可知的。 使用對象的人完全可以不必知道對象內部的具體細節(jié),只需了解其外部功能即可自如地操作對象。 把對象的內部實現(xiàn)和外部行為分隔開來。 數(shù)據(jù)封裝將對象內部的信息進行屏蔽,人們只能通過對象界面
31、上的容許操作對對象進行動作,改變對象的屬性及狀態(tài)。 信息隱蔽是指對象中的某些部分對外隱蔽,即隱蔽其內部細節(jié),只留下少量接口,以便與外界聯(lián)系,接收外界消息。它還有利于數(shù)據(jù)安全,防止無關的人了解和修改數(shù)據(jù)。 c+的對象中的函數(shù)名就是對象對外接口。3、抽象 抽象的過程是將有關事物的共性歸納、集中的過程。 抽象的作用是表示同一類事物的本質。 對象是具體存在的。類是對象的抽象,而對象則是類的實例,或者說是類的具體表現(xiàn)形式。類 類是一組具有相同數(shù)據(jù)結構和相同操作的對象的集合。 類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。 類定義可以視為一個具有類似特性與共同行為的對象的模板,可用來產生對象。對象實例
32、 在一個類中,每個對象都是類的實例 (instance),它們都可使用類中提供的函數(shù)。 對象的狀態(tài)則包含在它的實例變量,即實例的屬性中。4、繼承與重用面向對象的程序組成:對象 = 算法 數(shù)據(jù)結構程序=(對象+對象+對象+)+ 消息 消息的作用就是對對象的控制。程序設計的關鍵是設計好每一個對象以及確定向這些對象發(fā)出的命令,使各對象完成相應的操作。 11什么是面向對象程序設計及特點12類和對象的作用2.類和對象21類的定義類的聲明格式:class 類名 private : 成員數(shù)據(jù);成員函數(shù); public : 成員數(shù)據(jù);成員函數(shù); protected:成員數(shù)據(jù);成員函數(shù);;用關鍵字private
33、限定的成員稱為私有成員,對私有成員限定在該類的內部使用,即只允許該類中的成員函數(shù)使用私有的成員數(shù)據(jù),對于私有的成員函數(shù),只能被該類內的成員函數(shù)調用;類就相當于私有成員的作用域。 而用關鍵字protected所限定的成員稱為受保護成員,只允許在類內及該類的派生類中使用受保護的數(shù)據(jù)或函數(shù)。即受保護成員的作用域是該類及該類的派生類。用關鍵字public限定的成員稱為公用成員,公用成員的數(shù)據(jù)或函數(shù)不受類的限制,可以在類內或類外自由使用;對類而言是透明的。每一個限制詞(private等)在類體中可使用多次,即一個類體中可以包含多個private和public部分。一旦使用了限制詞,該限制詞一直有效,直到
34、下一個限制詞開始為止。但為了程序清晰,養(yǎng)成這樣的習慣:使每一種成員訪問限定符在類定義體中只出現(xiàn)一次。如果未加說明,類中成員默認的訪問權限是private,即私有的。class studentchar name20;float math;float chiese; public :float average; void setname(char *name);void setmath(float math);void setchinese(float ch); float getaverage(void);class a float x, y; public: void setxy(float
35、a,float b) x=a; y=b; void print(void) coutxtyendl; ;在類外不能直接使用 x 或 y ,必須通過setxy()給 x 或 y 賦值,通過print()輸出 x 或 y 。成員函數(shù)與成員數(shù)據(jù)的定義不分先后,可以先說明函數(shù)原型,再在類體外定義函數(shù)體。class a float x, y; public: void setxy(float a,float b) x=a; y=b; void print(void) coutxtyendl; ;class a float x, y; public: void setxy(float a,float b)
36、; void print(void);;void a:setxy(float a,float b) x=a; y=b; void a:print(void) coutxtyendl; 在定義一個類時,要注意如下幾點:1、類具有封裝性,并且類只是定義了一種結構(樣板),所以類中的任何成員數(shù)據(jù)均不能使用關鍵字extern,auto或register限定其存儲類型。2、在定義類時,只是定義了一種導出的數(shù)據(jù)類型,并不為類分配存儲空間,所以,在定義類中的數(shù)據(jù)成員時,不能對其初始化。如:class test int x=5,y=6; /是不允許的 extern float x; /是不允許的 在c+語言中
37、,結構體類型只是類的一個特例。結構體類型與類的唯一的區(qū)別在于:在類中,其成員的缺省的存取權限是私有的;而在結構體類型中,其成員的缺省的存取權限是公有的。 內聯(lián)成員函數(shù) 對象在定義類時,只是定義了一種數(shù)據(jù)類型,即說明程序中可能會出現(xiàn)該類型的數(shù)據(jù),并不為類分配存儲空間。只有在定義了屬于類的變量后,系統(tǒng)才會為類的變量分配空間。類的變量我們稱之為。22成員函數(shù):成員函數(shù)定義;使用對象指針;常成員函數(shù);重載成員函數(shù)對象是類的實例,定義對象之前,一定要先說明該對象的類。不同對象占據(jù)內存中的不同區(qū)域,它們所保存的數(shù)據(jù)各不相同,但對成員數(shù)據(jù)進行操作的成員函數(shù)的程序代碼均是一樣的。 在建立對象時,只為對象分配用
38、于保存數(shù)據(jù)成員的內存空間,而成員函數(shù)的代碼為該類的每一個對象所共享。 對象的定義方法同結構體定義變量的方法一樣,也分三種,當類中有數(shù)據(jù)成員的訪問權限為私有時,不允許對對象進行初始化。class a float x,y;public: void setxy( float a, float b ) x=a; y=b; void print(void) coutxtyendl; a1,a2;void main(void) a a3,a4;對象的使用一個對象的成員就是該對象的類所定義的成員,有成員數(shù)據(jù)和成員函數(shù),引用時同結構體變量類似,用“.”運算符。class a float x,y;public:
39、 float m,n; void setxy( float a, float b ) x=a; y=b; void print(void) coutxtyendl; ;void main(void) a a1,a2; /定義對象 a1.m=10; a1.n=20; /為公有成員數(shù)據(jù)賦值 a1.setxy(2.0 , 5.0); /為私有成員數(shù)據(jù)賦值 a1.print();用成員選擇運算符“.”只能訪問對象的公有成員,而不能訪問對象的私有成員或保護成員。若要訪問對象的私有的數(shù)據(jù)成員,只能通過對象的公有成員函數(shù)來獲取。 23程序結構:訪問控制;類的程序結構;類作用域3.類的封裝性和信息隱蔽六、作業(yè)
40、第3章 關于類和對象的進一步討論一、教學目的: 進一步加深對類和對象的理解;掌握類的構造函數(shù)和析構函數(shù)的概念和使用方法。掌握對對象數(shù)組、對象的指針及其使用方法;掌握友元的概念和使用;了解類模板的使用方法。學時分配:10學時二、教學重點:掌握類的構造函數(shù)和析構函數(shù)的概念和使用方法三、教學難點:理解和掌握對象數(shù)組、對象的指針及其使用方法四、教學方法:課題講授及例程解析,采用多媒體教學方法,利用powerpoint將本節(jié)課的關鍵內容歸類,并通過internet收集相關的資料融入教學內容中。五、教學過程設計:1. 構造函數(shù)和析構函數(shù)及調用順序11構造函數(shù)設計,構造函數(shù)的重載 ,類成員初始化,構造順序,
41、復制構造函數(shù)對象數(shù)組、對象的指針及其使用方法構造函數(shù)和析構函數(shù)是在類體中說明的兩種特殊的成員函數(shù)。構造函數(shù)是在創(chuàng)建對象時,使用給定的值來將對象初始化。析構函數(shù)的功能正好相反,是在系統(tǒng)釋放對象前,對對象做一些善后工作。構造函數(shù)可以帶參數(shù)、可以重載,同時沒有返回值。構造函數(shù)是類的成員函數(shù),系統(tǒng)約定構造函數(shù)名必須與類名相同。構造函數(shù)提供了初始化對象的一種簡單的方法。class afloat x,y;public:a(float a,float b) x=a; y=b;/構造函數(shù),初始化對象float sum(void) return x+y; void set(float a,float b) x=
42、a;y=b;print(void) coutx=xty=yendl;void main(void)a a1(2.0, 3.0);/定義時調用構造函數(shù)初始化a a2(1.0,2.0);a2.set(10.0, 20.0); /利用成員函數(shù)重新為對象賦值 a1.print();a2.print();對構造函數(shù),說明以下幾點:1.構造函數(shù)的函數(shù)名必須與類名相同。構造函數(shù)的主要作用是完成初始化對象的數(shù)據(jù)成員以及其它的初始化工作。2. 在定義構造函數(shù)時,不能指定函數(shù)返回值的類型,也不能指定為void類型。3. 一個類可以定義若干個構造函數(shù)。當定義多個構造函數(shù)時,必須滿足函數(shù)重載的原則。4.構造函數(shù)可以指定參數(shù)的缺省值。 5.若定義的類要說明該類的對象時,構造函數(shù)必須是公有的成員函數(shù)。如果定義的類僅用于派生其它類時,則可將構造函數(shù)定義為保護的成員函數(shù)。由于構造函數(shù)屬于類的成員函數(shù),它對私
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度股權質押資產重組合同示范文本3篇
- 二零二五年度鋼材倉儲物流服務合同9篇
- 二零二五年度路燈照明設施安全檢測合同樣本2篇
- 二零二五年度:勞動合同法實務操作與案例分析合同3篇
- 二零二五年度船舶建造與設備安裝合同2篇
- 二零二五年度農產品質量檢測合同范本3篇
- 二零二五年度安置房買賣合同電子支付與結算規(guī)范3篇
- 3、2025年度綠色出行接送機服務合同范本2篇
- 二零二五年度文化創(chuàng)意產業(yè)合作開發(fā)合同范本3篇
- 家里陪護合同(2篇)
- 人教版小學數(shù)學(2024)一年級下冊第一單元 認識平面圖形綜合素養(yǎng)測評 B卷(含答案)
- 企業(yè)年會攝影服務合同
- 電商運營管理制度
- 二零二五年度一手房購房協(xié)議書(共有產權房購房協(xié)議)3篇
- 2025年上半年上半年重慶三峽融資擔保集團股份限公司招聘6人易考易錯模擬試題(共500題)試卷后附參考答案
- 城市公共交通運營協(xié)議
- 內燃副司機晉升司機理論知識考試題及答案
- 2024北京東城初二(上)期末語文試卷及答案
- 2024設計院與職工勞動合同書樣本
- 2024年貴州公務員考試申論試題(B卷)
- 電工高級工練習題庫(附參考答案)
評論
0/150
提交評論