freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計(jì)算機(jī)]c課件第八講v(已修改)

2024-10-31 03:41 本頁面
 

【正文】 主講人: XXX 電子郵件: 聯(lián)系電話: 第八章 繼承與多態(tài) Page 2 計(jì)算機(jī)基礎(chǔ)教研室 本章主要內(nèi)容 繼承與派生的概念 虛基類 (選讀) 多重繼承與派生類成員標(biāo)識(shí) (選讀 ) 8. 6 多態(tài)性與虛函數(shù) 派生類應(yīng)用討論 派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù) Page 3 計(jì)算機(jī)基礎(chǔ)教研室 繼承 (inheritance): 該機(jī)制是面向?qū)ο蟪绦蛟O(shè)計(jì)使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類特性的基礎(chǔ)上進(jìn)行擴(kuò)展,增加功能。 這樣產(chǎn)生新的類,稱派生類。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層次結(jié)構(gòu)。 體現(xiàn)了由簡單到復(fù)雜的認(rèn)識(shí)過程 。 多態(tài)性 (polymorphism): 多態(tài)性包括靜態(tài)的多態(tài)性和動(dòng)態(tài)的多態(tài)性。前者亦稱編譯時(shí)的多態(tài)性,包括函數(shù)的重載和運(yùn)算符的重載。后者亦稱運(yùn)行時(shí)的多態(tài)性,這是以虛函數(shù)為基礎(chǔ)的,是面向?qū)ο蟪绦蛟O(shè)計(jì)的標(biāo)志性特征。 體現(xiàn)了類推和比喻的思想方法。 繼承與多態(tài) Page 4 計(jì)算機(jī)基礎(chǔ)教研室 層次概念 是計(jì)算機(jī)的重要概念。通過 繼承 ( inheritance)的機(jī)制可對類( class)分層,提供類型 /子類型的關(guān)系。 C++通過 類派生 ( class derivation)的機(jī)制來支持繼承。被繼承的類稱為 基類 ( base class)或 超類 ( superclass),新的類為 派生類 ( derived class)或 子類 ( subclass)。 基類和派生類的集合稱作 類繼承層次結(jié)構(gòu) ( hierarchy)。 如果基類和派生類共享相同的公有接口,則派生類被稱作基類的子類型( subtype)。 層次概念: 派生反映了事物之間的聯(lián)系,事物的共性與個(gè)性之間的關(guān)系。 派生與獨(dú)立設(shè)計(jì)若干相關(guān)的類,前者工作量少,重復(fù)的部分可以從基類繼承來,不需要單獨(dú) 編程 。 繼承與派生的概念 Page 5 計(jì)算機(jī)基礎(chǔ)教研室 類的派生與繼承 公有派生與私有派生 繼承與派生的概念 Page 6 計(jì)算機(jī)基礎(chǔ)教研室 派生類的定義: class 派生類名:訪問限定符 基類名 1,訪問限定符 基類名 2, …… ,訪問限定符 基類名 n { private: 成員表 1; //派生類增加或替代的私有成員 public: 成員表 2; //派生類增加或替代的公有成員 protected: 成員表 3; //派生類增加或替代的保護(hù)成員 }; //分號(hào)不可少 其中基類 1,基類 2, …… 是已聲明的類。 在派生類定義的類體中給出的成員稱為 派生類成員 ,它們是新增加成員,它們給派生類添加了不同于基類的新的屬性和功能。派生類成員也包括取代基類成員的更新成員。 類的派生與繼承 Page 7 計(jì)算機(jī)基礎(chǔ)教研室 訪問限定符兩方面含義: 派生類成員(新增成員)函數(shù)對基類(繼承來的)成員的訪問(調(diào)用和操作) ,和 從派生類對象之外對派生類對象中的基類成員的訪問 。放在后面討論。 公有派生限制最少,是派生的主流。 訪問限定符: 基類名前的訪問限定符,是對基類成員進(jìn)一步的限制。訪問控制也是三種: 公有( public)方式,亦稱公有繼承 保護(hù)( protected)方式,亦稱保護(hù)繼承 私有( private)方式, 亦稱私有繼承。 類的派生與繼承 Page 8 計(jì)算機(jī)基礎(chǔ)教研室 多重繼承: 如果一個(gè)派生類可以同時(shí)有多個(gè)基類,稱為多重繼承( multipleinheritance),這時(shí)的派生類同時(shí)得到了多個(gè)已有類的特征。 單繼承: 派生類只有一個(gè)直接基類的情況稱為單繼承( singleinheritance)。 類的派生與繼承 Page 9 計(jì)算機(jī)基礎(chǔ)教研室 基類 1 基類 2 …… 基類 n 派生類 1 派生類 2 基類 派生類 1 派生類 2 ( a)多重繼承 ( b)單繼承 一個(gè)基類可以直接派生出多個(gè)派生類 派生類可以由多個(gè)基類共同派生出來,稱多重繼承。 類的派生與繼承 Page 10 計(jì)算機(jī)基礎(chǔ)教研室 在派生過程中,派生出來的新類同樣可以作為基類再繼續(xù)派生出更新的類,依此類推形成一個(gè)層次結(jié)構(gòu)。直接參與派生出某類稱為直接基類,而基類的基類,以及更深層的基類稱為 間接基類 。 類族: 同時(shí)一個(gè)基類可以直接派生出多個(gè)派生類。這樣形成了一個(gè)相互關(guān)聯(lián)的類族。如 MFC就是這樣的族類,它由一個(gè) CObject類派生出 200個(gè) MFC類中的絕大多數(shù)。 多層次繼承: 類的派生與繼承 Page 11 計(jì)算機(jī)基礎(chǔ)教研室 編制派生類時(shí)可分四步 吸收基類的成員 改造基類成員 發(fā)展新成員 重寫構(gòu)造函數(shù)與析構(gòu)函數(shù) 不論是數(shù)據(jù)成員,還是函數(shù)成員,除構(gòu)造函數(shù)與析構(gòu)函數(shù)外全盤接收 聲明一個(gè)和某基類成員同名的新成員 ,派生類中的新成員就屏蔽了基類同名成員 派生類新成員必須與基類成員不同名,它的加入保證派生類在功能上有所發(fā)展。 派生編程步驟: 類的派生與繼承 Page 12 計(jì)算機(jī)基礎(chǔ)教研室 第二步中, 新成員 如是成員函數(shù),參數(shù)表和返回值也完全一樣,稱為同名覆蓋 (Override),否則是重載 。 第三步中,獨(dú)有的新成員才是繼承與派生的核心特征。 第四步是重寫構(gòu)造函數(shù)與析構(gòu)函數(shù),派生類不繼承這兩種函數(shù)。不管原來的函數(shù)是否可用 一律重寫可免出錯(cuò) 。方式類似聚合 ——含成員對象的類的構(gòu)造函數(shù) 。詳細(xì)內(nèi)容后文討論。 類的派生與繼承 Page 13 計(jì)算機(jī)基礎(chǔ)教研室 【 例 】 由在冊人員類公有派生學(xué)生類。我們希望基類和派生類共享相同的公有接口 ,只能采用公有派生來實(shí)現(xiàn)。 基類: class Person{ string IdPerson。 //身份證號(hào) ,18位數(shù)字 string Name。 //姓名 Tsex Sex。 //性別 enum Tsex{mid,man,woman}。 int Birthday。 //生日 ,格式 1986年 8月 18日寫作 19860818 string HomeAddress。 //家庭地址 public: Person(string, string,Tsex,int, string)。//構(gòu)造函數(shù) Person()。 //默認(rèn)的構(gòu)造函數(shù) ~Person()。 //析構(gòu)函數(shù) 【 例 】 由在冊人員類公有派生學(xué)生類 Page 14 計(jì)算機(jī)基礎(chǔ)教研室 void SetName(string)。 //修改名字 string GetName(){return Name。} //提取名字 void SetSex(Tsex sex){Sex=sex。} //修改性別 Tsex GetSex(){return Sex。} //提取性別 void SetId(string id){IdPerson=id。}//修改身份證號(hào) string GetId(){return IdPerson。} //提取身份證號(hào) void SetBirth(int birthday){Birthday=birthday。} //修改生日 int GetBirth(){return Birthday。} //提取生日 void SetHomeAdd(string )。 //修改住址 string GetHomeAdd(){return HomeAddress。} //提取住址 void PrintPersonInfo()。 //輸出個(gè)人信息 }。 //接口函數(shù): 【 例 】 由在冊人員類公有派生學(xué)生類 Page 15 計(jì)算機(jī)基礎(chǔ)教研室 派生的學(xué)生類 : class Student:public Person{ //定義派生的學(xué)生類 string NoStudent。 //學(xué)號(hào) course cs[30]。 //30門課程與成績 public: Student(string id, string name,Tsex sex,int birthday, string homeadd, string nostud)。 //注意 派生類構(gòu)造函數(shù) 聲明方式 Student()。 //默認(rèn)派生類構(gòu)造函數(shù) ~Student()。 //派生類析構(gòu)函數(shù) SetCourse(string ,int)。 //課程設(shè)置 int GetCourse(string )。 //查找成績 void PrintStudentInfo()。 //打印學(xué)生情況 }。 struct course{ string coursename。 int grade。}。 【 例 】 由在冊人員類公有派生學(xué)生類 Page 16 計(jì)算機(jī)基礎(chǔ)教研室 int main(void){ char temp[30]。 int i,k。 Person per1(320212820818161,沈俊 , man,19820818,南京四牌樓 2號(hào) )。 Person per2。 (朱明 )。 (woman)。 (19780528)。 (320212780528162)。 (南京市成賢街 9號(hào) )。 ()。 ()。 Student stu1(320212811226161,朱海鵬 , man,19811226,南京市黃浦路 1號(hào) ,06000123)。 cout請輸入各科成績 :39。\n39。 //完整的程序應(yīng)輸入學(xué)號(hào) ,查找 ,再操作 【 例 】 由在冊人員類公有派生學(xué)生類 Page 17 計(jì)算機(jī)基礎(chǔ)教研室 while(1){ //輸入各科成績 ,輸入 end停止 cintemp。 //輸入格式 :物理 80 if(!strcmp(temp,end)) break。 cink。 i=(temp,k)。 if(i==0) cout成績列表已滿 !39。\n39。 else if(i==1) cout修改成績 39。\n39。 else cout登記成績 39。\n39。 } ()。 while(1){ cout查詢成績 39。\n39。請輸入科目 :39。\n39。 cintemp。 if(!strcmp(temp,end)) break。 k=(temp)。 if(k==1) cout未查到 39。\n39。 else coutk39。\n39。 } return 0。} Page 18 計(jì)算機(jī)基礎(chǔ)教研室 注意: 本例中標(biāo)準(zhǔn) C++字符串 string是作為成員對象使用的( 聚合 ),動(dòng)態(tài)內(nèi)存分配的構(gòu)造和析構(gòu)被封裝起來,使用十分簡單。如使用動(dòng)態(tài)生成的 C風(fēng)格字符串,要考慮深復(fù)制,那要復(fù)雜得多。 提倡完善的類對象封裝,不僅封裝數(shù)據(jù)和對數(shù)據(jù)的操作,而且封裝資源的動(dòng)態(tài)分配與釋放,形成一個(gè)完備的子系統(tǒng)。在一個(gè)有層次結(jié)構(gòu)的類體系中資源的動(dòng)態(tài)分配與釋放應(yīng)封裝在成員對象中 ,如同使用標(biāo)準(zhǔn)的 string字符串類那樣。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1