面向對象的程序設計(Object-OrIEnted Programming,簡記為OOP)是一種功能非常強大的編程方法, 立意於創建軟件重用代碼,以類為基礎去思考編程問題。類是OOP中的核心組成元素,通常都是使用類來 “封裝”對象(屬性、行為)。在經典圖書《代碼大全》裡定義:“創建高質量的類,第一步,可能也是 最重要的一步,就是創建一個好的接口。這也包括了創建一個可以通過接口來展現的合理的抽象,並確保 細節仍被隱藏在抽象背後。”,其實接口也是一個類,一個更為抽象的類.
在我以前的一篇文章裡曾經提到:“面向對象編程,並不是類越多越好,類的劃分是為了封裝,但分類 的基礎是抽象,具有相同屬性和功能的對象的抽象集合才是類。----選自《大話設計模式》” 。
可見,在OOP中,類是何等的重要,本文將以類作為談論點,全方面的分析和介紹類的各種相關知識點 。
一. 日常生活中的對象
在大多數人眼裡,對象是一個抽象的名詞,而類呢則更為抽象。日常生活中,可以把對象理解為可辯 識的一種實體。如汽車、輪船、飛機、電腦等。如果把對象和程序聯系起來,則可看作是在程序中表示的 一個實體。
一切從現實出發,才能使編寫出的代碼更能反映出真實的生活。如電腦這個對象,則包括有主板,硬 盤,顯卡,內存等組成元素。然而實際的編程中並不是這麼的簡單,但是我們還是得從現實中去分析。以 這種方式去考慮程序的設計,就會得到很多的好處:程序更容易設計,程序的體系結構更直觀,更容易理 解,更清晰的反映了程序從真實生活中抽象出來的含義,更便於多個開發人員一起工作,因為他們可以在 代碼中處理不同的對象,只需要知道其他人的對象做什麼工作,無需擔心其他人的代碼的工作細節。
二. 編程中的對象
我們平時在編程中用到過些什麼對象呢?我想無外乎是兩大類:系統對象和用戶自定義對象。OK, 為 了更清楚的說明這點,我們從“Hello World”開始吧。看看如下代碼定義:
Console.WriteLine("Hello Wrold");
上面這句代碼對於正在看本文的你來說,我想應該是在熟悉不過了.他的功能就是將“Hello World”這 個字符串在控制台輸出.然而,出此之外,這句代碼還隱含著其他的相關知識.那麼具體是什麼呢?其實我們 在編寫這句代碼的時候已經使用對象了.Console就是一個對象,.Net Framework提供的一個系統對象,我們 之所以能夠通過WriteLine方法實現輸出,是因為我們調用了這個系統對象的方法. 這裡Console就是一個 典型的系統對象.
下面我們來看看什麼的自定義對象,首先我們來分析一下現實生活中的對象.以電腦來說,一台電腦大概 由主板,硬盤,顯卡,內存等眾多元素組成.通過抽象,我們就可以認為電腦就是一個對象,主板,顯卡這些組 成元素則是電腦這個對象的屬性.下面是電腦類的定義:
1/**//// <summary>
2/// 電腦類
3/// </summary>
4public class Computer
5{
6 private string name;
7 public string Name
8 {
9 get { return name; }
10 set { name = value; }
11 }
12
13 public string 主板 = "精英主板";
14 public string 硬盤 = "希捷硬盤";
15 public string 內存 = "金士頓";
16 public string 顯卡 = "七彩紅";
17 //其他組成元素
18
19 public Computer()
20 { }
21
22 public Computer(string name)
23 {
24 this.Name = name;
25 }
26}