




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、關(guān)于面向?qū)ο蟪绦蛟O(shè)計(jì)之類和對象第一張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)?面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object-Oriented Programming )和傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)的思路完全不同。面向?qū)ο蟮某绦蛟O(shè)計(jì)和人們?nèi)粘I罱鉀Q問題的思路是相似的。比如,我們生產(chǎn)汽車時(shí),不是順序制造發(fā)動(dòng)機(jī),在設(shè)計(jì)制造底盤、車身、輪子。而是分別設(shè)計(jì)制造發(fā)動(dòng)機(jī)、底盤、車身和輪子,最后組裝在一起。組裝時(shí),各部件之間有聯(lián)系,以便協(xié)調(diào)工作。例如,司機(jī)踩油門,就能調(diào)節(jié)油路,控制發(fā)動(dòng)機(jī)的轉(zhuǎn)速,就能驅(qū)動(dòng)車輪。第二張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο?/p>
2、程序設(shè)計(jì)方法概述程序設(shè)計(jì)者的任務(wù)有兩個(gè):一是設(shè)計(jì)所需要的類和對象,即確定那些數(shù)據(jù)和操作封裝在一起;(類設(shè)計(jì)者、核心模塊產(chǎn)品提供商)二是考慮怎樣向有關(guān)對象發(fā)送消息,以啟動(dòng)相關(guān)對象的操作。(主程序設(shè)計(jì)者,外包程序,面向用戶的公司)編程者如同一個(gè)總調(diào)度,不斷地向各個(gè)對象發(fā)出命令,讓這些對象活動(dòng)起來,完成指定的工作。這就是面向?qū)ο蟮某绦蛟O(shè)計(jì)的基本思路。第三張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述什么是對象(object)?一個(gè)對象由一組“屬性”和一組“行為”構(gòu)成。并根據(jù)外界給它的消息進(jìn)行相應(yīng)的操作。系統(tǒng)中多個(gè)對象通過一定的渠道相互聯(lián)系。任何事物都可以看成一個(gè)對象??梢?/p>
3、是自然物體,也可以是邏輯結(jié)構(gòu)。 例: 一個(gè)班級作為對象一個(gè)班級作為對象,有兩個(gè)要素:一是班級的靜態(tài)特征,如班級所屬的專業(yè),學(xué)生人數(shù)、班主任姓名等,這種靜態(tài)特征稱為“屬性”;另一個(gè)是班級的動(dòng)態(tài)特征,如上課,體育比賽,開會(huì)等,稱為“行為”。外界向班級發(fā)一個(gè)信息(如上課鈴聲,廣播通知),我們稱之為“消息”,班級就會(huì)發(fā)生一個(gè)操作(要么上課,要么開會(huì))第四張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述什么是C+對象?C+中,每個(gè)對象都由若干數(shù)據(jù)(屬性)和若干函數(shù)(操作行為)組成。數(shù)據(jù)就是對象的“屬性”,函數(shù)就是用來對數(shù)據(jù)進(jìn)行的“操作”,以便實(shí)現(xiàn)某種功能。這種操作就是對象的“行
4、為”,也叫“方法”。我們點(diǎn)擊一下鼠標(biāo),按動(dòng)鍵盤的一個(gè)按鈕,就是給某個(gè)對象一個(gè)消息,系統(tǒng)回調(diào)用該對象中的函數(shù)進(jìn)行操作。比如長方形對象,其長和寬就是它的屬性,調(diào)用該對象的一些函數(shù),即向該對象傳送一些消息,可以用來對其長、寬值進(jìn)行加工計(jì)算,以實(shí)現(xiàn)求出面積、周長等功能。第五張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述什么是對象封裝(encapsulation )?就是把對象的不想讓外界知道的屬性和功能屏蔽起來,讓外界看不見。封裝有兩個(gè)含義, 一是將有關(guān)的數(shù)據(jù)和操作函數(shù)封裝成一個(gè)基本單位,即對象內(nèi)。各對象之間相互獨(dú)立,互不干擾; 二是將對象中的部分屬性或功能對外隱蔽,只留少
5、數(shù)接口向外公布,以接收外界信息。對象封裝的好處在于,降低了人們操作對象的復(fù)雜程度。使用對象的人,不必知道對象內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),只需要了解外部功能就可以自如地操作該對象。對象的行為由類的內(nèi)部數(shù)據(jù)結(jié)構(gòu)和相關(guān)的操作確定;外部行為通過操作接口實(shí)現(xiàn)。人們關(guān)心的就是操作接口(函數(shù)名)所能提供的服務(wù)。第六張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述什么是抽象(abstraction)?將具有相同特性的事物歸納、集中成一個(gè)統(tǒng)一類型,稱為抽象。比如,把張三,李四,王五歸納為一類,我們稱之為“人”。抽象的作用,是表示同類事物的本質(zhì)。 C和C+中,數(shù)據(jù)類型就是對一批具體數(shù)據(jù)的抽象,整形數(shù)
6、據(jù)就是所有整數(shù)的抽象?!邦悺笔恰皩ο蟆钡某橄?,“對象”則是類的“特例”,或“具體表現(xiàn)形式”。第七張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述什么是繼承( inherit )? B類在A類的基礎(chǔ)上增加了少量內(nèi)容。我們顯然不必重新設(shè)計(jì)一個(gè)新類B,只需要把A類拿過來,在此基礎(chǔ)上添加新內(nèi)容就可以了。這就是面向?qū)ο蟪绦蛟O(shè)計(jì)的繼承機(jī)制。C+提供繼承機(jī)制,大大節(jié)省了編程工作量,這就是所謂“軟件重用( software reusability )”的思想。對于大型軟件的開發(fā)具有重要意義。第八張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述什么是多態(tài)性(
7、polymorphism )?如果有幾個(gè)相似而不同的對象,人們往往要求在向它們發(fā)出同一個(gè)消息時(shí),各自作出不同的操作,這種情況就是“多態(tài)現(xiàn)象”。C+中,所謂多態(tài)性是指,由繼承而產(chǎn)生的相關(guān)的不同的類,其對象對同一消息會(huì)作出不同的響應(yīng)。顯然,多態(tài)性能增加程序的靈活性,它是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要特征。第九張,PPT共五十六頁,創(chuàng)作于2022年6月2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)方法概述類與對象的作用C+全面支持傳統(tǒng)的面向過程的程序設(shè)計(jì)(即結(jié)構(gòu)化編程),也支持基于對象和面向?qū)ο蟮某绦蛟O(shè)計(jì)。所謂基于對象,是指程序是以類和對象為基礎(chǔ),程序的操作是圍繞對象進(jìn)行的。所謂面向?qū)ο?,是指,在基于對象的基礎(chǔ)上,利用了繼承機(jī)制
8、和多態(tài)性。面向?qū)ο蟮某绦蛟O(shè)計(jì)特點(diǎn):類具有對數(shù)據(jù)的抽象性、封裝性、繼承性、多態(tài)性。第十張,PPT共五十六頁,創(chuàng)作于2022年6月2.2 類的聲明和對象的定義類和對象的關(guān)系C+中,對象的類型稱為類( class )。類代表了某一批對象的共同特性。前面已經(jīng)談到,類是對象的抽象,而對象是類的具體實(shí)例( instance )。就象結(jié)構(gòu)體類型和結(jié)構(gòu)體變量一樣。C+中,我們先聲明一個(gè)類的類型,然后再定義該類的若干對象。對象就是類這種類型的一個(gè)變量。 類是抽象的,不占內(nèi)存,而對象是具體的,要占用內(nèi)存空間。第十一張,PPT共五十六頁,創(chuàng)作于2022年6月2.2 類的聲明和對象的定義類的聲明類的聲明方法和結(jié)構(gòu)體的
9、聲明方法一樣,只是將關(guān)鍵字struct 換成class:class 類名 private:私有數(shù)據(jù)成員和私有成員函數(shù); public:公共數(shù)據(jù)成員和公共成員函數(shù);/成員訪問限定區(qū)域先后次序任意,但一種最好只出現(xiàn)一次,類的成員包含對數(shù)據(jù)操作的函數(shù),體現(xiàn)了數(shù)據(jù)和操作的封裝類的成員不能所有都私有,一般隱藏?cái)?shù)據(jù),把成員函數(shù)作為對外接口成員訪問限定符( member access specifier )成員訪問限定符( member access specifier )別忘了必須用分號結(jié)束!第十二張,PPT共五十六頁,創(chuàng)作于2022年6月2.2 類的聲明和對象的定義類的聲明示例類頭:class rect
10、angle 類體: private: int length, width, area, perimeter ; public: void PutArea ( ) area = length * width; void PutPerimeter ( ) perimeter = (length + width ) * 2; void display ( ) cout “l(fā)ength = “ length endl; cout “width = “ width endl; cout “area = “ area endl; cout “perimeter = “ perimeter endl; ;在
11、類的外面不能訪問私有成員,只能通過公有成員函數(shù)間接訪問在類的外面可以訪問公有成員不指定公有私有,則默認(rèn)為私有一般先出現(xiàn)private,后出現(xiàn)public第十三張,PPT共五十六頁,創(chuàng)作于2022年6月類的聲明還有一種protected類型,不能被類外訪問,但可以被派生類訪問一般使用廠商提供的類庫也可以自定義類庫,便于單位部門使用第十四張,PPT共五十六頁,創(chuàng)作于2022年6月2.2 類的聲明和對象的定義對象的定義 聲明了類以后,就可以定義該類的對象了。給對象分配了存儲空間。其格式為: class 類名 對象名1,對象名2, / 方括號表示可選項(xiàng)對象定義示例 如前例中,聲明了一個(gè)名為 recta
12、ngle 的類,我們可以定義該類的若干對象: class rectangle r1 ,r2, r3; rectangle r1, r2, r3;第十五張,PPT共五十六頁,創(chuàng)作于2022年6月2.2 類的聲明和對象的定義對象定義class rectangle private: int length, width, area, perimeter ; public: void PutArea ( ) area = length * width; void PutPerimeter ( ) perimeter = (length + width ) * 2; void display ( ) co
13、ut “l(fā)ength = “ length endl; cout “width = “ width endl; cout “area = “ area endl; cout “perimeter = “ perimeter endl; r1,r2;不出現(xiàn)類名,直接定義對象,不提倡第十六張,PPT共五十六頁,創(chuàng)作于2022年6月2.2 類的聲明和對象的定義類和結(jié)構(gòu)體類型異同 struct/class rectangle public/private: int length, width, area, perimeter ; void PutArea ( ) area = length * wid
14、th; void PutPerimeter ( ) perimeter = (length + width ) * 2; void display ( ) cout “l(fā)ength = “ length endl; cout “width = “ width endl; cout “area = “ area endl; cout “perimeter = “ perimeter endl; r1,r2;建議使用CLASS第十七張,PPT共五十六頁,創(chuàng)作于2022年6月2.3 類的成員函數(shù)成員函數(shù)的性質(zhì)類的成員函數(shù)也叫類函數(shù),用法和一般函數(shù)基本上一樣。區(qū)別在于它只是屬于一個(gè)類的成員而出現(xiàn)在類中
15、。它可以被指定為類的私有成員( private )、公有成員( public )或保護(hù)成員( protected )。使用類函數(shù)時(shí),要注意它的使用權(quán)限,如果是私有成員,只能被本類的其他成員函數(shù)調(diào)用,不能被類外調(diào)用(工具函數(shù))。成員函數(shù)可以調(diào)用本類所有數(shù)據(jù)成員和成員函數(shù),也可以引用在本作用域中的有效數(shù)據(jù)。通常,我們把類的數(shù)據(jù)成員定義成私有成員,對外屏蔽,而把成員函數(shù)定義成公有成員,他可以調(diào)用私有成員和其它成員。一個(gè)類若沒有成員函數(shù),就退化成C語言的結(jié)構(gòu)體,而失去意義。第十八張,PPT共五十六頁,創(chuàng)作于2022年6月2.3 類的成員函數(shù)在類外定義成員函數(shù)成員函數(shù)一般在類體中定義,如前面所講。也可以
16、在類外定義,但要指明是屬于哪個(gè)類的成員函數(shù),用“類名:函數(shù)名”來指定。例如:class rectangle private: int length, width,; int area, perimeter ; public: void PutArea ( ); void PutPerimeter ( ); void display ( );void rectangle: PutArea ( ) area = length * width;void rectangle: PutPerimeter ( ) perimeter = (length + width ) * 2; void rectan
17、gle: display ( ) cout “l(fā)ength = “ length endl; cout “width = “ width endl; cout “area = “ area endl; cout “perimeter = “ perimeter ; rectangle r1, r2, r3;第十九張,PPT共五十六頁,創(chuàng)作于2022年6月“:”成為域限定符。如果在域限定符前沒有類名,或函數(shù)名前既沒有類名,又沒有域限定符::display ( ) 或 display ( )則表示該函數(shù)不屬于任何類,它不是成員函數(shù),而是全局函數(shù),即普通函數(shù)。第二十張,PPT共五十六頁,創(chuàng)作于202
18、2年6月 一般來說,類定義包括兩個(gè)部分:1、聲明部分(“做什么”): 數(shù)據(jù)成員(名稱、類型) 成員函數(shù)(方法)2、實(shí)現(xiàn)部分(“怎么做”): 成員函數(shù)的定義和實(shí)現(xiàn)聲明在定義之前,也即是類體外定義成員函數(shù)(這里用定義,實(shí)際是給函數(shù)分配了空間,后章節(jié)詳述)減小了類體長度,隱藏了執(zhí)行細(xì)節(jié),提高了類的保密性第二十一張,PPT共五十六頁,創(chuàng)作于2022年6月2.3 類的成員函數(shù)inline 成員函數(shù)類的成員函數(shù)也可以指定為內(nèi)聯(lián)函數(shù),只要是函數(shù)代碼較少,有頻繁使用。我們只要在成員函數(shù)的類型簽名加上inline 關(guān)鍵字就可以。class rectangle private: int length, width
19、,; int area, perimeter ; public: inline void PutArea ( ); inline void PutPerimeter ( ); void display ( ) cout “l(fā)ength = “ length endl; cout “width = “ width endl; cout “area = “ area endl; cout “perimeter = “ perimeter endl; ;第二十二張,PPT共五十六頁,創(chuàng)作于2022年6月2.3 類的成員函數(shù)inline 成員函數(shù)class rectangle private: int
20、 length, width,; int area, perimeter ; public: inline void PutArea ( ); inline void PutPerimeter ( ); void display ( );void rectangle: display ( ) cout “l(fā)ength = “ length endl; cout “width = “ width endl; cout “area = “ area endl; cout “perimeter = “ perimeter ; Inline第二十三張,PPT共五十六頁,創(chuàng)作于2022年6月2.3 類的
21、成員函數(shù)inline 成員函數(shù)類體中不包含循環(huán)控制結(jié)構(gòu),此類成員函數(shù)自動(dòng)作為inline 成員函數(shù)。類體外也可定義inline 成員函數(shù),聲明、定義其一顯式定義即可,類定義和其成員函數(shù)定義必須在同一文件(或包含)。第二十四張,PPT共五十六頁,創(chuàng)作于2022年6月2.3 類的成員函數(shù)成員函數(shù)的存儲方式同一類定義了多個(gè)對象時(shí),每個(gè)對象的數(shù)據(jù)成員各自占據(jù)獨(dú)立的空間,而共享一個(gè)共用的函數(shù)代碼段,不占用對象的存儲空間。C+為此專門設(shè)立了一個(gè)名為 this 的指針,用來指向不同的對象。當(dāng)調(diào)用對象r1,成員函數(shù)訪問的就是r1的數(shù)據(jù)成員。所以成員函數(shù)建議在類體外定義。數(shù)據(jù)1對象r1數(shù)據(jù)2對象r2數(shù)據(jù)10對象
22、r10共用函數(shù)代碼第二十五張,PPT共五十六頁,創(chuàng)作于2022年6月2.4 對象成員的引用用對象名和成員運(yùn)算符( . )訪問對象成員舉例:class rectangle public: int length, width; / 公共數(shù)據(jù)成員 void display ( ); / 公共成員函數(shù);void rectangle: display ( )cout “area =“ length* width ednl; cout“perimeter =“ lengthclass rectangle public: int length, width; / 公共數(shù)據(jù)成員 void display (
23、); / 公共成員函數(shù) ;void rectangle: display ( )cout “area =“ length* width ednl; cout“perimeter =“ lenght = 5; p-width = 4; p-display ( ); 用這種方式萬分的成員,也必須定義成公用成員!第二十七張,PPT共五十六頁,創(chuàng)作于2022年6月2.4 對象成員的引用用對象的引用訪問對象成員舉例:class rectangle public: int length, width; / 公共數(shù)據(jù)成員 void display ( ); / 公共成員函數(shù);void rectangle:
24、display ( )cout “area =“ length* width ednl; cout“perimeter =“ ( length+ width)*2; void main ( ) rectangle r2; rectangle &r3 = r2; r3.lenght = 5; r3.width = 4; r3.display ( ); 第二十八張,PPT共五十六頁,創(chuàng)作于2022年6月例定義一個(gè)時(shí)間類,并定義一個(gè)對象及其引用,輸入時(shí)分秒輸出時(shí):分:秒#include using namespace std;int main() Time t1; cint2.hour; cint2
25、.minute; cint1.sec; coutt1.hour:t1.minute:t2.secendl; 第二十九張,PPT共五十六頁,創(chuàng)作于2022年6月例#include using namespace std;class Time public: int hour; int minute; int sec; ;int main() Time t1; Time &t2=t1; cint2.hour; cint2.minute; cint1.sec; coutt1.hour:t1.minute:t2.secendl; 第三十張,PPT共五十六頁,創(chuàng)作于2022年6月例定義2個(gè)對象,分別輸入
26、時(shí)分秒輸出時(shí):分:秒#include class Time public: int hour; int minute; int sec; ;int main() return 0; 第三十一張,PPT共五十六頁,創(chuàng)作于2022年6月例#include using namespace std;class Time public: int hour; int minute; int sec; ;int main() Time t1; cint1.hour; cint1.minute; cint1.sec; coutt1.hour:t1.minute:t1.sect2.hour; cint2.min
27、ute; cint2.sec; coutt2.hour:t2.minute:t2.secendl; return 0; 第三十二張,PPT共五十六頁,創(chuàng)作于2022年6月例:定義函數(shù)執(zhí)行輸入輸出#include using namespace std;class Time public: int hour; int minute; int sec; ; int main() void set_time(Time&) ; void show_time(Time&); Time t1; set_time(t1); show_time(t1); Time t2; set_time(t2); show
28、_time(t2); return 0; 第三十三張,PPT共五十六頁,創(chuàng)作于2022年6月例#include using namespace std;class Time public: int hour; int minute; int sec; ;int main() void set_time(Time&) ; void show_time(Time&); Time t1; set_time(t1); show_time(t1); Time t2; set_time(t2); show_time(t2); return 0; void set_time(Time& t) cint.ho
29、ur; cint.minute; cint.sec; void show_time(Time& t) coutt.hour:t.minute:t.secendl; 第三十四張,PPT共五十六頁,創(chuàng)作于2022年6月例:定義含默認(rèn)值參數(shù)的set_time和show_time函數(shù)#include class Time public: int hour; int minute; int sec; ;int main() Time t1; set_time(t1,12,23,34); show_time(t1); Time t2; set_time(t2); show_time(t2); 第三十五張,
30、PPT共五十六頁,創(chuàng)作于2022年6月例#include using namespace std;class Time public: int hour; int minute; int sec; ;int main() void set_time(Time&,int hour=0,int minute=0,int sec=0); void show_time(Time&); Time t1; set_time(t1,12,23,34); show_time(t1); Time t2; set_time(t2); show_time(t2); return 0; void set_time(T
31、ime& t,int hour=9,int minute=30,int sec=0) t.hour=hour; t.minute=minute; t.sec=sec; void show_time(Time& t) coutt.hour:t.minute:t.secendl; 第三十六張,PPT共五十六頁,創(chuàng)作于2022年6月例:定義成員函數(shù)輸入時(shí)分秒并輸出#include class Time public:private: int hour; int minute; int sec; ;int main() Time t1; t1.set_time(); t1.show_time(); T
32、ime t2; t2.set_time(); t2.show_time(); void Time:set_time() cinhour; cinminute; cinsec; void Time:show_time() couthour:minute:secendl; 第三十七張,PPT共五十六頁,創(chuàng)作于2022年6月例#include using namespace std;class Time public: void set_time() ; void show_time(); private: int hour; int minute; int sec; ;int main() Tim
33、e t1; t1.set_time(); t1.show_time(); Time t2; t2.set_time(); t2.show_time(); return 0; void Time:set_time() cinhour; cinminute; cinsec; void Time:show_time() couthour:minute:secendl; 第三十八張,PPT共五十六頁,創(chuàng)作于2022年6月習(xí)題1第三十九張,PPT共五十六頁,創(chuàng)作于2022年6月習(xí)題1#include using namespace std;class Time public: int hour; int
34、 minute; int sec; ;Time t;void set_time(void) cint.hour; cint.minute; cint.sec; void show_time(void) coutt.hour:t.minute:t.secendl; int main()set_time(); show_time(); return 0; 第四十張,PPT共五十六頁,創(chuàng)作于2022年6月例2.4 P61#include using namespace std;class Array_maxpublic: void set_value(); void max_value(); voi
35、d show_value(); private: int array10; int max;int main() Array_max arrmax; arrmax.set_value(); arrmax.max_value(); arrmax.show_value(); return 0; 第四十一張,PPT共五十六頁,創(chuàng)作于2022年6月2.6 類的封裝和信息隱蔽公用接口和私有實(shí)現(xiàn)的分離我們已經(jīng)學(xué)到,C+通過類的封裝,將類的數(shù)據(jù)成員和成員函數(shù)集成到一個(gè)類中。而一般在類的聲明時(shí),往往把數(shù)據(jù)成員指定成私有的,使它們與外界隔離,即,不能在類外直接使用私有成員,外界只能通過類的公有函數(shù),間接進(jìn)行對私
36、有成員的操作。換句話說,外界與類的私有成員的唯一聯(lián)系渠道,就是該類的公有成員函數(shù)。所以,我們一般把成員函數(shù)指定成公有的( public )性質(zhì)(除非某些成員函數(shù)不想讓外界調(diào)用)。這就是所謂的“外部接口”與內(nèi)部實(shí)現(xiàn)的分離,以起到信息隱蔽的作用。而這是軟件工程最基本的原則。第四十二張,PPT共五十六頁,創(chuàng)作于2022年6月 定義一個(gè)類就是實(shí)現(xiàn)對創(chuàng)建一個(gè)對象的數(shù)據(jù)結(jié)構(gòu)的描述。 在類中,一些成員是保護(hù)的,被有效地屏蔽,以防外界的干擾和誤操作。 另一些成員是公共的,作為接口提供外界使用。 右圖是對它們采用的圖示方法說明類的組成結(jié)構(gòu)。以Point 類為例。xoffsetyoffsetsetanglerad
37、iusxy封裝體內(nèi)部數(shù)據(jù)成員Point 類訪問接口第四十三張,PPT共五十六頁,創(chuàng)作于2022年6月2.6 類的封裝和信息隱蔽類聲明和成員函數(shù)定義的分離當(dāng)一個(gè)類被多個(gè)程序使用時(shí),一般將類的聲明(包括成員函數(shù)的聲明)放在指定的頭文件中,用戶在編程時(shí),將該頭文件包含近來就可以了。而不必在每個(gè)使用該類的程序中重復(fù)書寫該類的聲明。我們?nèi)缓罂梢灾苯釉诔绦蛑兄苯佣x該類的對象,直接調(diào)用該類的公有成員函數(shù)。為了實(shí)現(xiàn)信息隱蔽,對類的成員函數(shù)的定義一般不放在頭文件中,而放在另一個(gè)文件中。然后按照對多文件程序的編譯和運(yùn)行方法對程序進(jìn)行編譯和連接。請看下面示例。第四十四張,PPT共五十六頁,創(chuàng)作于2022年6月2.
38、6 類的封裝和信息隱蔽/ rectangle.hclass rectangle private: int length, width; public: void Put ( ); void display ( ); ;/ rectangle.cpp#include #include “rectangle.h”void rectangle:Put ( ) length = 5; width = 4; void rectangle: display ( ) cout “area = “ length*width endl; / main.cpp#include #include “rectangl
39、e.h”void main ( ) rectangle r1; r1.display ( );第四十五張,PPT共五十六頁,創(chuàng)作于2022年6月2.6 類的封裝和信息隱蔽在實(shí)際運(yùn)用中,將若干功能相近的類聲明集中在一起,形成類庫。類庫包括兩個(gè)組成部分: 類聲明頭文件; 經(jīng)過編譯的頭文件函數(shù)的定義的目標(biāo)文件。用戶只需要將類庫裝入自己的計(jì)算機(jī)中C+系統(tǒng)的子目錄下,并在程序中用#include命令將有關(guān)類聲明的頭文件包含到程序中,就可以使用這些類和其中的成員函數(shù)了。第四十六張,PPT共五十六頁,創(chuàng)作于2022年6月2.6 類的封裝和信息隱蔽面向?qū)ο蟪绦蛟O(shè)計(jì)中的幾個(gè)名詞方法:method,指對數(shù)據(jù)的操作
40、。消息:其實(shí)就是一個(gè)命令,由程序語句實(shí)現(xiàn)。外界通過發(fā)送“消息”來激活有關(guān)的方法。比如:rectangle.dispaly ( );就是向rectangle對象發(fā)一個(gè)消息,通知它執(zhí)行其中的“display ( )”方法。這一條語句就涉及到對象、消息、方法這三個(gè)術(shù)語。rectangel:是對象;display ( ):是方法;rectangel.display ( ):是消息。第四十七張,PPT共五十六頁,創(chuàng)作于2022年6月習(xí)題2#include using namespace std;class Time public:int hour; int minute; int sec; ;Time
41、t;int main() t.set_time(); t.show_time();第四十八張,PPT共五十六頁,創(chuàng)作于2022年6月習(xí)題2#include using namespace std;class Time public: void set_time(void) cinhour; cinminute; cinsec; void show_time(void) couthour:minute:secendl; private: int hour; int minute; int sec; ;Time t;int main() t.set_time(); t.show_time(); retur
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 包頭職業(yè)技術(shù)學(xué)院《電影藝術(shù)解析視與聽》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢光谷職業(yè)學(xué)院《C#程序語言設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西工程職業(yè)學(xué)院《鋼結(jié)構(gòu)課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 滇西應(yīng)用技術(shù)大學(xué)《生物醫(yī)學(xué)光學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西安全工程職業(yè)技術(shù)學(xué)院《建筑物抗震設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南旅游職業(yè)學(xué)院《vc程序設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新生兒疾病篩查健康教育
- 江西理工大學(xué)《新聞節(jié)目播音主持》2023-2024學(xué)年第二學(xué)期期末試卷
- 吉林農(nóng)業(yè)科技學(xué)院《計(jì)算機(jī)組成原理與匯編語言程序設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東建設(shè)職業(yè)技術(shù)學(xué)院《網(wǎng)絡(luò)及其計(jì)算》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025至2030中國碳酸甘油酯市場應(yīng)用趨勢預(yù)測及投資競爭研究報(bào)告
- 2025至2030中國二亞砜(dmso)市場深度調(diào)研及投資建議研究報(bào)告
- 項(xiàng)目執(zhí)行合同書范本
- 2024-2025學(xué)年陜西省西安交大附中八年級(下)期中數(shù)學(xué)試卷(含詳解)
- 浙江省寧波市三鋒教研聯(lián)盟2024-2025學(xué)年高一下學(xué)期4月期中化學(xué)試卷(含答案)
- GINA+2024哮喘防治指南修訂解讀
- 校醫(yī)招聘筆試試題及答案
- 奧特曼過關(guān)測試題及答案
- 2025年廣州體育職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫及答案1套
- 蘇教版五年級數(shù)學(xué)下冊典型例題第五單元分?jǐn)?shù)的加法和減法·單元復(fù)習(xí)篇(原卷版+解析)
- DBJ-T13-483-2025 預(yù)拌流態(tài)固化土技術(shù)標(biāo)準(zhǔn)
評論
0/150
提交評論