物件導向設計以類別為核心,無論一般的應用或是 ASP.NET 技術的相關 Web 應用,均是由類別組成,現在我們建立最簡單的主控台應用程式,直接來看實際的程式碼。
類別以 class 定義,以下是最簡單的主控台應用程式的程式碼:
這段列舉的程式碼是一個簡單但完整的應用程式,其中的 class Program 這一行程式碼,透過 class 關鍵字定義名稱為 Program的類別,以大括弧界定類別的內容範圍,這是最簡單的類別定義,也是這個應用程式的核心。
類別封裝完整的特定應用程式功能,相關功能的內容程式碼,都寫在大括弧界定的區塊中,例如其中的 Console.WriteLine("Hello OOP !") 這一行程式碼,建立輸出的功能,在程式執行時,會輸出 Hello OOP 這行字串 。
物件導向應用程式是由物件提供所需的功能,而物件由類別所定義,簡單的應用程式只需單一類別就夠了,例如這裏的 Program 類別,複雜的應用程式,則需要將功能進一步分拆至不同的類別,在應用程式執行的過程中,由類別產生物件執行其中的功能。
現在我們建立一個新的類別包裝這行功能程式碼,並且透過類別來輸出訊息:
原來在 Program 這個類別,輸出訊息的功能程式碼,被至另外一個新的類別 ActiveMsg 中,並且以函式 PrintMessage 封裝所需的程式碼,將參數當作訊息輸出。
現在於 Program 類別中的 Main 方法,以 new 關鍵字建立 ActiveMsg 的物件實體,參照儲存至變數 am ,接下來透過 am 引用 PrintMessage() ,並將要輸出的字串 Hello OOP傳入,完成輸出。
物件導向以 new 關鍵字連接類別名稱,表示要建立類別的物件實體,並將結果儲存至變數,後續就可以透過變數引用類別中定義的函式來執行所需的功能。
定義類別
定義 C# 類別最基本的語法形式如下:
class 為定義類別所需的關鍵字, class_name 為類別的識別名稱,大括弧內部定義類別未來將支援的功能程式碼,由成員所組成,包含欄位、屬性與函式,接下來我們擴充上述的 ActiveMsg 類別,說明一個典型的類別。
這個類別包含了三種主要類別成員,詳述如下:
欄位
欄位是類別中定義的各種資料變數,大括內的字串變數 helloMessage 即為類別欄位,用來儲存類別內部的資料,通常會宣告為 private ,避免外部的程式碼對其進行存取。
屬性
屬性提供外部程式碼存取類別欄位所需的功能,例如其中的 HelloMessage 。
屬性以 get 存取子支援外部的存取,當外部的程式碼引用 HelloMessage 時,存取子中的程式碼 以以 return 回傳 helloMessage 欄位值。另外透過 set 支援屬性的重設,其中透過設值,將 value 表示的值設定給屬性 helloMessage,這會覆蓋掉屬性原來的值。
你可以在屬性內容定義欄位值的存取邏輯程式碼,在 get 與 set 存取子的大括弧內部進一步撰寫存取屬性所需的邏輯程式碼,這裏為了簡化說明僅作單存的存取。
方法
類別的功能由函式定義,這些函式形成了類別的方法,ShowMessage() 函式定義輸出訊息的功能,在執行過程中轉換成物件的方法,其中引用屬性 HelloMessage 取得欄位資料,將其內容字串輸出。
現在我們有一個比較完整的類別結構,嘗試運用這個類別輸出指定的訊息文字。
透過 new 關鍵字建立物件,完成之後,接下來便可以直接引用類別所定義的屬性或方法等成員,這個過程必須透過點 . 運算子來執行,如其中引用 HelloMessage 屬性,將指定的訊息字串設定為欄位值,接下來直接引用 PrintMessage() 將 helloMessage 欄位輸出。
輸出值為一開始重設的屬性值「Hello Att !」。
類別與物件
當類別完成定義,此類別即成為一個新的型別,在程式中必須建立其實體物件,以期透過物件引用其中定義的各種成員,執行相關功能。建立實體物件必須使用 new 關鍵字,過程將會產生一個指向類別實體物件所在位置的參考,假設有一個類別 EFbook ,考慮以下的程式碼:
mybook為任意指定的變數名稱, new 關鍵字建立 EFbook 類別的實體物件,並回傳這個物件的參考,透過 = 運算子則將此物件參考儲存至 mybook 變數。
類別物件的宣告與建立必須引用 new 關鍵字完成物件的建立,而物件變數 – 如上述的 mybook ,其中儲存的只是物件本身在記憶體位置的參考值。
類別以 class 定義,以下是最簡單的主控台應用程式的程式碼:
using System;
namespace ClassDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello OOP !");
}
}
}
namespace ClassDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello OOP !");
}
}
}
這段列舉的程式碼是一個簡單但完整的應用程式,其中的 class Program 這一行程式碼,透過 class 關鍵字定義名稱為 Program的類別,以大括弧界定類別的內容範圍,這是最簡單的類別定義,也是這個應用程式的核心。
類別封裝完整的特定應用程式功能,相關功能的內容程式碼,都寫在大括弧界定的區塊中,例如其中的 Console.WriteLine("Hello OOP !") 這一行程式碼,建立輸出的功能,在程式執行時,會輸出 Hello OOP 這行字串 。
物件導向應用程式是由物件提供所需的功能,而物件由類別所定義,簡單的應用程式只需單一類別就夠了,例如這裏的 Program 類別,複雜的應用程式,則需要將功能進一步分拆至不同的類別,在應用程式執行的過程中,由類別產生物件執行其中的功能。
現在我們建立一個新的類別包裝這行功能程式碼,並且透過類別來輸出訊息:
namespace ClassDemo
{
class Program
{
static void Main(string[] args)
{
ActiveMsg am = new ActiveMsg();
am.PrintMessage("Hello OOP !");
Console.ReadKey();
}
}
class ActiveMsg
{
public void PrintMessage(string msg) {
Console.WriteLine(msg);
}
}
}
{
class Program
{
static void Main(string[] args)
{
ActiveMsg am = new ActiveMsg();
am.PrintMessage("Hello OOP !");
Console.ReadKey();
}
}
class ActiveMsg
{
public void PrintMessage(string msg) {
Console.WriteLine(msg);
}
}
}
原來在 Program 這個類別,輸出訊息的功能程式碼,被至另外一個新的類別 ActiveMsg 中,並且以函式 PrintMessage 封裝所需的程式碼,將參數當作訊息輸出。
現在於 Program 類別中的 Main 方法,以 new 關鍵字建立 ActiveMsg 的物件實體,參照儲存至變數 am ,接下來透過 am 引用 PrintMessage() ,並將要輸出的字串 Hello OOP傳入,完成輸出。
物件導向以 new 關鍵字連接類別名稱,表示要建立類別的物件實體,並將結果儲存至變數,後續就可以透過變數引用類別中定義的函式來執行所需的功能。
定義類別
定義 C# 類別最基本的語法形式如下:
class class_name
{
// 類別程式區塊內容 …
}
{
// 類別程式區塊內容 …
}
class 為定義類別所需的關鍵字, class_name 為類別的識別名稱,大括弧內部定義類別未來將支援的功能程式碼,由成員所組成,包含欄位、屬性與函式,接下來我們擴充上述的 ActiveMsg 類別,說明一個典型的類別。
class ActiveMsg1
{
private string helloMessage; //欄位
public void PrintMessage() //方法
{
string msg = HelloMessage;
Console.WriteLine(msg);
}
public string HelloMessage //屬性
{
get { return helloMessage; }
set { helloMessage = value; }
}
}
{
private string helloMessage; //欄位
public void PrintMessage() //方法
{
string msg = HelloMessage;
Console.WriteLine(msg);
}
public string HelloMessage //屬性
{
get { return helloMessage; }
set { helloMessage = value; }
}
}
這個類別包含了三種主要類別成員,詳述如下:
欄位
欄位是類別中定義的各種資料變數,大括內的字串變數 helloMessage 即為類別欄位,用來儲存類別內部的資料,通常會宣告為 private ,避免外部的程式碼對其進行存取。
屬性
屬性提供外部程式碼存取類別欄位所需的功能,例如其中的 HelloMessage 。
屬性以 get 存取子支援外部的存取,當外部的程式碼引用 HelloMessage 時,存取子中的程式碼 以以 return 回傳 helloMessage 欄位值。另外透過 set 支援屬性的重設,其中透過設值,將 value 表示的值設定給屬性 helloMessage,這會覆蓋掉屬性原來的值。
你可以在屬性內容定義欄位值的存取邏輯程式碼,在 get 與 set 存取子的大括弧內部進一步撰寫存取屬性所需的邏輯程式碼,這裏為了簡化說明僅作單存的存取。
方法
類別的功能由函式定義,這些函式形成了類別的方法,ShowMessage() 函式定義輸出訊息的功能,在執行過程中轉換成物件的方法,其中引用屬性 HelloMessage 取得欄位資料,將其內容字串輸出。
現在我們有一個比較完整的類別結構,嘗試運用這個類別輸出指定的訊息文字。
class Program
{
static void Main(string[] args)
{
ActiveMsg1 am = new ActiveMsg1();
am.HelloMessage = "Hello Att !";
am.PrintMessage();
Console.ReadKey();
}
}
{
static void Main(string[] args)
{
ActiveMsg1 am = new ActiveMsg1();
am.HelloMessage = "Hello Att !";
am.PrintMessage();
Console.ReadKey();
}
}
透過 new 關鍵字建立物件,完成之後,接下來便可以直接引用類別所定義的屬性或方法等成員,這個過程必須透過點 . 運算子來執行,如其中引用 HelloMessage 屬性,將指定的訊息字串設定為欄位值,接下來直接引用 PrintMessage() 將 helloMessage 欄位輸出。
Hello Att !
輸出值為一開始重設的屬性值「Hello Att !」。
類別與物件
當類別完成定義,此類別即成為一個新的型別,在程式中必須建立其實體物件,以期透過物件引用其中定義的各種成員,執行相關功能。建立實體物件必須使用 new 關鍵字,過程將會產生一個指向類別實體物件所在位置的參考,假設有一個類別 EFbook ,考慮以下的程式碼:
EFbook mybook = new EFbook() ;
mybook為任意指定的變數名稱, new 關鍵字建立 EFbook 類別的實體物件,並回傳這個物件的參考,透過 = 運算子則將此物件參考儲存至 mybook 變數。
類別物件的宣告與建立必須引用 new 關鍵字完成物件的建立,而物件變數 – 如上述的 mybook ,其中儲存的只是物件本身在記憶體位置的參考值。
沒有留言:
張貼留言