1 / 15

類別與物件 Class & Object

類別與物件 Class & Object. 物件導向程式設計 OOP. 物件導向: 封裝 Encapsulation 繼承 Inheritance 多形性 Polymorphism 類別與物件 類別是 抽象 的藍圖 物件事 具體 的東西 物件是 類別變數 物件是 類別的實現 物件是 類別的樣例 …. 類別 Class. 藍圖 抽象的 定義屬性 ( 資料 ) 與行為 ( 函式 ) 告訴程式一個物件到底長成怎樣 語法: c lass 類別名稱 { 範圍 : 資料宣告 ; 範圍 : 函式宣告 ; }; 宣告在表單的標頭. 範圍:

rosine
Download Presentation

類別與物件 Class & Object

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 類別與物件 Class & Object

  2. 物件導向程式設計OOP • 物件導向: 封裝Encapsulation 繼承Inheritance 多形性Polymorphism • 類別與物件 類別是抽象的藍圖 物件事具體的東西 物件是類別變數 物件是類別的實現 物件是類別的樣例….

  3. 類別 Class • 藍圖 • 抽象的 • 定義屬性(資料)與行為(函式) • 告訴程式一個物件到底長成怎樣 • 語法: class 類別名稱 { 範圍: 資料宣告; 範圍: 函式宣告; }; • 宣告在表單的標頭 範圍: Private  僅在類別內存取 Public  公開 Protected  內部及衍生類別存取

  4. 類別 Class class pass { public: //共用 int a; String b; void work() { b=“不及格”; if (a>=60) b=“及格”; } };

  5. 類別的實現(樣例化) • 宣告別變數  物件 Pass pa; • 類別資料與函式的存取 物件.變數; pa.a; 物件.函式; pa.work(); 範例9-2a, p.9-8

  6. 類別-範疇運算子:: • 將類別內的函式外移時使用 • 原類別內保留函式宣告 • 函式內容外移,並加上範疇運算子:: class pass { public: //共用 int a; String b; void work(); }; void pass::work() { b=“不及格”; if (a>=60) b=“及格”; }

  7. 類別-建構子&解構子 • 建構子: • 物件建立時自動執行的函式 • 函式名稱需要與類別相同,不可傳回值 • 建構子多載兩個以上建構子 • 解構子: • 刪除物件所占用的記憶體 • ~ class pass { public: //共用 int a; String b; pass() { a=99; } void work(); };

  8. 物件陣列 • 一個類別可以產生多個物件 • 彼此獨立 • 將類別產生的物件採用陣列方式來加以存取 ex 9-2f, p.9-17

  9. 類別 Class - 資料封裝 • class pass • { • private: //內部存取 • int a; • String b; • public: • void seta(int value) • { • a=value; • } int geta() { return a; } String getb() { return b; } void work() { b="不及格"; if (a>=60) b="及格"; } };

  10. 類別 Class - 資料封裝 • pass pa; • pa.seta(StrToInt(Edit1->Text)); • pa.work(); • Label1->Caption=pa.getb();

  11. 靜態資料 • 一個類別產生的物件彼此獨立 • 變數與函式獨立(跟著物件走) • 靜態資料  跟著類別走  物件共用 • 在類別宣告時加上static保留字 • 需要在類別外再宣告 型態 類別名稱:: 變數名稱; ex 9-2gh, p.9-20

  12. 繼承 Inheritance • 在舊有的類別上新增類別 • 舊有類別的資料與函式可被繼承(private類除外) class 類別名稱 : 繼承方式 舊類別名稱 { }; 繼承方式: • Public:舊類別維持原狀 • Private :舊類別public與protected轉為private • Protected:舊類別public與protected轉為protected

  13. 繼承 Inheritance • 函式改寫(Override):名稱與舊類別相同,但功能有修改 • 舊類別的函式仍可以被存取 物件.舊類別名稱::函式名稱 Ex 9-3abc, p.9-26

  14. 繼承-抽象類別 • 將類別中的函式以virtual方式宣告類別自動變成抽象類別 virtual void work()=0; • 無法實作物件 • 需要到繼承類別才可以實作物件 Ex 9-3e, p.9-36

  15. 繼承-多重繼承 • 一次繼承多個來源類別 • 與單一繼承相同,繼承原類別所有非private的資料與函式 Class 類別名稱:繼承方式 舊類別1, 繼承方式 舊類別2, … { }; Ex 9-4a, p.9-40

More Related