结构与C程式设计进阶.ppt

上传人(卖家):三亚风情 文档编号:3397617 上传时间:2022-08-27 格式:PPT 页数:19 大小:906.50KB
下载 相关 举报
结构与C程式设计进阶.ppt_第1页
第1页 / 共19页
结构与C程式设计进阶.ppt_第2页
第2页 / 共19页
结构与C程式设计进阶.ppt_第3页
第3页 / 共19页
结构与C程式设计进阶.ppt_第4页
第4页 / 共19页
结构与C程式设计进阶.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、講師:林業峻CSIE,NTU7/5,2010C+與資料結構1資料結構與C+程式設計進階大綱使用類別(Class)建立資料結構使用繼承(Inheritance)建立資料結構 2類別(Class)類別class是C+中用來封裝資料的關鍵字,當您使用類別來定義一個物件(Object)時,您考慮這個物件可能擁有的屬性(Property)與方法(Method)成員n屬性是物件的靜態描述n方法是可施加於物件上的動態操作您使用類別定義出這個物件的規格書,之後就可依這個規格書製作出一個個的物件實例,並在製作過程中設定個別物件的專屬特性資料。要訣:n屬性(該類別的變數)要存放的資料(每個物件有自己的屬性)n方法

2、(該類別的函式)寫要執行的程式(用方法控制屬性)3如何設計類別?思考(以功能角度)n每個物件需要什麼資料?宣告屬性n每個物件需要什麼方法來操作資料?設計方法進階思考(以使用者角度)n如何讓使用類別宣告物件的人方便簡單使用。n如何避免使用類別宣告物件的人因用到不該用的資料而產生錯誤。4類別(Class)宣告一個類別(類似定義一個結構struct)語法:nclass 類別名稱public:類別名稱();/建構式,用來做物件的初始化類別名稱();/解構式,用來做物件的善後工作公開的方法或屬性;protected:/只有在同一繼承架構中可以使用的資料受保護的方法或屬性;private:/只有在此類別中

3、可以使用的資料私有的方法或屬性;5資料的權限三種資料的權限設定npublic:公開成員表示以下所定義的成員可以使用物件名稱直接被呼叫,稱之為nprotected:受保護成員表示以下所定義的成員只可在同一繼承架構下之類別中可以使用。nprivate:私有成員表示以下所定義的成員只可在自己的類別中可以使用。在類別封裝時,有一個基本原則是:資訊的最小化公開。如果屬性可以不公開就不公開。如果要取得或設定物件的某些屬性,也是儘量透過公開方法成員來進行。6建構式與解構式建構式(Constructor)n在定義類別時,您可以使用建構函式來進行物件的初始化。解構式(Destructor)n在物件釋放資源之前,

4、您也可以使用解構函式來進行一些善後的工作。7類別的方法之描述實作一個類別方法的內容(類似寫一個函式)除了寫在類別定義中,也可拿到類別定義以外的地方描述語法:n資料型態 類別名稱:方法名稱(參數1,參數2,參數n)程式碼;8物件的產生與使用使用類別定義物件(類似定義一個變數)語法:n類別名稱 物件名稱;n類別名稱 物件名稱(參數1,參數2,參數n);物件可透過.來使用或存取該方法或屬性(類似C語言的結構struct)若為物件指標,可透過-來使用或存取該方法或屬性 9範例:製作一個2D座標類別 10class Point2D public:Point2D();/建構式Point2D(int x,i

5、nt y);/可傳入初始值的建構式void set(int x,int y);/設定點座標void print();/印出點座標protected:int X;/X座標int Y;/Y座標;製作以下程式範例:Point2D.h:定義類別Point2D.cpp:設計類別的方法main.cpp:主程式 Point2D.h範例:製作一個2D座標類別 11#include using namespace std;#include Point2D.hPoint2D:Point2D()X=0;Y=0;Point2D:Point2D(int x,int y)X=x;Y=y;void Point2D:set(

6、int x,int y)X=x;Y=y;void Point2D:print()cout (X ,Y )endl;Point2D.cpp main.cpp#include using namespace std;#include Point2D.hint main()Point2D p1;Point2D p2(5,10);p1.set(20,30);p1.print();p2.print();return 0;範例:C+鏈結串列將第二章之鏈結串列範例改用C+之類別實作(LinkedList.h,LinkedList.cpp,LinkedList_main.cpp)12datanextnode

7、10 node*intnode*head node 20node 30NULLNULLclass LinkedList練習:C+樹狀結構將第六章之二元搜尋樹範例改用C+之類別實作(BinarySearchTree.h,BinarySearchTree.cpp,BinarySearchTree_main.cpp)13class BinarySearchTree546NULLNULLNULLNULLNULLNULLNULLNULLroot node leftdataright大綱使用類別(Class)建立資料結構使用繼承(Inheritance)建立資料結構 14繼承(Inheritance)繼承

8、(Inheritance)是物件導向程式設計的一種進階觀念,繼承就是物件的再利用,當定義好一個類別後,其他類別可以繼承這個類別的成員資料和函數。語法:class 子類別名稱:繼承權限 父類別名稱 ;在繼承的關係中n被繼承的類別:父類別(Parent class)或基礎類別(Base class),n繼承父類別的類別:子類別(Child class)或衍生類別(Derived class)15範例:製作一個3D座標類別 16#include Point2D.hclass Point3D:public Point2D public:Point3D();/建構式Point3D(int x,int y

9、,int z);/可傳入初始值的建構式void set(int x,int y,int z);/設定點座標void print();/印出點座標private:int Z;/Z座標;製作以下程式範例:Point2D.h:定義2D類別(使用之前的Point2D範例)Point2D.cpp:設計2D類別的方法(使用之前的Point2D範例)Point3D.h:定義3D類別Point3D.cpp:設計3D類別的方法main.cpp:主程式 Point3D.h範例:製作一個3D座標類別 17#include using namespace std;#include Point3D.hPoint3D:P

10、oint3D()Z=0;Point3D:Point3D(int x,int y,int z):Point2D(x,y)Z=z;void Point3D:set(int x,int y,int z)Point2D:set(x,y);Z=z;void Point3D:print()cout (X ,Y ,Z )endl;Point3D.cpp main.cpp#include using namespace std;#include Point3D.hint main()Point3D p1;Point3D p2(5,10,20);p1.set(20,30,40);p1.print();p2.pr

11、int();return 0;範例:C+堆疊使用C+鏈結串列以繼承方式實作堆疊(Stack.h,Stack.cpp,Stack_main.cpp)18datanextnode 10 node*intnode*head node 20node 30NULLNULLclass LinkedListclass Stack練習:C+佇列使用C+鏈結串列以繼承方式實作佇列(Queue.h,Queue.cpp,Queue_main.cpp)19datanextnode 10 node*intnode*head rearnode 20node 30NULLNULLnode*class LinkedListclass Queue

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(结构与C程式设计进阶.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|