




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第21 面向?qū)ο蟪绦蛟O(shè)計(jì)第1頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2.1 面向?qū)ο蟪绦蛟O(shè)計(jì)思想面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)1抽象性用C+語言可以將該圖形描述如下:圓形(circle):數(shù)據(jù)抽象:double x,y,r;行為抽象:setx();sety();setr();draw();第2頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五抽象是面向?qū)ο蠓椒ǖ暮诵摹?封裝性3繼承性 4多態(tài)性多態(tài)性也是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要特性之一。 第3頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五1.抽象 抽象是指從具體的實(shí)例中抽取出來共同的性質(zhì)并加以描述的過程,它忽略了一個(gè)
2、主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。 第4頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五抽象過程:先注意問題的本質(zhì)及描述,其次是實(shí)現(xiàn)過程或細(xì)節(jié)。數(shù)據(jù)抽象:描述某類對(duì)象的屬性或狀態(tài)(對(duì)象相互 區(qū)別的物理量)。代碼抽象:描述某類對(duì)象的共有的行為特征或具有 的功能。抽象的實(shí)現(xiàn):通過類的聲明第5頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五抽象實(shí)例鐘表數(shù)據(jù)抽象: int Hour , int Minute , int Second 代碼抽象: SetTime() , ShowTime() 第6頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,
3、星期五抽象實(shí)例鐘表類 class Clock public : void SetTime (int NewH, int NewM, int NewS); void ShowTime (); private : int Hour,Minute,Second; ; 第7頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2 封裝 封裝指的是將方法和數(shù)據(jù)放于同一對(duì)象中,使得對(duì)數(shù)據(jù)的存取只能通過該對(duì)象本身的方法來進(jìn)行。 主要思想是將數(shù)據(jù)(數(shù)據(jù)成員)及處理這些數(shù)據(jù)的相應(yīng)函數(shù)(成員函數(shù))封裝到類class中(C+的一種新的定義數(shù)據(jù)類型的方法),而使用類的變量則稱為對(duì)象(object),在對(duì)象內(nèi),只有
4、屬于該對(duì)象的成員函數(shù)才可以存取該對(duì)象的數(shù)據(jù)成員。這樣,其他函數(shù)就不會(huì)破壞到它的內(nèi)容,從而起到保護(hù)和隱藏?cái)?shù)據(jù)的效果。第8頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五 將抽象出的數(shù)據(jù)成員、代碼成員相結(jié)合,將它們視為一個(gè)整體。 目的是增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只需要通過外部接口,以特定的訪問權(quán)限,來使用類的成員。 實(shí)現(xiàn)封裝:類聲明中的 第9頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五實(shí)例第10頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五3繼承 繼承是一種聯(lián)結(jié)類與類之間的層次模型,它允許和鼓勵(lì)類的重用,提供了一種明確表達(dá)共性的方法。
5、一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過程稱為類繼承 繼承性很好地解決了軟件的可重用問題 實(shí)現(xiàn):聲明派生類 第11頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五4多態(tài)多態(tài)性指的是同一消息被不同的對(duì)象接收后被解釋為不同含義的能力,也就是一個(gè)接口名稱具有多種功能。即同一名稱,不同的功能實(shí)現(xiàn)方式。多態(tài)性語言具有語言靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名的問題。目的:達(dá)到行為標(biāo)識(shí)統(tǒng)一,減少程序中標(biāo)識(shí)符的個(gè)數(shù)。實(shí)現(xiàn):重載函數(shù)和虛函數(shù) 第12頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2.2面向?qū)ο蟮幕?.2.1 從結(jié)構(gòu)到類2.2.2 類的定義 2.2
6、.3 構(gòu)造函數(shù) 2.2.4 析構(gòu)函數(shù) 第13頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2.2.1從結(jié)構(gòu)到類 1結(jié)構(gòu)體 VC不僅提供了大量預(yù)先定義的數(shù)據(jù)類型,而且還支持自定義的數(shù)據(jù)類型。 結(jié)構(gòu)就是把相互關(guān)聯(lián)的一些基本數(shù)據(jù)類型的元素組成一個(gè)新的獨(dú)立統(tǒng)一體。 第14頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五【例2-1】 定義一個(gè)職工Employee結(jié)構(gòu)數(shù)據(jù)類型,它包括姓名、工資、地址、移動(dòng)電話。struct Employeechar name9;float salary;char address40;char mobile12; ;定義一個(gè)結(jié)構(gòu)體,事實(shí)上是定義了一種數(shù)
7、據(jù)類型,程序并不會(huì)給類型分配內(nèi)存,內(nèi)存分配是發(fā)生在結(jié)構(gòu)體變量上第15頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五#include iostream.h#include string.hvoid main()struct Employee EmployeeA;strcpy(EmployeeA.name,滅絕師太);EmployeeA.salary=168.47;strcpy(EmployeeA.address,峨眉山上);cout EmployeeA.name已經(jīng)領(lǐng)上工資了,其數(shù)目是 EmployeeA.salaryendl;cout要想拜謁她,請(qǐng)到 EmployeeA.addre
8、ss或直接傳呼 EmployeeA.mobileendl;【例2-2】 定義一個(gè)具體職工EmployeeA,并對(duì)該職工進(jìn)行賦值。程序的主文件名為DefStru.cpp。第16頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五程序的運(yùn)行結(jié)果是:滅絕師太已經(jīng)領(lǐng)上工資了,其數(shù)目是168.47要想拜謁她,請(qǐng)到峨眉山上或直接傳呼 第17頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2類類是從一個(gè)個(gè)具體的事物中把共同特征抽取出來形成的一個(gè)概念,它反映了事物之間的共性 在C+中,在類的定義中,不僅有反映事物屬性的成員變量,還有反映屬性操作的成員函數(shù)。類一種自定義數(shù)據(jù)類型 。第18頁(yè),共3
9、7頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2.2.2類的定義 在C+中類的定義方式為:class 類名private: 私有數(shù)據(jù)及成員函數(shù);protected: 保護(hù)數(shù)據(jù)及成員函數(shù);public: 公有數(shù)據(jù)及成員函數(shù);;第19頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五class是類定義符,類名是一種標(biāo)識(shí)符,它的命名規(guī)則與變量名的命名規(guī)則相同。一對(duì)花括號(hào)內(nèi)是類的說明部分,說明該類的成員。類的成員包括成員變量和成員函數(shù)兩部分。上述在類的成員變量和成員函數(shù)前面出現(xiàn)的關(guān)鍵字public(公有)、private(私有)或protected(保護(hù))表示成員的訪問屬性。在類中聲明的成
10、員變量若不特別指明,都被視為私有類型。私有類型的數(shù)據(jù)只允許類本身聲明的函數(shù)對(duì)其進(jìn)行存取,而類外部的任何函數(shù)都不能訪問。公有類型的成員可以被任何函數(shù)來訪問,它們是類與外部的接口。 第20頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五類的定義反映了對(duì)類的描述,定義一個(gè)類就是定義一種數(shù)據(jù)類型,把握類的定義首先要掌握類中包含反映事物屬性的那些成員變量和反映事物操作的那些成員函數(shù)。 【例2-3】 定義一個(gè)職工TEmployee類,它包括姓名、工資、地址、移動(dòng)電話數(shù)據(jù)成員和兩個(gè)成員函數(shù),分別實(shí)現(xiàn)輸入職工數(shù)據(jù)和顯示職工屬性。 第21頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五cla
11、ss TEmployeepublic:void input(char *name,float salary,char *address,char *mobile); void display();private:char m_name9;float m_salary;char m_address40;char m_mobile12; ;第22頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五【例2-4】 定義一個(gè)交通工具類TVehicle,它具有輪子個(gè)數(shù)、載重兩個(gè)數(shù)據(jù)成員和三個(gè)成員函數(shù),分別實(shí)現(xiàn)輸入交通工具的輪子和載重、取輪子個(gè)數(shù)和載重。 class TVehiclepublic :v
12、oid Initialize(int wheels,float weight);/交通工具的初始化int GetWheels(void);/取輪子個(gè)數(shù)float GetWeight(void);/取載重private:int m_wheels; /輪子個(gè)數(shù)float m_weight;/ 載重;第23頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2.2.3構(gòu)造函數(shù) 構(gòu)造函數(shù)的作用是在對(duì)象被創(chuàng)建時(shí)使用特定的 值構(gòu)造對(duì)象,或者說將對(duì)象 初始化 為一個(gè)特定的狀態(tài)。 在對(duì)象創(chuàng)建時(shí) 由系統(tǒng)自動(dòng)調(diào)用。 如果程序中未聲明,則系統(tǒng)自動(dòng)產(chǎn)生出一個(gè) 默認(rèn)形式 的構(gòu)造函數(shù)。 允許為 內(nèi)聯(lián) 函數(shù)、 重載
13、函數(shù)、 帶默認(rèn)形參值 的函數(shù)。 第24頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五構(gòu)造函數(shù)舉例 class Clock public: Clock (int NewH, int NewM, int NewS);/ 構(gòu)造函數(shù) void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second; ; 第25頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五構(gòu)造函數(shù)舉例構(gòu)造函數(shù)的實(shí)現(xiàn): Clock:Clock(int NewH, int NewM, int Ne
14、wS) Hour= NewH; Minute= NewM; Second= NewS; 建立對(duì)象時(shí)構(gòu)造函數(shù)的作用: int main() Clock c (0,0,0); / 隱含調(diào)用構(gòu)造函數(shù),將初始值作為實(shí)參。 c.ShowTime(); 第26頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五拷貝構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),其形參為本類 的對(duì)象引用。class 類名 public : 類名(形參); / 構(gòu)造函數(shù) 類名(類名 & 對(duì)象名); / 拷貝構(gòu)造函數(shù) . ; 類名 : 類名(類名 & 對(duì)象名) / 拷貝構(gòu)造函數(shù)的實(shí)現(xiàn) 函數(shù)體 第27頁(yè),共37頁(yè),2022年,5
15、月20日,19點(diǎn)17分,星期五2.2.3析構(gòu)函數(shù) 完成對(duì)象被刪除前的一些清理工作。 在對(duì)象的生存期結(jié)束的時(shí)刻系統(tǒng)自動(dòng)調(diào)用它,然后再釋放此對(duì)象所屬的空間。 如果程序中未聲明析構(gòu)函數(shù),編譯器將自動(dòng)產(chǎn)生一個(gè)默認(rèn)的析構(gòu)函數(shù)。 第28頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五【例2-5】一個(gè)包含構(gòu)造函數(shù)和析構(gòu)函數(shù)的例子。程序的主文件為 ConstructorExam.cpp。 #include #include class Exlprivate:int x;public:Exl() coutEx1 類的對(duì)象建立,其構(gòu)造函數(shù)被調(diào)用n; Exl() coutEx1類的對(duì)象撤消,其析構(gòu)函數(shù)被調(diào)
16、用n; void setdata(int i) x=i*2; /在類中定義成員函數(shù)setdata()void print();/類Exl定義結(jié)束第29頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五class Ex2int y;public:Ex2() coutEx2 類的對(duì)象建立,其構(gòu)造函數(shù)被調(diào)用n; Ex2() coutEx2類的對(duì)象撤消,其析構(gòu)函數(shù)被調(diào)用n; void setdata(int j) y=j*j;void print();/類Ex2定義結(jié)束void Ex2:print()coutclass Ex2: setw(6)y n;/成員函數(shù)print()定義結(jié)束第30頁(yè),
17、共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五void main( )Exl s;Ex2 t;s.setdata(5);s.print( );t.setdata(5);t.print( );程序運(yùn)行結(jié)果為:Ex1 類的對(duì)象建立,其構(gòu)造函數(shù)被調(diào)用Ex2 類的對(duì)象建立,其構(gòu)造函數(shù)被調(diào)用class Exl: 10class Ex2: 25Ex2類的對(duì)象撤消,其析構(gòu)函數(shù)被調(diào)用Ex1類的對(duì)象撤消,其析構(gòu)函數(shù)被調(diào)用第31頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2.3 對(duì)象 2.3.1 對(duì)象的聲明 2.3.2 對(duì)象的使用 3.ppt第32頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)
18、17分,星期五2.3.1對(duì)象的聲明 int i;/聲明一個(gè)整型對(duì)象i,該對(duì)象占有32個(gè)字節(jié)的空間 char ch;/聲明一個(gè)字符對(duì)象ch,該對(duì)象占有1個(gè)字節(jié)的空間 CTime MyTime;/聲明一個(gè)日期時(shí)間對(duì)象MyTimeCPoint MyPoint;/聲明個(gè)點(diǎn)對(duì)象MyPointCRect MyRect;/聲明一個(gè)矩形對(duì)象MyRecct 其中CTime、CPoint、CRect是VC中MFC類庫(kù)中的一些通用類,這些類在實(shí)際設(shè)計(jì)程序時(shí)有著很重要的作用。 第33頁(yè),共37頁(yè),2022年,5月20日,19點(diǎn)17分,星期五2.3.2對(duì)象的使用當(dāng)聲明了對(duì)象后,就可以使用該對(duì)象所隸屬的類的公有(在public部分定義的)成員變量和成員函數(shù)。 對(duì)象的使用,關(guān)鍵是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)紡織漿紗乳蠟數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 二零二五年度木質(zhì)家具配套木門采購(gòu)協(xié)議
- 2025年度餐飲公司員工勞動(dòng)合同與員工績(jī)效獎(jiǎng)金分配協(xié)議
- 2025年度虛擬現(xiàn)實(shí)產(chǎn)業(yè)干股合作協(xié)議
- 電梯聯(lián)營(yíng)合同范本
- 2025年度餐飲兼職工作合同細(xì)則
- 二零二五年度簽約主播與體育賽事直播合作推廣合同
- 二零二五年度員工股份激勵(lì)與公司戰(zhàn)略合作伙伴協(xié)議
- 二零二五年度宿舍管理免責(zé)條款合同
- 碼頭施工合同范本
- 部隊(duì)安全教育教案大全
- 交易商協(xié)會(huì)非金融企業(yè)債務(wù)融資工具發(fā)行注冊(cè)工作介紹
- 《人與環(huán)境》課程教學(xué)大綱
- 班組長(zhǎng)管理能力提升培訓(xùn)(PPT96張)課件
- 深圳市城市用地分類表
- 法蘭蝶閥螺栓配用表
- 垃圾中轉(zhuǎn)站施工方案及施工方法
- 內(nèi)蒙古自治區(qū)小額貸款公司試點(diǎn)管理實(shí)施細(xì)則
- 勞務(wù)分包入住生活區(qū)承諾書
- 直系親屬關(guān)系證明(存根)(共1頁(yè))
- 南充物業(yè)服務(wù)收費(fèi)管理實(shí)施細(xì)則
評(píng)論
0/150
提交評(píng)論