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

Download Report

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

類別與物件
Class & Object
物件導向程式設計OOP
物件導向:
封裝Encapsulation
繼承Inheritance
多形性Polymorphism
類別與物件
類別是抽象的藍圖
物件事具體的東西
物件是類別變數
物件是類別的實現
物件是類別的樣例 ….
類別 Class
藍圖
抽象的
定義屬性(資料)與行為(函式)
告訴程式一個物件到底長成怎樣
語法:
class 類別名稱
{
範圍:
範圍:
Private  僅在類別內存取
資料宣告;
Public  公開
範圍:
Protected  內部及衍生類別存取
函式宣告;
};
宣告在表單的標頭
類別 Class
class pass
{
public: //共用
int a;
String b;
void work()
{
b=“不及格”;
if (a>=60)
b=“及格”;
}
};
類別的實現(樣例化)
宣告別變數  物件
Pass pa;
類別資料與函式的存取
物件.變數; pa.a;
物件.函式; pa.work();
範例9-2a, p.9-8
類別-範疇運算子::
•將類別內的函式外移時使用
•原類別內保留函式宣告
•函式內容外移,並加上範疇運算子::
class pass
{
public: //共用
int a;
String b;
void work();
};
void pass::work()
{
b=“不及格”;
if (a>=60)
b=“及格”;
}
類別-建構子&解構子
• 建構子:
1. 物件建立時自動執行的函式
2. 函式名稱需要與類別相同,不可傳回值
3. 建構子多載兩個以上建構子
class pass
• 解構子:
{
1. 刪除物件所占用的記憶體
public: //共用
2. ~
int a;
String b;
pass()
{
a=99;
}
void work();
};
物件陣列
 一個類別可以產生多個物
件
 彼此獨立
 將類別產生的物件採用陣
列方式來加以存取
ex 9-2f, p.9-17
類別 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="及格";
}
};
類別 Class - 資料封裝
pass pa;
pa.seta(StrToInt(Edit1->Text));
pa.work();
Label1->Caption=pa.getb();
靜態資料
 一個類別產生的物件彼此獨立
 變數與函式獨立(跟著物件走)
 靜態資料  跟著類別走  物
件共用
 在類別宣告時加上static保留字
 需要在類別外再宣告
型態 類別名稱:: 變數名稱;
ex 9-2gh, p.9-20
繼承 Inheritance
 在舊有的類別上新增類別
 舊有類別的資料與函式可被繼承
(private類除外)
class 類別名稱 : 繼承方式 舊類別名稱
{
};
繼承方式:
1. Public:舊類別維持原狀
2. Private :舊類別public與protected轉為private
3. Protected:舊類別public與protected轉為
protected
繼承 Inheritance
 函式改寫(Override):名稱與舊類別相同,
但功能有修改
 舊類別的函式仍可以被存取
物件.舊類別名稱::函式名稱
Ex 9-3abc, p.9-26
繼承-抽象類別
 將類別中的函式以virtual方式宣告類別自
動變成抽象類別
virtual void work()=0;
 無法實作物件
 需要到繼承類別才可以實作物件
Ex 9-3e, p.9-36
繼承-多重繼承
 一次繼承多個來源類別
 與單一繼承相同,繼承原類別所有非private
的資料與函式
Class 類別名稱:繼承方式 舊類別1, 繼承方式
舊類別2, …
{
};
Ex 9-4a, p.9-40